mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
卡片实现签到
This commit is contained in:
176
auto_pt/views.py
176
auto_pt/views.py
@@ -563,8 +563,88 @@ def download_tasks():
|
||||
|
||||
|
||||
def site_status_api(request):
|
||||
ids = request.GET.get('ids')
|
||||
try:
|
||||
userdata = get_status()
|
||||
if ids is None:
|
||||
my_site_list = MySite.objects.all()
|
||||
else:
|
||||
my_site_list = MySite.objects.filter(pk__in=ids).all()
|
||||
uploaded = 0
|
||||
downloaded = 0
|
||||
seeding = 0
|
||||
seeding_size = 0
|
||||
status_list = []
|
||||
now = datetime.now()
|
||||
for my_site in my_site_list:
|
||||
site_info_list = my_site.sitestatus_set.order_by('-pk').all()
|
||||
logger.info(f'{my_site.site.name}: {len(site_info_list)}')
|
||||
if len(site_info_list) <= 0:
|
||||
logger.info(f'{my_site.site.name}: 获取站点信息列表错误!')
|
||||
continue
|
||||
site_info = site_info_list.first()
|
||||
downloaded += site_info.downloaded
|
||||
uploaded += site_info.uploaded
|
||||
seeding += my_site.seed
|
||||
seeding_size += site_info.seed_vol
|
||||
weeks = (now - my_site.time_join).days // 7
|
||||
days = (now - my_site.time_join).days % 7
|
||||
sign_in_support = my_site.site.sign_in_support and my_site.sign_in
|
||||
if sign_in_support:
|
||||
sign_in_list = my_site.signin_set.filter(created_at__date=now.date())
|
||||
sign_in_state = sign_in_list.first().sign_in_today if len(sign_in_list) > 0 else False
|
||||
else:
|
||||
sign_in_state = False
|
||||
site_info = {
|
||||
'id': my_site.id,
|
||||
'name': my_site.site.name,
|
||||
'icon': my_site.site.logo,
|
||||
'url': my_site.site.url,
|
||||
'class': my_site.my_level,
|
||||
'sign_in_support': sign_in_support,
|
||||
'sign_in_state': sign_in_state,
|
||||
'invite': my_site.invitation,
|
||||
'sp_hour': my_site.sp_hour,
|
||||
'sp_hour_full': '{:.2%}'.format(
|
||||
float(my_site.sp_hour) / my_site.site.sp_full) if my_site.site.sp_full != 0 else '0%',
|
||||
'seeding': my_site.seed,
|
||||
'leeching': my_site.leech,
|
||||
'weeks': f'{weeks}周 {days}天',
|
||||
'time_join': my_site.time_join,
|
||||
'hr': my_site.my_hr,
|
||||
'mail': my_site.mail,
|
||||
'sp': site_info.my_sp,
|
||||
'bonus': site_info.my_bonus,
|
||||
# 'uploaded': FileSizeConvert.parse_2_file_size(site_info.uploaded),
|
||||
# 'downloaded': FileSizeConvert.parse_2_file_size(site_info.downloaded),
|
||||
# 'seeding_size': FileSizeConvert.parse_2_file_size(site_info.seed_vol),
|
||||
'uploaded': site_info.uploaded,
|
||||
'downloaded': site_info.downloaded,
|
||||
'seeding_size': site_info.seed_vol,
|
||||
'last_active': datetime.strftime(site_info.updated_at, '%Y年%m月%d日%H:%M:%S'),
|
||||
}
|
||||
status_list.append(site_info)
|
||||
# 按上传量排序
|
||||
# status_list.sort(key=lambda x: x['mail'], reverse=False)
|
||||
status_list.sort(key=lambda x: (x['mail'], x['uploaded']), reverse=True)
|
||||
# sorted(status_list, key=lambda x: x['uploaded'])
|
||||
# 随机乱序
|
||||
# random.shuffle(status_list)
|
||||
total_data = {
|
||||
# 'uploaded': FileSizeConvert.parse_2_file_size(uploaded),
|
||||
# 'downloaded': FileSizeConvert.parse_2_file_size(downloaded),
|
||||
# 'seeding_size': FileSizeConvert.parse_2_file_size(seeding_size),
|
||||
'uploaded': uploaded,
|
||||
'downloaded': downloaded,
|
||||
'seeding_size': seeding_size,
|
||||
'seeding': seeding,
|
||||
'ratio': round(uploaded / downloaded, 3),
|
||||
'now': datetime.now().date()
|
||||
}
|
||||
# return render(request, 'auto_pt/status.html')
|
||||
userdata = {
|
||||
'total_data': total_data,
|
||||
'status_list': status_list
|
||||
}
|
||||
return JsonResponse(data=CommonResponse.success(
|
||||
data=userdata
|
||||
).to_dict(), safe=False)
|
||||
@@ -575,83 +655,6 @@ def site_status_api(request):
|
||||
return CommonResponse.error(msg=message)
|
||||
|
||||
|
||||
def get_status(ids: list = None):
|
||||
if ids is None:
|
||||
my_site_list = MySite.objects.all()
|
||||
else:
|
||||
my_site_list = MySite.objects.filter(pk__in=ids).all()
|
||||
uploaded = 0
|
||||
downloaded = 0
|
||||
seeding = 0
|
||||
seeding_size = 0
|
||||
status_list = []
|
||||
now = datetime.now()
|
||||
for my_site in my_site_list:
|
||||
site_info_list = my_site.sitestatus_set.order_by('-pk').all()
|
||||
logger.info(f'{my_site.site.name}: {len(site_info_list)}')
|
||||
if len(site_info_list) <= 0:
|
||||
logger.info(f'{my_site.site.name}: 获取站点信息列表错误!')
|
||||
continue
|
||||
site_info = site_info_list.first()
|
||||
downloaded += site_info.downloaded
|
||||
uploaded += site_info.uploaded
|
||||
seeding += my_site.seed
|
||||
seeding_size += site_info.seed_vol
|
||||
weeks = (now - my_site.time_join).days // 7
|
||||
days = (now - my_site.time_join).days % 7
|
||||
# my_site.signin_set.filter(created_at__day=now.date()).first().sign_in_today
|
||||
site_info = {
|
||||
'id': my_site.id,
|
||||
'name': my_site.site.name,
|
||||
'icon': my_site.site.logo,
|
||||
'url': my_site.site.url,
|
||||
'class': my_site.my_level,
|
||||
# 'sign_in': my_site.signin_set.filter(created_at__day=now.date()),
|
||||
'invite': my_site.invitation,
|
||||
'sp_hour': my_site.sp_hour,
|
||||
'sp_hour_full': '{:.2%}'.format(
|
||||
float(my_site.sp_hour) / my_site.site.sp_full) if my_site.site.sp_full != 0 else '0%',
|
||||
'seeding': my_site.seed,
|
||||
'leeching': my_site.leech,
|
||||
'weeks': f'{weeks}周 {days}天',
|
||||
'time_join': my_site.time_join,
|
||||
'hr': my_site.my_hr,
|
||||
'mail': my_site.mail,
|
||||
'sp': site_info.my_sp,
|
||||
'bonus': site_info.my_bonus,
|
||||
# 'uploaded': FileSizeConvert.parse_2_file_size(site_info.uploaded),
|
||||
# 'downloaded': FileSizeConvert.parse_2_file_size(site_info.downloaded),
|
||||
# 'seeding_size': FileSizeConvert.parse_2_file_size(site_info.seed_vol),
|
||||
'uploaded': site_info.uploaded,
|
||||
'downloaded': site_info.downloaded,
|
||||
'seeding_size': site_info.seed_vol,
|
||||
'last_active': datetime.strftime(site_info.updated_at, '%Y年%m月%d日%H:%M:%S'),
|
||||
}
|
||||
status_list.append(site_info)
|
||||
# 按上传量排序
|
||||
# status_list.sort(key=lambda x: x['mail'], reverse=False)
|
||||
status_list.sort(key=lambda x: (x['mail'], x['uploaded']), reverse=True)
|
||||
# sorted(status_list, key=lambda x: x['uploaded'])
|
||||
# 随机乱序
|
||||
# random.shuffle(status_list)
|
||||
total_data = {
|
||||
# 'uploaded': FileSizeConvert.parse_2_file_size(uploaded),
|
||||
# 'downloaded': FileSizeConvert.parse_2_file_size(downloaded),
|
||||
# 'seeding_size': FileSizeConvert.parse_2_file_size(seeding_size),
|
||||
'uploaded': uploaded,
|
||||
'downloaded': downloaded,
|
||||
'seeding_size': seeding_size,
|
||||
'seeding': seeding,
|
||||
'ratio': round(uploaded / downloaded, 3),
|
||||
'now': datetime.now().date()
|
||||
}
|
||||
# return render(request, 'auto_pt/status.html')
|
||||
return {
|
||||
'total_data': total_data,
|
||||
'status_list': status_list
|
||||
}
|
||||
|
||||
|
||||
@login_required
|
||||
def site_status(request):
|
||||
return render(request, 'auto_pt/status.html')
|
||||
@@ -701,9 +704,20 @@ def site_data_api(request):
|
||||
|
||||
|
||||
def sign_in_api(request):
|
||||
return JsonResponse(data=CommonResponse.success(
|
||||
msg='ok'
|
||||
).to_dict(), safe=False)
|
||||
try:
|
||||
my_site = MySite.objects.filter(id=request.GET.get('id')).first()
|
||||
sign_state = pt_spider.sign_in(my_site)
|
||||
if sign_state.code == StatusCodeEnum.OK.code:
|
||||
return JsonResponse(data=CommonResponse.success(
|
||||
msg=sign_state.msg
|
||||
).to_dict(), safe=False)
|
||||
else:
|
||||
return sign_state
|
||||
except Exception as e:
|
||||
logger.error(f'签到失败:{e}')
|
||||
return JsonResponse(data=CommonResponse.error(
|
||||
msg=f'签到失败:{e}'
|
||||
).to_dict(), safe=False)
|
||||
|
||||
|
||||
def update_site_api(request):
|
||||
|
||||
@@ -109,13 +109,19 @@
|
||||
</div>
|
||||
<div class="text item" style="font-size: 13px;text-align: right;">
|
||||
<div>
|
||||
<el-button type="primary" size="mini" @click="signIn(site.id)">签到
|
||||
<el-button type="primary" size="mini" @click="signIn(site.id)"
|
||||
v-if="site.sign_in_support && !site.sign_in_state">
|
||||
签到
|
||||
</el-button>
|
||||
<el-button type="success" plain size="mini" v-if="site.sign_in_state">
|
||||
已签到
|
||||
</el-button>
|
||||
|
||||
<el-button type="info" size="mini" @click="updateSite(site.id)">更新
|
||||
</el-button>
|
||||
<el-button type="danger" size="mini" @click="editSite(site.id)">编辑
|
||||
</el-button>
|
||||
<el-button type="success" size="mini" @click="showHistoryList(site.id)">历史 c
|
||||
<el-button type="success" size="mini" @click="showHistoryList(site.id)">历史
|
||||
</el-button>
|
||||
</div>
|
||||
<hr>
|
||||
@@ -259,16 +265,16 @@
|
||||
{#this.chart = this.$refs.charts.chart#}
|
||||
this.getData()
|
||||
},
|
||||
watch: {
|
||||
obj: {
|
||||
option(newValue, oldValue) {
|
||||
// option发生变化时自动重新渲染
|
||||
this.chart.setOption(newValue)
|
||||
},
|
||||
// immediate: true,
|
||||
deep: true,
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
obj: {
|
||||
option(newValue, oldValue) {
|
||||
// option发生变化时自动重新渲染
|
||||
this.chart.setOption(newValue)
|
||||
},
|
||||
// immediate: true,
|
||||
deep: true,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
signIn(id) {
|
||||
axios.get(
|
||||
@@ -282,6 +288,7 @@
|
||||
type: 'success',
|
||||
message: res.data.msg
|
||||
});
|
||||
this.getData()
|
||||
} else {
|
||||
this.loading = false
|
||||
this.$message({
|
||||
@@ -360,16 +367,16 @@
|
||||
if ((typeof res.data) == "string") {
|
||||
data = JSON.parse(data)
|
||||
}
|
||||
{#console.log(typeof res.data.data)#}
|
||||
if (res.data.code === 0) {
|
||||
{#this.ptData = res.data.data#}
|
||||
{#this.ptData = res.data.data#}
|
||||
{#this.setPie()#}
|
||||
{#this.setCard()#}
|
||||
{#console.log(typeof res.data.data)#}
|
||||
if (res.data.code === 0) {
|
||||
{#this.ptData = res.data.data#}
|
||||
{#this.ptData = res.data.data#}
|
||||
{#this.setPie()#}
|
||||
{#this.setCard()#}
|
||||
|
||||
this.setLine(data.data)
|
||||
} else {
|
||||
this.loading = false
|
||||
this.setLine(data.data)
|
||||
} else {
|
||||
this.loading = false
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '获取数据列表失败!'
|
||||
|
||||
Reference in New Issue
Block a user