mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
完善部分站点消息获取
This commit is contained in:
@@ -21,6 +21,7 @@ import toml
|
||||
import transmission_rpc
|
||||
import urllib3.util.ssl_
|
||||
import yaml
|
||||
import numpy as np
|
||||
from django.db.models import QuerySet
|
||||
from lxml import etree
|
||||
from pypushdeer import PushDeer
|
||||
@@ -2171,7 +2172,7 @@ class PtSpider:
|
||||
# 检查邮件
|
||||
mail_check = len(details_html.xpath(site.mailbox_rule))
|
||||
notice_check = len(details_html.xpath(site.notice_rule))
|
||||
if mail_check > 0 or notice_check > 0:
|
||||
if mail_check > 0 or notice_check == 0:
|
||||
if site.url in [
|
||||
'https://monikadesign.uk/',
|
||||
'https://pt.hdpost.top/',
|
||||
@@ -2188,18 +2189,33 @@ class PtSpider:
|
||||
mail_count = int(mail_count) if mail_count else 0
|
||||
notice_count = int(notice_count) if notice_count else 0
|
||||
my_site.mail = mail_count + notice_count
|
||||
notice_list = []
|
||||
mail_list = []
|
||||
message_list = ''
|
||||
if notice_count > 0:
|
||||
notice_res = self.send_request(my_site, url=site.url)
|
||||
logger.info(f'公告信息:{notice_res}')
|
||||
notice_list = self.parse(notice_res, site.notice_title)
|
||||
notice_list = ["".join(notice) for notice in
|
||||
np.array(notice_list).reshape(len(notice_list) // 2, 2)]
|
||||
logger.info(f'公告信息列表:{notice_list}')
|
||||
notice = ' \n\n### '.join(notice_list[:notice_count])
|
||||
message_list += f'## 公告 \n### {notice}'
|
||||
time.sleep(1)
|
||||
if mail_count > 0:
|
||||
message_res = self.send_request(my_site, url=site.url + site.page_message)
|
||||
logger.info(message_res.text)
|
||||
logger.info(f'PM消息页面:{message_res}')
|
||||
mail_list = self.parse(message_res, site.message_title)
|
||||
mail_list = [mail.strip() for mail in mail_list]
|
||||
logger.info(mail_list)
|
||||
mail = " \n\n> ".join(mail_list)
|
||||
logger.info(mail)
|
||||
title = f'{site.name} 有{len(mail_list) + notice_count}条新短消息,请注意及时查收!'
|
||||
logger.info(f'PM信息列表:{mail}')
|
||||
# 测试发送网站消息原内容
|
||||
message = f'{notice_str} \n> {mail}'
|
||||
self.send_text(title=title, message=message)
|
||||
message = f'## 短消息 \n > {mail}'
|
||||
message_list += message
|
||||
title = f'{site.name} 有{len(mail_list) + len(notice_list)}条新短消息,请注意及时查收!'
|
||||
self.send_text(title=title, message=message_list)
|
||||
else:
|
||||
my_site.mail = 0
|
||||
if site.url in [
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 4.1.2 on 2023-01-05 11:28
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('pt_site', '0026_alter_userlevelrule_options_alter_userlevelrule_days_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='site',
|
||||
name='notice_title',
|
||||
field=models.CharField(default='//td[@class="text"]/div/a//text()', help_text='获取公告标题', max_length=128, verbose_name='公告标题'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='site',
|
||||
name='message_title',
|
||||
field=models.CharField(default='//img[@alt="Unread"]/parent::td/following-sibling::td/a[1]//text()', help_text='获取邮件标题', max_length=128, verbose_name='邮件标题'),
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='UserLevelRule',
|
||||
),
|
||||
]
|
||||
38
pt_site/migrations/0028_userlevelrule.py
Normal file
38
pt_site/migrations/0028_userlevelrule.py
Normal file
@@ -0,0 +1,38 @@
|
||||
# Generated by Django 4.1.2 on 2023-01-05 11:29
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('pt_site', '0027_site_notice_title_alter_site_message_title_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='UserLevelRule',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('level_id', models.IntegerField(default=1, verbose_name='等级id')),
|
||||
('level', models.CharField(default='User', max_length=24, verbose_name='等 级')),
|
||||
('days', models.IntegerField(default=0, help_text='单位:天', verbose_name='时 间')),
|
||||
('uploaded', models.IntegerField(default=0, help_text='单位:GB', verbose_name='上 传')),
|
||||
('downloaded', models.IntegerField(default=0, help_text='单位:GB', verbose_name='下 载')),
|
||||
('bonus', models.IntegerField(default=0, verbose_name='魔 力')),
|
||||
('score', models.IntegerField(default=0, verbose_name='积 分')),
|
||||
('ratio', models.FloatField(default=0, verbose_name='分享率')),
|
||||
('torrents', models.IntegerField(default=0, verbose_name='发 种')),
|
||||
('rights', models.CharField(help_text='当前等级所享有的权利与义务', max_length=128, verbose_name='权 利')),
|
||||
('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_site.site', verbose_name='站 点')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '升级进度',
|
||||
'verbose_name_plural': '升级进度',
|
||||
'unique_together': {('site', 'level_id', 'level')},
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -232,14 +232,18 @@ class Site(BaseEntity):
|
||||
default='//a[@href="messages.php"]/font[contains(text(),"条")]/text()[1]',
|
||||
help_text='获取新邮件',
|
||||
max_length=128)
|
||||
message_title = models.CharField(verbose_name='邮件信息',
|
||||
default='//img[@alt="Unread"]/parent::div/following-sibling::a[1]/div/text()',
|
||||
message_title = models.CharField(verbose_name='邮件标题',
|
||||
default='//img[@alt="Unread"]/parent::td/following-sibling::td/a[1]//text()',
|
||||
help_text='获取邮件标题',
|
||||
max_length=128)
|
||||
notice_rule = models.CharField(verbose_name='公告规则',
|
||||
default='//a[@href="index.php"]/font[contains(text(),"条")]/text()[1]',
|
||||
help_text='获取新公告',
|
||||
max_length=128)
|
||||
notice_title = models.CharField(verbose_name='公告标题',
|
||||
default='//td[@class="text"]/div/a//text()',
|
||||
help_text='获取公告标题',
|
||||
max_length=128)
|
||||
full_site_free = models.CharField(verbose_name='站免规则',
|
||||
default='//td/b/a/font[contains(text(),"全站") and contains(text(),"Free")]/text()',
|
||||
help_text='获取新公告',
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user