mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
支持朱雀
This commit is contained in:
83
pt.json
83
pt.json
@@ -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,
|
||||
|
||||
@@ -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:
|
||||
# 打印异常详细信息
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user