完善部分站点消息获取

This commit is contained in:
ngfchl
2023-01-05 11:31:41 +08:00
parent fc45201998
commit 4e91a6edf4
6 changed files with 625 additions and 363 deletions

267
pt.json

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -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',
),
]

View 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')},
},
),
]

View File

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