1. 修正上传量下载量为Int型,方便计算

This commit is contained in:
ngfchl
2022-09-07 00:42:06 +08:00
parent 8fd8401300
commit 13211a479f
5 changed files with 87 additions and 16 deletions

View File

@@ -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)

View File

@@ -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,
# 做种体积

View File

@@ -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)

View File

@@ -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='上传量'),
),
]

View File

@@ -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)