From c219a848218a05a36309ee17ad17ebf93738edeb Mon Sep 17 00:00:00 2001 From: ngfchl Date: Sun, 25 Dec 2022 18:54:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=8E=AB=E5=A6=AE=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pt.json | 79 ++++++++++++++++++++++++++++++++++++++++++ pt_site/UtilityTool.py | 27 ++++++++++++--- pt_site_site.json | 76 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 177 insertions(+), 5 deletions(-) diff --git a/pt.json b/pt.json index b22a88f..5ee0593 100644 --- a/pt.json +++ b/pt.json @@ -6161,6 +6161,85 @@ "hash_rule": "//td/b[contains(text(),\"Hash\")]/following::text()[1]" } }, +{ + "model": "pt_site.site", + "pk": 92, + "fields": { + "created_at": "2022-12-25T17:54:44.854", + "updated_at": "2022-12-25T18:53:48.247", + "url": "https://monikadesign.uk/", + "name": "莫妮卡", + "logo": "https://monikadesign.uk/favicon.ico", + "tracker": "monikadesign.uk", + "sign_in_support": false, + "get_torrent_support": true, + "get_userinfo_support": true, + "search_support": false, + "page_default": "torrents?perPage=100&free[0]=100", + "page_sign_in": "attendance.php", + "page_control_panel": "usercp.php", + "page_detail": "details.php?id={}", + "page_download": "download.php?id={}", + "page_user": "users/{}", + "page_search": "torrents.php?search={}", + "page_leeching": "getusertorrentlistajax.php?userid={}&type=leeching", + "page_uploaded": "getusertorrentlistajax.php?userid={}&type=uploaded", + "page_seeding": "users/{}", + "page_completed": "getusertorrentlistajax.php?userid={}&type=completed", + "page_mybonus": "users/{}/bonus/earnings", + "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": "//td[contains(text(),\"邀请\") and not(contains(text(),\"可以\"))]/following-sibling::td/span/text()", + "time_join_rule": "//div[@class=\"header gradient blue\"]//h4[2]/text()", + "latest_active_rule": "//td[contains(text(),\" 上次登录时间\")]/following-sibling::td/text()", + "uploaded_rule": "//li[@title=\"上传\"]/text()", + "downloaded_rule": "//li[@title=\"下载\"]/text()", + "ratio_rule": "//li[@title=\"分享率\"]/a/text()", + "my_sp_rule": "//li[@title=\"我的魔力\"]/a/text()", + "hour_sp_rule": "//dt[contains(text(),\"每小时获得魔力数量\")]/following-sibling::dd[1]/text()[1]", + "my_bonus_rule": "//font[@class=\"color_bonus\" and contains(text(),\"积分\")]/following-sibling::text()[1]", + "my_level_rule": "//div[@class=\"header gradient blue\"]//h4[1]/span/text()", + "my_passkey_rule": "//span[@class=\"text-monospace\"]/text()", + "my_uid_rule": "//div[@class=\"header gradient blue\"]//h2/text()[1]", + "my_hr_rule": "//strong[contains(text(),\"有效\")]/text()", + "leech_rule": "//li[@title=\"下载中\"]/a/text()", + "seed_rule": "//li[@title=\"做种中\"]/a/text()", + "record_count_rule": ".//td[3]/text()", + "seed_vol_rule": "//td[contains(text(),\"做种体积\")]/following-sibling::td[1]//text()[1]", + "mailbox_rule": "//a[@href=\"messages.php\"]/font[contains(text(),\"条\")]/text()[1]", + "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, diff --git a/pt_site/UtilityTool.py b/pt_site/UtilityTool.py index 11cd3fe..ece69a1 100644 --- a/pt_site/UtilityTool.py +++ b/pt_site/UtilityTool.py @@ -1736,6 +1736,12 @@ class PtSpider: logger.info(f'白兔做种信息:{seed_vol_size}') seed_vol_all = FileSizeConvert.parse_2_byte(seed_vol_size) logger.info(f'白兔做种信息:{seed_vol_all}') + elif 'monikadesign.uk' in site.url: + logger.info(f'莫妮卡做种信息') + seed_vol_size = ''.join(seeding_html.xpath(site.seed_vol_rule)).replace('i', '') + logger.info(f'莫妮卡做种信息: {seed_vol_size}') + seed_vol_all = FileSizeConvert.parse_2_byte(seed_vol_size) + logger.info(f'莫妮卡做种信息: {seed_vol_all}') else: if len(seed_vol_list) > 0 and site.url not in [ 'https://nextpt.net/' @@ -1813,7 +1819,14 @@ class PtSpider: time_join = re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', ''.join( details_html.xpath(site.time_join_rule) ).strip()) - my_site.time_join = ''.join(time_join) + if 'monikadesign.uk' in site.url: + time_str = ''.join(details_html.xpath(site.time_join_rule)) + time_str = re.sub(u"[\u4e00-\u9fa5]", "", time_str).strip() + time_join = datetime.strptime(time_str, '%b %d %Y') + logger.info(f'注册时间:{time_join}') + my_site.time_join = time_join + else: + my_site.time_join = ''.join(time_join) # 去除字符串中的中文 my_level_1 = ''.join( details_html.xpath(site.my_level_rule) @@ -1852,7 +1865,7 @@ class PtSpider: # if '(' in my_bonus: # my_bonus = my_bonus.split('(')[0] - hr = ''.join(details_html.xpath(site.my_hr_rule)).replace('H&R:', '').strip() + hr = ''.join(details_html.xpath(site.my_hr_rule)).replace('H&R:', '').replace('有效\n:', '').strip() my_hr = hr if hr else '0' logger.info(f'h&r: {hr} ,解析后:{my_hr}') @@ -2000,10 +2013,14 @@ class PtSpider: def get_hour_sp(self, my_site: MySite): """获取时魔""" site = my_site.site + url = site.url + site.page_mybonus + if 'monikadesign.uk' in site.url: + url = url.format(my_site.user_id) + logger.info(f'魔力页面链接:{url}') try: if 'wintersakura' in site.url or 'hdchina' in site.url: # 单独发送请求,解决冬樱签到问题 - response = requests.get(url=site.url + site.page_mybonus, verify=False, + response = requests.get(url=url, verify=False, cookies=cookie2dict(my_site.cookie), headers={ 'user-agent': my_site.user_agent @@ -2011,7 +2028,7 @@ class PtSpider: else: response = self.send_request( my_site=my_site, - url=site.url + site.page_mybonus, + url=url, ) # print(response.text.encode('utf8')) """ @@ -2034,7 +2051,7 @@ class PtSpider: ) """ res = converter.convert(response.content) - # logger.info('时魔响应:{}'.format(response.text)) + logger.info('时魔响应:{}'.format(response.text)) # logger.info('转为简体的时魔页面:', str(res)) # res_list = self.parse(res, site.hour_sp_rule) res_list = etree.HTML(res).xpath(site.hour_sp_rule) diff --git a/pt_site_site.json b/pt_site_site.json index 9f2d661..871746f 100644 --- a/pt_site_site.json +++ b/pt_site_site.json @@ -5926,5 +5926,81 @@ "my_uid_rule": "//table[@id=\"info_block\"]//span/a[contains(@class,\"_Name\") and contains(@href,\"userdetails.php?id=\")]/@href", "page_control_panel": "usercp.php", "tracker": "tracker.sharkpt.net" + }, + { + "id": 92, + "created_at": "2022-12-25 17:54:44.854475", + "updated_at": "2022-12-25 18:53:48.247179", + "name": "莫妮卡", + "url": "https://monikadesign.uk/", + "logo": "https://monikadesign.uk/favicon.ico", + "sign_in_support": 0, + "get_torrent_support": 1, + "get_userinfo_support": 1, + "search_support": 0, + "page_default": "torrents?perPage=100&free[0]=100", + "page_sign_in": "attendance.php", + "page_detail": "details.php?id={}", + "page_download": "download.php?id={}", + "page_user": "users/{}", + "page_search": "torrents.php?search={}", + "page_leeching": "getusertorrentlistajax.php?userid={}&type=leeching", + "page_uploaded": "getusertorrentlistajax.php?userid={}&type=uploaded", + "page_seeding": "users/{}", + "page_completed": "getusertorrentlistajax.php?userid={}&type=completed", + "page_mybonus": "users/{}/bonus/earnings", + "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": "//td[contains(text(),\"邀请\") and not(contains(text(),\"可以\"))]/following-sibling::td/span/text()", + "time_join_rule": "//div[@class=\"header gradient blue\"]//h4[2]/text()", + "latest_active_rule": "//td[contains(text(),\" 上次登录时间\")]/following-sibling::td/text()", + "uploaded_rule": "//li[@title=\"上传\"]/text()", + "downloaded_rule": "//li[@title=\"下载\"]/text()", + "ratio_rule": "//li[@title=\"分享率\"]/a/text()", + "my_sp_rule": "//li[@title=\"我的魔力\"]/a/text()", + "hour_sp_rule": "//dt[contains(text(),\"每小时获得魔力数量\")]/following-sibling::dd[1]/text()[1]", + "my_bonus_rule": "//font[@class=\"color_bonus\" and contains(text(),\"积分\")]/following-sibling::text()[1]", + "my_level_rule": "//div[@class=\"header gradient blue\"]//h4[1]/span/text()", + "my_hr_rule": "//strong[contains(text(),\"有效\")]/text()", + "leech_rule": "//li[@title=\"下载中\"]/a/text()", + "seed_rule": "//li[@title=\"做种中\"]/a/text()", + "record_count_rule": ".//td[3]/text()", + "seed_vol_rule": "//td[contains(text(),\"做种体积\")]/following-sibling::td[1]//text()[1]", + "mailbox_rule": "//a[@href=\"messages.php\"]/font[contains(text(),\"条\")]/text()[1]", + "hash_rule": "//td/b[contains(text(),\"Hash\")]/following::text()[1]", + "notice_rule": "//a[@href=\"index.php\"]/font[contains(text(),\"条\")]/text()[1]", + "my_passkey_rule": "//span[@class=\"text-monospace\"]/text()", + "my_uid_rule": "//div[@class=\"header gradient blue\"]//h2/text()[1]", + "page_control_panel": "usercp.php", + "tracker": "monikadesign.uk" } ] \ No newline at end of file