diff --git a/auto_pt/views.py b/auto_pt/views.py index 0487cc8..d577d70 100644 --- a/auto_pt/views.py +++ b/auto_pt/views.py @@ -1,15 +1,12 @@ import json import logging import os -import socket import subprocess import time -from datetime import datetime, timedelta, date -from uuid import UUID +from datetime import datetime, timedelta import docker import git -import numpy as np import qbittorrentapi from django.http import JsonResponse from django.shortcuts import render @@ -371,6 +368,9 @@ def exec_command(commands): def do_update(request): try: logger.info('开始更新') + bt_school = Site.objects.filter(url=' http://47.242.110.63/').first() + bt_school.url = 'https://pt.btschool.club/' + bt_school.save() pt_site_site_mtime = os.stat('pt_site_site.json').st_mtime requirements_mtime = os.stat('requirements.txt').st_mtime update_commands = { diff --git a/pt.json b/pt.json index 38403bc..3ad5fb7 100644 --- a/pt.json +++ b/pt.json @@ -2611,14 +2611,14 @@ "pk": 40, "fields": { "created_at": "2022-08-14T09:14:51.194", - "updated_at": "2022-10-31T23:21:46.890", + "updated_at": "2022-11-02T13:01:16.325", "url": "https://iptorrents.com/", "name": "ipt", "logo": "https://iptorrents.com/favicon.ico", "tracker": "iptorrents.com", "sign_in_support": false, "get_torrent_support": false, - "get_userinfo_support": false, + "get_userinfo_support": true, "search_support": false, "page_default": "t", "page_sign_in": "attendance.php", @@ -4823,8 +4823,8 @@ "pk": 70, "fields": { "created_at": "2022-07-17T10:24:59.754", - "updated_at": "2022-10-31T23:21:36.954", - "url": "http://47.242.110.63/", + "updated_at": "2022-11-02T14:57:10.490", + "url": "https://pt.btschool.club/", "name": "BT学校", "logo": "https://pt.btschool.club/favicon.ico", "tracker": "btschool.club", @@ -4833,7 +4833,7 @@ "get_userinfo_support": true, "search_support": false, "page_default": "torrents.php", - "page_sign_in": "index.php?action=addbonus", + "page_sign_in": "attendance.php", "page_control_panel": "usercp.php", "page_detail": "details.php?id={}", "page_download": "download.php?id={}", @@ -4891,7 +4891,7 @@ "leech_rule": "//img[@class=\"arrowdown\"][1]/following-sibling::text()[1]", "seed_rule": "//img[@class=\"arrowup\"][1]/following-sibling::text()[1]", "record_count_rule": "/html/body/b/text()", - "seed_vol_rule": "//tr/td[3]", + "seed_vol_rule": "//tr/td[4]", "mailbox_rule": "//a[@href=\"messages.php\"]/font[contains(text(),\"条\")]/text()[1]", "notice_rule": "//a[@href=\"index.php\"]/font[contains(text(),\"条\")]/text()[1]", "hash_rule": "//tr[13]/td[2]/table/tbody/tr/td[1]/text()" @@ -4923,16 +4923,16 @@ "page_seeding": "getusertorrentlistajax.php?userid={}&type=seeding", "page_completed": "getusertorrentlistajax.php?userid={}&type=completed", "page_mybonus": "mybonus.php", - "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": true, - "hr_rate": 1, - "hr_time": 24, - "sp_full": 100.0, + "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": true, + "hr_rate": 1, + "hr_time": 24, + "sp_full": 100.0, "limit_speed": 100, "torrents_rule": "//table[@class=\"torrents\"]/tr", "name_rule": ".//td[@class=\"embedded\"]/a/b/text()", @@ -5002,16 +5002,16 @@ "page_seeding": "Torrents/mySeed", "page_completed": "getusertorrentlistajax.php?userid={}&type=completed", "page_mybonus": "Points", - "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, + "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()", @@ -5081,16 +5081,16 @@ "page_seeding": "getusertorrentlistajax.php?userid={}&type=seeding", "page_completed": "getusertorrentlistajax.php?userid={}&type=completed", "page_mybonus": "mybonus.php", - "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": true, - "hr_rate": 1, - "hr_time": 24, - "sp_full": 100.0, + "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": true, + "hr_rate": 1, + "hr_time": 24, + "sp_full": 100.0, "limit_speed": 100, "torrents_rule": "//table[@class=\"torrents\"]/tr", "name_rule": ".//td[@class=\"embedded\"]/a/b/text()", @@ -5173,26 +5173,26 @@ "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": "//span/a[contains(@href,\"invite.php?id=\")]/following-sibling::text()[1]", - "time_join_rule": "//td[contains(text(),\"加入\")]/following-sibling::td/span/@title", + "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": "//span/a[contains(@href,\"invite.php?id=\")]/following-sibling::text()[1]", + "time_join_rule": "//td[contains(text(),\"加入\")]/following-sibling::td/span/@title", "latest_active_rule": "//td[contains(text(),\"最近动向\")]/following-sibling::td/span/@title", "uploaded_rule": "//font[@class=\"color_uploaded\"]/following-sibling::text()[1]", "downloaded_rule": "//font[@class=\"color_downloaded\"]/following-sibling::text()[1]", @@ -5239,16 +5239,16 @@ "page_seeding": "getusertorrentlistajax.php?userid={}&type=seeding", "page_completed": "getusertorrentlistajax.php?userid={}&type=completed", "page_mybonus": "mybonus.php", - "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, + "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()", @@ -5318,16 +5318,16 @@ "page_seeding": "getusertorrentlistajax.php?userid={}&type=seeding", "page_completed": "getusertorrentlistajax.php?userid={}&type=completed", "page_mybonus": "mybonus.php", - "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, + "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()", @@ -5397,16 +5397,16 @@ "page_seeding": "getusertorrentlistajax.php?userid={}&type=seeding", "page_completed": "getusertorrentlistajax.php?userid={}&type=completed", "page_mybonus": "mybonus.php", - "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": true, - "hr_rate": 1, - "hr_time": 24, - "sp_full": 100.0, + "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": true, + "hr_rate": 1, + "hr_time": 24, + "sp_full": 100.0, "limit_speed": 100, "torrents_rule": "//table[@class=\"torrents\"]/tr", "name_rule": ".//td[@class=\"embedded\"]/a/b/text()", @@ -5476,16 +5476,16 @@ "page_seeding": "getusertorrentlistajax.php?userid={}&type=seeding", "page_completed": "getusertorrentlistajax.php?userid={}&type=completed", "page_mybonus": "mybonus.php", - "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, + "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()", @@ -5500,16 +5500,16 @@ "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": "//span/a[contains(@href,\"invite.php?id=\")]/following-sibling::text()[1]", - "time_join_rule": "//td[contains(text(),\"加入\")]/following-sibling::td/span/@title", - "latest_active_rule": "//td[contains(text(),\"最近动向\")]/following-sibling::td/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": "//span/a[contains(@href,\"invite.php?id=\")]/following-sibling::text()[1]", + "time_join_rule": "//td[contains(text(),\"加入\")]/following-sibling::td/span/@title", + "latest_active_rule": "//td[contains(text(),\"最近动向\")]/following-sibling::td/span/@title", "uploaded_rule": "//font[@class=\"color_uploaded\"]/following-sibling::text()[1]", "downloaded_rule": "//font[@class=\"color_downloaded\"]/following-sibling::text()[1]", "ratio_rule": "//font[@class=\"color_ratio\"][1]/following-sibling::text()[1]", @@ -5629,16 +5629,16 @@ } }, { - "model": "auto_pt.task", - "pk": 3, - "fields": { - "created_at": "2022-08-05T23:52:19.671", - "updated_at": "2022-10-15T09:05:50.374", - "name": "auto_remove_expire_torrents", - "desc": "删除过期种子" - } -}, -{ + "model": "auto_pt.task", + "pk": 3, + "fields": { + "created_at": "2022-08-05T23:52:19.671", + "updated_at": "2022-10-15T09:05:50.374", + "name": "auto_remove_expire_torrents", + "desc": "删除过期种子" + } + }, + { "model": "auto_pt.task", "pk": 4, "fields": { diff --git a/pt_site/UtilityTool.py b/pt_site/UtilityTool.py index fc831dc..b9f8b02 100644 --- a/pt_site/UtilityTool.py +++ b/pt_site/UtilityTool.py @@ -85,7 +85,7 @@ class PtSpider: """爬虫""" def __init__(self, browser='chrome', platform='darwin', - user_agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.27', + user_agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.28', *args, **kwargs): self.browser = browser self.platform = platform @@ -1346,19 +1346,24 @@ class PtSpider: details_html = etree.HTML(converter.convert(user_detail_res.content)) if 'btschool' in site.url: text = details_html.xpath('//script/text()') + logger.info('学校:{}'.format(text)) if len(text) > 0: - location = self.parse_school_location(text) - logger.info('学校重定向链接:{}'.format(location)) - if '__SAKURA' in location: - res = self.send_request(my_site=my_site, url=site.url + location.lstrip('/'), delay=25) - details_html = etree.HTML(res.text) - # logger.info(res.content) + try: + location = self.parse_school_location(text) + logger.info('学校重定向链接:{}'.format(location)) + if '__SAKURA' in location: + res = self.send_request(my_site=my_site, url=site.url + location.lstrip('/'), delay=25) + details_html = etree.HTML(res.text) + # logger.info(res.content) + except Exception as e: + logger.info('BT学校获取做种信息有误!') + pass seeding_detail_res = self.send_request(my_site=my_site, url=seeding_detail_url, delay=25) # leeching_detail_res = self.send_request(my_site=my_site, url=leeching_detail_url, timeout=25) if seeding_detail_res.status_code != 200: return CommonResponse.error( status=StatusCodeEnum.WEB_CONNECT_ERR, - msg=site.name + '做种信息访问错误,错误码:' + str(seeding_detail_res.status_code) + msg='{} 做种信息访问错误,错误码:{}'.format(site.name, str(seeding_detail_res.status_code)) ) seeding_html = etree.HTML(converter.convert(seeding_detail_res.text)) # leeching_html = etree.HTML(leeching_detail_res.text) @@ -1619,7 +1624,7 @@ class PtSpider: my_site=my_site, url=site.url + site.page_mybonus, ) - """ + print(response.content.decode('utf8')) if 'btschool' in site.url: # logger.info(response.content.decode('utf8')) url = self.parse(response, '//form[@id="challenge-form"]/@action[1]') @@ -1637,7 +1642,6 @@ class PtSpider: data=data, delay=60 ) - """ res = converter.convert(response.content) # logger.info('时魔响应:{}'.format(response.content)) # logger.info('转为简体的时魔页面:', str(res)) diff --git a/pt_site_site.json b/pt_site_site.json index 14b8d27..1394aa6 100644 --- a/pt_site_site.json +++ b/pt_site_site.json @@ -2510,13 +2510,13 @@ { "id": 40, "created_at": "2022-08-14 09:14:51.194000", - "updated_at": "2022-10-31 23:21:46.890401", + "updated_at": "2022-11-02 13:01:16.325710", "name": "ipt", "url": "https://iptorrents.com/", "logo": "https://iptorrents.com/favicon.ico", "sign_in_support": 0, "get_torrent_support": 0, - "get_userinfo_support": 0, + "get_userinfo_support": 1, "search_support": 0, "page_default": "t", "page_sign_in": "attendance.php", @@ -4638,16 +4638,16 @@ { "id": 70, "created_at": "2022-07-17 10:24:59.754000", - "updated_at": "2022-10-31 23:21:36.954234", + "updated_at": "2022-11-02 14:57:10.490834", "name": "BT学校", - "url": "http://47.242.110.63/", + "url": "https://pt.btschool.club/", "logo": "https://pt.btschool.club/favicon.ico", "sign_in_support": 1, "get_torrent_support": 1, "get_userinfo_support": 1, "search_support": 0, "page_default": "torrents.php", - "page_sign_in": "index.php?action=addbonus", + "page_sign_in": "attendance.php", "page_detail": "details.php?id={}", "page_download": "download.php?id={}", "page_user": "userdetails.php?id={}", @@ -4702,7 +4702,7 @@ "leech_rule": "//img[@class=\"arrowdown\"][1]/following-sibling::text()[1]", "seed_rule": "//img[@class=\"arrowup\"][1]/following-sibling::text()[1]", "record_count_rule": "/html/body/b/text()", - "seed_vol_rule": "//tr/td[3]", + "seed_vol_rule": "//tr/td[4]", "mailbox_rule": "//a[@href=\"messages.php\"]/font[contains(text(),\"条\")]/text()[1]", "hash_rule": "//tr[13]/td[2]/table/tbody/tr/td[1]/text()", "notice_rule": "//a[@href=\"index.php\"]/font[contains(text(),\"条\")]/text()[1]",