支持朱雀

This commit is contained in:
ngfchl
2022-12-26 21:23:58 +08:00
parent 5827bc72a6
commit 3a6e7b9ac8
3 changed files with 235 additions and 10 deletions

83
pt.json
View File

@@ -4823,10 +4823,10 @@
"pk": 70,
"fields": {
"created_at": "2022-07-17T10:24:59.754",
"updated_at": "2022-12-25T21:43:37.324",
"updated_at": "2022-12-26T21:22:48.257",
"url": "https://pt.btschool.club/",
"name": "BT学校",
"logo": "https://pt.btschool.club/favicon.ico",
"logo": "https://gitee.com/ngfchl/ptools/raw/master/static/logo/btschool.ico",
"tracker": "btschool.club",
"sign_in_support": true,
"get_torrent_support": true,
@@ -6714,6 +6714,85 @@
"hash_rule": "//td/b[contains(text(),\"Hash\")]/following::text()[1]"
}
},
{
"model": "pt_site.site",
"pk": 99,
"fields": {
"created_at": "2022-12-26T19:45:08.010",
"updated_at": "2022-12-26T21:23:16.550",
"url": "https://zhuque.in/",
"name": "朱雀",
"logo": "https://gitee.com/ngfchl/ptools/raw/master/static/logo/zhuque.png",
"tracker": "tracker.zhuque.in",
"sign_in_support": false,
"get_torrent_support": true,
"get_userinfo_support": true,
"search_support": false,
"page_default": "torrents.php",
"page_sign_in": "attendance.php",
"page_control_panel": "user/setting",
"page_detail": "details.php?id={}",
"page_download": "download.php?id={}",
"page_user": "api/user/getInfo?id={}",
"page_search": "torrents.php?search={}",
"page_leeching": "getusertorrentlistajax.php?userid={}&type=leeching",
"page_uploaded": "getusertorrentlistajax.php?userid={}&type=uploaded",
"page_seeding": "getusertorrentlistajax.php?userid={}&type=seeding",
"page_completed": "getusertorrentlistajax.php?userid={}&type=completed",
"page_mybonus": "api/user/getBonusCalc",
"page_viewfilelist": "viewfilelist.php?id={}",
"page_viewpeerlist": "viewpeerlist.php?id={}",
"sign_in_method": "get",
"sign_in_captcha": false,
"sign_in_params": "{}",
"sign_in_headers": "{}",
"hr": false,
"hr_rate": 2,
"hr_time": 10,
"sp_full": 100.0,
"limit_speed": 100,
"torrents_rule": "//table[@class=\"torrents\"]/tr",
"name_rule": ".//td[@class=\"embedded\"]/a/b/text()",
"title_rule": ".//a[contains(@href,\"detail\")]/parent::td/text()[last()]",
"detail_url_rule": ".//td[@class=\"embedded\"]/a[contains(@href,\"detail\")]/@href",
"category_rule": ".//td[@class=\"rowfollow nowrap\"][1]/a[1]/img/@title",
"poster_rule": ".//table/tr/td[1]/img/@src",
"magnet_url_rule": ".//td/a[contains(@href,\"download.php?id=\")]/@href",
"download_url_rule": ".//a[contains(@href,\"download.php?id=\") and contains(@href,\"passkey\")]/@href",
"size_rule": ".//td[5]/text()",
"hr_rule": ".//table/tr/td/img[@class=\"hitandrun\"]/@title",
"sale_rule": ".//img[contains(@class,\"free\")]/@alt",
"sale_expire_rule": ".//img[contains(@class,\"free\")]/following-sibling::font/span/@title",
"release_rule": ".//td[4]/span/@title",
"seeders_rule": ".//a[contains(@href,\"#seeders\")]/text()",
"leechers_rule": ".//a[contains(@href,\"#leechers\")]/text()",
"completers_rule": ".//a[contains(@href,\"viewsnatches\")]//text()",
"viewfilelist_rule": ".//td/text()",
"viewpeerlist_rule": ".//tr/td[9]/nobr/text()",
"peer_speed_rule": ".//tr/td[7]/nobr/text()",
"remark": "",
"invitation_rule": "invite",
"time_join_rule": "regTime",
"latest_active_rule": "//td[contains(text(),\"最近动向\")]/following-sibling::td/span/@title",
"uploaded_rule": "upload",
"downloaded_rule": "download",
"ratio_rule": "ratio",
"my_sp_rule": "bonus",
"hour_sp_rule": "sp_hour",
"my_bonus_rule": "//font[@class=\"color_bonus\" and contains(text(),\"积分\")]/following-sibling::text()[1]",
"my_level_rule": "class/name",
"my_passkey_rule": "//td[contains(text(),\"密钥\")]/following-sibling::td[1]/text()",
"my_uid_rule": "id",
"my_hr_rule": "//a[@href=\"myhr.php\"]//text()",
"leech_rule": "leeching",
"seed_rule": "seeding",
"record_count_rule": ".//td[3]/text()",
"seed_vol_rule": "seedSize",
"mailbox_rule": "mail",
"notice_rule": "//a[@href=\"index.php\"]/font[contains(text(),\"条\")]/text()[1]",
"hash_rule": "//td/b[contains(text(),\"Hash\")]/following::text()[1]"
}
},
{
"model": "auto_pt.task",
"pk": 1,

View File

@@ -1463,9 +1463,7 @@ class PtSpider:
# completed_detail_url = site.url + site.page_completed.lstrip('/').format(my_site.user_id)
# leeching_detail_url = site.url + site.page_leeching.lstrip('/').format(my_site.user_id)
try:
if site.url in [
'https://filelist.io/'
]:
if site.url in ['https://filelist.io/']:
session = requests.Session()
headers = {
'user-agent': my_site.user_agent
@@ -1505,6 +1503,38 @@ class PtSpider:
headers={
'user-agent': my_site.user_agent
})
elif 'zhuque.in' in site.url:
csrf_res = self.send_request(my_site=my_site, url=site.url)
# '<meta name="x-csrf-token" content="4db531b6687b6e7f216b491c06937113">'
x_csrf_token = self.parse(csrf_res, '//meta[@name="x-csrf-token"]/@content')
logger.info(f'csrf token: {x_csrf_token}')
header = {
'x-csrf-token': ''.join(x_csrf_token),
'accept': 'application/json',
}
user_detail_res = self.send_request(my_site=my_site, url=user_detail_url, header=header)
logger.info(f'详情页:{user_detail_res.text}')
seeding_res = self.send_request(my_site=my_site, url=site.url + site.page_mybonus, header=header)
logger.info(f'做种信息: {seeding_res.text}')
mail_res = self.send_request(my_site=my_site, url=site.url + 'api/user/getMainInfo', header=header)
logger.info(f'新消息: {mail_res.text}')
user_info = user_detail_res.json().get('data')
sp_hour = seeding_res.json().get('data').get('H')
mail_data = mail_res.json().get('data')
mail = mail_data.get('unreadAdmin') + mail_data.get('unreadInbox') + mail_data.get('unreadSystem')
user_info.update({
'sp_hour': sp_hour,
'mail': mail
})
logger.info(f'详情页:{user_info}')
# logger.info(f'魔力页面:{seeding_res.json()}')
# details_html = user_detail_res.json()
# seeding_html = seeding_res.json()
return CommonResponse.success(data={
'details_html': user_info,
'seeding_html': '',
# 'leeching_html': leeching_html
})
else:
user_detail_res = self.send_request(my_site=my_site, url=user_detail_url)
# if leeching_detail_res.status_code != 200:
@@ -1522,7 +1552,6 @@ class PtSpider:
logger.info(f'个人主页:{user_detail_res.content}')
# 解析HTML
# logger.info(user_detail_res.is_redirect)
if 'totheglory' in site.url:
# ttg的信息都是直接加载的不需要再访问其他网页直接解析就好
details_html = etree.HTML(user_detail_res.content)
@@ -1747,7 +1776,7 @@ class PtSpider:
'seed_vol': seeding_size,
})
if float(ratio) < 1:
self.send_request(f'{site.name} 分享率 {ratio} 过低,请注意')
self.send_text(f'{site.name} 分享率 {ratio} 过低,请注意')
return CommonResponse.success(data=res_gpw)
else:
return CommonResponse.error(data=result)
@@ -1760,6 +1789,46 @@ class PtSpider:
# self.send_text('# <font color="red">' + message + '</font> \n')
return CommonResponse.error(msg=message)
pass
elif 'zhuque.in' in site.url:
try:
downloaded = details_html.get(site.downloaded_rule)
uploaded = details_html.get(site.uploaded_rule)
seeding_size = details_html.get(site.seed_vol_rule)
my_sp = details_html.get(site.my_sp_rule)
ratio = uploaded / downloaded if downloaded > 0 else 'inf'
my_site.time_join = datetime.fromtimestamp(details_html.get(site.time_join_rule))
my_site.invitation = details_html.get(site.invitation_rule)
my_site.my_level = details_html.get('class').get('name')
my_site.seed = details_html.get(site.seed_rule)
my_site.leech = details_html.get(site.leech_rule)
my_site.mail = details_html.get(site.mailbox_rule)
my_site.sp_hour = details_html.get(site.hour_sp_rule)
my_site.save()
res_gpw = SiteStatus.objects.update_or_create(
site=my_site,
created_at__date__gte=datetime.today(),
defaults={
'ratio': ratio,
'downloaded': downloaded,
'uploaded': uploaded,
'my_sp': my_sp,
'my_bonus': 0,
# 做种体积
'seed_vol': seeding_size,
})
if my_site.mail > 0:
self.send_text(f'{site.name}{my_site.mail}条新消息,请注意查收!')
if float(ratio) < 1:
self.send_text(f'{site.name} 分享率 {ratio} 过低,请注意')
return CommonResponse.success(data=res_gpw)
except Exception as e:
# 打印异常详细信息
message = '{} 解析个人主页信息:失败!原因:{}'.format(site.name, e)
logger.error(message)
logger.error(traceback.format_exc(limit=3))
# raise
# self.send_text('# <font color="red">' + message + '</font> \n')
return CommonResponse.error(msg=message)
else:
# 获取指定元素
# title = details_html.xpath('//title/text()')
@@ -2135,10 +2204,11 @@ class PtSpider:
res_list = ''.join(res_list).split('')
res_list.reverse()
logger.info('时魔字符串:{}'.format(res_list))
hour_sp = get_decimals(res_list[0].replace(',', ''))
if len(res_list) <= 0:
CommonResponse.error(msg='时魔获取失败!')
return CommonResponse.success(
data=get_decimals(res_list[0].replace(',', ''))
data=hour_sp
)
except Exception as e:
# 打印异常详细信息

View File

@@ -4638,10 +4638,10 @@
{
"id": 70,
"created_at": "2022-07-17 10:24:59.754000",
"updated_at": "2022-12-25 21:43:37.324057",
"updated_at": "2022-12-26 21:22:48.257769",
"name": "BT学校",
"url": "https://pt.btschool.club/",
"logo": "https://pt.btschool.club/favicon.ico",
"logo": "https://gitee.com/ngfchl/ptools/raw/master/static/logo/btschool.ico",
"sign_in_support": 1,
"get_torrent_support": 1,
"get_userinfo_support": 1,
@@ -6458,5 +6458,81 @@
"my_uid_rule": "//div[@class=\"header gradient blue\"]//h2/text()[1]",
"page_control_panel": "usercp.php",
"tracker": "pt.post.top"
},
{
"id": 99,
"created_at": "2022-12-26 19:45:08.010450",
"updated_at": "2022-12-26 21:23:16.550892",
"name": "朱雀",
"url": "https://zhuque.in/",
"logo": "https://gitee.com/ngfchl/ptools/raw/master/static/logo/zhuque.png",
"sign_in_support": 0,
"get_torrent_support": 1,
"get_userinfo_support": 1,
"search_support": 0,
"page_default": "torrents.php",
"page_sign_in": "attendance.php",
"page_detail": "details.php?id={}",
"page_download": "download.php?id={}",
"page_user": "api/user/getInfo?id={}",
"page_search": "torrents.php?search={}",
"page_leeching": "getusertorrentlistajax.php?userid={}&type=leeching",
"page_uploaded": "getusertorrentlistajax.php?userid={}&type=uploaded",
"page_seeding": "getusertorrentlistajax.php?userid={}&type=seeding",
"page_completed": "getusertorrentlistajax.php?userid={}&type=completed",
"page_mybonus": "api/user/getBonusCalc",
"page_viewfilelist": "viewfilelist.php?id={}",
"page_viewpeerlist": "viewpeerlist.php?id={}",
"sign_in_method": "get",
"sign_in_captcha": 0,
"sign_in_params": "{}",
"sign_in_headers": "{}",
"hr": 0,
"hr_rate": 2,
"hr_time": 10,
"sp_full": 100,
"limit_speed": 100,
"torrents_rule": "//table[@class=\"torrents\"]/tr",
"name_rule": ".//td[@class=\"embedded\"]/a/b/text()",
"title_rule": ".//a[contains(@href,\"detail\")]/parent::td/text()[last()]",
"detail_url_rule": ".//td[@class=\"embedded\"]/a[contains(@href,\"detail\")]/@href",
"category_rule": ".//td[@class=\"rowfollow nowrap\"][1]/a[1]/img/@title",
"poster_rule": ".//table/tr/td[1]/img/@src",
"magnet_url_rule": ".//td/a[contains(@href,\"download.php?id=\")]/@href",
"download_url_rule": ".//a[contains(@href,\"download.php?id=\") and contains(@href,\"passkey\")]/@href",
"size_rule": ".//td[5]/text()",
"hr_rule": ".//table/tr/td/img[@class=\"hitandrun\"]/@title",
"sale_rule": ".//img[contains(@class,\"free\")]/@alt",
"sale_expire_rule": ".//img[contains(@class,\"free\")]/following-sibling::font/span/@title",
"release_rule": ".//td[4]/span/@title",
"seeders_rule": ".//a[contains(@href,\"#seeders\")]/text()",
"leechers_rule": ".//a[contains(@href,\"#leechers\")]/text()",
"completers_rule": ".//a[contains(@href,\"viewsnatches\")]//text()",
"viewfilelist_rule": ".//td/text()",
"viewpeerlist_rule": ".//tr/td[9]/nobr/text()",
"peer_speed_rule": ".//tr/td[7]/nobr/text()",
"remark": "",
"invitation_rule": "invite",
"time_join_rule": "regTime",
"latest_active_rule": "//td[contains(text(),\"最近动向\")]/following-sibling::td/span/@title",
"uploaded_rule": "upload",
"downloaded_rule": "download",
"ratio_rule": "ratio",
"my_sp_rule": "bonus",
"hour_sp_rule": "sp_hour",
"my_bonus_rule": "//font[@class=\"color_bonus\" and contains(text(),\"积分\")]/following-sibling::text()[1]",
"my_level_rule": "class/name",
"my_hr_rule": "//a[@href=\"myhr.php\"]//text()",
"leech_rule": "leeching",
"seed_rule": "seeding",
"record_count_rule": ".//td[3]/text()",
"seed_vol_rule": "seedSize",
"mailbox_rule": "mail",
"hash_rule": "//td/b[contains(text(),\"Hash\")]/following::text()[1]",
"notice_rule": "//a[@href=\"index.php\"]/font[contains(text(),\"条\")]/text()[1]",
"my_passkey_rule": "//td[contains(text(),\"密钥\")]/following-sibling::td[1]/text()",
"my_uid_rule": "id",
"page_control_panel": "user/setting",
"tracker": "tracker.zhuque.in"
}
]