mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
1. 修正上传量下载量为Int型,方便计算
This commit is contained in:
@@ -9,6 +9,7 @@ from django.http import JsonResponse
|
||||
from django.shortcuts import render
|
||||
|
||||
from pt_site import views as tasks
|
||||
from pt_site.UtilityTool import FileSizeConvert
|
||||
from pt_site.models import SiteStatus, MySite, Site
|
||||
from pt_site.views import scheduler, pt_spider
|
||||
from ptools.base import CommonResponse
|
||||
@@ -192,6 +193,18 @@ def do_update(request):
|
||||
print(i.decode('utf8'))
|
||||
# 更新Xpath规则
|
||||
print('拉取更新完毕,开始更新Xpath规则')
|
||||
# 字符串型的数据量转化为int型
|
||||
status_list = SiteStatus.objects.all()
|
||||
for status in status_list:
|
||||
if not status.downloaded:
|
||||
status.downloaded = 0
|
||||
if not status.uploaded:
|
||||
status.uploaded = 0
|
||||
if type(status.downloaded) == str and 'B' in status.downloaded:
|
||||
status.downloaded = FileSizeConvert.parse_2_byte(status.downloaded)
|
||||
if type(status.uploaded) == str and 'B' in status.uploaded:
|
||||
status.uploaded = FileSizeConvert.parse_2_byte(status.uploaded)
|
||||
status.save()
|
||||
with open('./main_pt_site_site.json', 'r') as f:
|
||||
# print(f.readlines())
|
||||
data = json.load(f)
|
||||
@@ -218,6 +231,7 @@ def do_update(request):
|
||||
msg='更新成功,重启指令发送成功,容器重启中 ...' if flag else '更新成功,未映射docker路径请手动重启容器 ...'
|
||||
).to_dict(), safe=False)
|
||||
except Exception as e:
|
||||
raise
|
||||
return JsonResponse(data=CommonResponse.error(
|
||||
msg='更新失败!' + str(e)
|
||||
).to_dict(), safe=False)
|
||||
|
||||
@@ -891,10 +891,11 @@ class PtSpider:
|
||||
downloaded = ''.join(
|
||||
details_html.xpath(site.downloaded_rule)
|
||||
).replace(':', '').replace('\xa0\xa0', '').strip(' ')
|
||||
|
||||
downloaded = FileSizeConvert.parse_2_byte(downloaded)
|
||||
uploaded = ''.join(
|
||||
details_html.xpath(site.uploaded_rule)
|
||||
).replace(':', '').strip(' ')
|
||||
uploaded = FileSizeConvert.parse_2_byte(uploaded)
|
||||
|
||||
invitation = ''.join(
|
||||
details_html.xpath(site.invitation_rule)
|
||||
@@ -1011,8 +1012,8 @@ class PtSpider:
|
||||
result = SiteStatus.objects.update_or_create(site=my_site, updated_at__date__gte=datetime.today(),
|
||||
defaults={
|
||||
'ratio': float(ratio) if ratio else 0,
|
||||
'downloaded': downloaded,
|
||||
'uploaded': uploaded,
|
||||
'downloaded': int(downloaded),
|
||||
'uploaded': int(uploaded),
|
||||
'my_sp': float(my_sp),
|
||||
'my_bonus': float(my_bonus) if my_bonus != '' else 0,
|
||||
# 做种体积
|
||||
|
||||
@@ -154,6 +154,7 @@ class SiteAdmin(ImportExportModelAdmin): # instead of ModelAdmin
|
||||
'seed_vol_rule',
|
||||
'my_hr_rule',
|
||||
'mailbox_rule',
|
||||
'notice_rule',
|
||||
'time_join_rule',
|
||||
'latest_active_rule',
|
||||
),
|
||||
@@ -195,6 +196,7 @@ class StatusInlines(admin.TabularInline):
|
||||
'my_sp', 'my_bonus', 'seed_vol',
|
||||
'updated_at'
|
||||
]
|
||||
classes = ['collapse']
|
||||
readonly_fields = ['updated_at']
|
||||
ordering = ['-updated_at']
|
||||
# 自定义模板,删除外键显示
|
||||
@@ -213,6 +215,32 @@ class StatusInlines(admin.TabularInline):
|
||||
return False
|
||||
|
||||
|
||||
class SignInInlines(admin.StackedInline):
|
||||
model = SignIn
|
||||
fields = [
|
||||
'sign_in_today', 'sign_in_info',
|
||||
'updated_at'
|
||||
]
|
||||
classes = ['collapse']
|
||||
readonly_fields = ['updated_at']
|
||||
ordering = ['-updated_at']
|
||||
|
||||
# 自定义模板,删除外键显示
|
||||
# template = 'admin/pt_site/inline_status/tabular.html'
|
||||
|
||||
# 禁止添加按钮
|
||||
def has_add_permission(self, request, obj=None):
|
||||
return False
|
||||
|
||||
# 禁止删除按钮
|
||||
def has_delete_permission(self, request, obj=None):
|
||||
return False
|
||||
|
||||
# 禁止修改按钮
|
||||
def has_change_permission(self, request, obj=None):
|
||||
return False
|
||||
|
||||
|
||||
@admin.register(MySite)
|
||||
class MySiteAdmin(ImportExportModelAdmin): # instead of ModelAdmin
|
||||
formats = (base_formats.XLS, base_formats.CSV, base_formats.JSON)
|
||||
@@ -243,6 +271,7 @@ class MySiteAdmin(ImportExportModelAdmin): # instead of ModelAdmin
|
||||
# empty_value_display = '**'
|
||||
inlines = (
|
||||
StatusInlines,
|
||||
SignInInlines
|
||||
)
|
||||
|
||||
def edit(self, obj: MySite):
|
||||
@@ -458,29 +487,22 @@ class MySiteAdmin(ImportExportModelAdmin): # instead of ModelAdmin
|
||||
fieldsets = (
|
||||
['用户信息', {
|
||||
'fields': (
|
||||
('site',),
|
||||
('site', 'sign_in', 'hr', 'search'),
|
||||
('user_id', 'passkey',),
|
||||
'cookie',
|
||||
# 'time_join'
|
||||
),
|
||||
}],
|
||||
['用户设置', {
|
||||
'fields': (
|
||||
('sign_in', 'hr',),
|
||||
('search',),
|
||||
),
|
||||
}],
|
||||
)
|
||||
|
||||
|
||||
"""
|
||||
@admin.register(SiteStatus)
|
||||
class SiteStatusAdmin(ImportExportModelAdmin):
|
||||
formats = (base_formats.XLS, base_formats.CSV, base_formats.JSON)
|
||||
list_display = ['site',
|
||||
# 'sign_in', 'my_level', 'invitation', 'seed', 'leech',
|
||||
'uploaded', 'downloaded', 'ratio',
|
||||
'upload', 'download', 'ratio',
|
||||
'my_sp', 'my_bonus',
|
||||
# 'my_hr', 'time_join', 'latest_active',
|
||||
'seed_vol',
|
||||
'updated_at']
|
||||
list_filter = ['site', 'updated_at']
|
||||
|
||||
@@ -489,6 +511,16 @@ class SiteStatusAdmin(ImportExportModelAdmin):
|
||||
ordering = ['site__sort_id']
|
||||
autocomplete_fields = ('site',)
|
||||
|
||||
# 自定义更新时间,提醒今日是否更新
|
||||
def upload(self, obj: SiteStatus):
|
||||
return FileSizeConvert.parse_2_file_size(obj.uploaded)
|
||||
|
||||
def download(self, obj: SiteStatus):
|
||||
return FileSizeConvert.parse_2_file_size(obj.downloaded)
|
||||
|
||||
upload.short_description = '上传量'
|
||||
download.short_description = '下载量'
|
||||
|
||||
# 禁止添加按钮
|
||||
def has_add_permission(self, request):
|
||||
return False
|
||||
@@ -528,6 +560,7 @@ class SiteStatusAdmin(ImportExportModelAdmin):
|
||||
# # print(request.META)
|
||||
#
|
||||
# return super(SiteStatusAdmin, self).changelist_view(request, extra_context=extra_context)
|
||||
"""
|
||||
|
||||
|
||||
@admin.register(Downloader)
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 4.1 on 2022-09-06 16:36
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('pt_site', '0006_site_notice_rule_alter_site_mailbox_rule'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='sitestatus',
|
||||
name='downloaded',
|
||||
field=models.IntegerField(default=0, verbose_name='下载量'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='sitestatus',
|
||||
name='uploaded',
|
||||
field=models.IntegerField(default=0, verbose_name='上传量'),
|
||||
),
|
||||
]
|
||||
@@ -266,8 +266,8 @@ class SiteStatus(BaseEntity):
|
||||
# 获取日期,只保留当天最新数据
|
||||
site = models.ForeignKey(verbose_name='站点名称', to=MySite, on_delete=models.CASCADE)
|
||||
# 签到,有签到功能的访问签到页面,无签到的访问个人主页
|
||||
uploaded = models.CharField(verbose_name='上传量', default='0', max_length=16)
|
||||
downloaded = models.CharField(verbose_name='下载量', default='0', max_length=16)
|
||||
uploaded = models.IntegerField(verbose_name='上传量', default=0)
|
||||
downloaded = models.IntegerField(verbose_name='下载量', default=0)
|
||||
ratio = models.FloatField(verbose_name='分享率', default=0)
|
||||
my_sp = models.FloatField(verbose_name='魔力值', default=0)
|
||||
my_bonus = models.FloatField(verbose_name='做种积分', default=0)
|
||||
|
||||
Reference in New Issue
Block a user