diff --git a/PT/pt_config.toml b/PT/pt_config.toml index cafb99a..4bc66ec 100644 --- a/PT/pt_config.toml +++ b/PT/pt_config.toml @@ -10,6 +10,7 @@ url = "https://sharkpt.net" cookie = "" level = 3 +flag = 1 ['Audiences 观众/奥迪'] url = "https://audiences.me" @@ -217,9 +218,10 @@ url = "https://ourbits.club" cookie = "" level = 1 label = "十三大" +flag = 1 ['PTerClub【PT之友俱乐部/猫站】' ] -url = "https://ourbits.club" +url = "https://pterclub.com" cookie = "" level = 1 label = "十三大" @@ -245,7 +247,7 @@ label = "影视,有声书,音乐,综合" ['btschool'] url = "https://pt.btschool.club" -cookie = "cf_clearance=GMf29NYLF6pgqZSpG4dbakMfL7dxFScTufyaLJt5BVM-1726732110-1.2.1.1-3HZ8qDHZ3ix3ISMr7kMxysfWbj5oY3lH5Plri_N1LtE8ifjcSeaJ..jCX5p13uIdrrIebFrXB44I7Zg0QT7l7wwZuITlX2joR_7UyiytVos5jAx_K8_ey4tuK89au4RKjYBmMkP1OBgwEwBy1atLWzkJh.JBfMvIN7M5HHtEgHrep9yNdhbrVxQAwzyz2IjXyaVvAvlantQoY5csnRGugVOZOVkZCM53ifKSELWLfUty0gtvu7pgWAxilBYDaQ5ZjAo77VffujuaYfF_l0ZH5.44.D5Wdlaub8iH9BGNo1oTbXV.Q1PEGcgAHG97MVlmePdsLcgK8.dqV9zquieIQlzI4_hRsZn6gJGpKVsLiBSYxlGV7TkYWbstQx5EkQCePZCGw4ERfJE3UMu0gEu1hwvVEEir638tw5m.XNXQmxjQYk7PLOTK5X2E41tTpD28; c_secure_uid=MTM4NTQ2; c_secure_pass=5eea7234b66710a8f6346d88d00d56a4; c_secure_ssl=eWVhaA%3D%3D; c_secure_tracker_ssl=eWVhaA%3D%3D; c_secure_login=bm9wZQ%3D%3D" +cookie = "cf_clearance=sntngeGiRRILzV56kgNcq_LV2OD0R7TBa6idECpWKKE-1732070383-1.2.1.1-mTasoHQiz6L8QH8.bKO.BCWQgito1D_qp87qLxbREUx__xuhM_4U.450bADQp6G76Paah8_6mLr3eEY3yi5yqCFKdYsBwBOyhhRi2QJSOpHSp7GNmWaKYWx72g0GrL.b8dAhhqf2SAzkEyQXs_kWV9s6kONT4HfNjD8ACN8VVJlLhnwjVDiFy1Dc8W3b4okLuCcwIWEo7jmdCJckZzItPjxzGBk5Pc5BAjoq_9MvK73eD2bG9WAhTCw4qObhBsEBQ9ub3MZuJWXv.l96OtB_XasgBPvupytF8j2h4lb2.gp_HqxMn6kK9Nz61kk8xau2Ka3gCmDYJ5OYe6I7KcBXJU8YRHkSFlqh_kg3wQWA0nFjFbQTzyRdsUKhzQa.c6rljxuOCUmgwBgso5ADlf0A56EpptPpFwzfEYmGfjhG3r6HLwT.CTcmmTadkw7oqwbB; c_secure_uid=MTM4NTQ2; c_secure_pass=5eea7234b66710a8f6346d88d00d56a4; c_secure_ssl=eWVhaA%3D%3D; c_secure_tracker_ssl=eWVhaA%3D%3D; c_secure_login=bm9wZQ%3D%3D" attendance_uri = "/index.php?action=addbonus" level = 3 label = "教育、培训" diff --git a/PT/pt_operation.py b/PT/pt_operation.py index 0ec3bb2..ed3f3fa 100644 --- a/PT/pt_operation.py +++ b/PT/pt_operation.py @@ -37,7 +37,7 @@ class PtOperation: 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36', } - def attendances(self, section_name, section_data): + async def attendances(self, section_name, section_data): """ 签到 :param section_name: @@ -45,9 +45,9 @@ class PtOperation: :param url: :return: """ - res_txt = f"开始对 [{section_name}] 进行签到操作...,签到结果:" url, cookie, attendance_uri = section_data.get('url'), section_data.get('cookie'), section_data.get( 'attendance_uri') + res_text, log_txt = "", "" self.headers["cookie"] = cookie # cookie不为空时候,可以签到 if cookie is not None and len(cookie.strip()) > 0: @@ -57,26 +57,35 @@ class PtOperation: url = url + attendance_uri else: url = url + "/attendance.php" - for _ in range(5): + self.headers["referer"] = url + for i in range(5): try: - print(url) response_result = requests.get(url, headers=self.headers) - print(response_result.text) print(response_result.status_code) - if response_result.status_code == 200: - res_txt = res_txt + '签到成功!' - logger.info(res_txt) + print(self.headers) + print("=" * 20) + print(response_result.text) + if response_result.status_code == 200 or response_result.text in "签到成功": + res_text = '签到成功!' break - except Exception as e: + else: + res_text = f"签到失败,网站请求结果 {response_result.status_code}" + break + except Exception: time.sleep(2) + res_text = f"{i + 1} 次出现错误,请关注!!!" + finally: + log_txt = f"开始对 [{section_name}] 进行签到操作! 请求连接为:[{url}],签到结果:[{res_text}]" + logger.info(log_txt) else: - res_txt = res_txt + f"{res_txt} 5次出现错误,请关注!!!{url}" - logger.error(res_txt) - pushme("签到错误提示:" + section_name, res_txt) - pushplus_bot("签到错误提示:" + section_name, res_txt) + # log_txt = f"开始对 [{section_name}] 进行签到操作! 请求连接为:[{url}],签到结果:[{res_text}]" + # logger.error(log_txt) + pushme("签到错误提示:" + section_name, log_txt) + pushplus_bot("签到错误提示:" + section_name, log_txt) + self.headers["cookie"] = "" - def signup(self, section_name, section_data): + async def signup(self, section_name, section_data): """ 是否开注册 :return: @@ -102,7 +111,7 @@ class PtOperation: soup = BeautifulSoup(html, 'html.parser') text_content = soup.find(class_='text').get_text() print(text_content) - except Exception as e: + except Exception: logger.error(f"{text} , 页面无法解析,请知晓!!!") logger.info("=" * 100) @@ -117,9 +126,9 @@ class PtOperation: elif response.status_code == 200: return response.text else: - logger.error(f"{text} , 出现错误,code码是:{response.status_code}, {response.text}!!!") + logger.error(f"{text} , 出现错误,code码是:{response.status_code}!!!") return "" - except Exception as e: + except Exception: time.sleep(2) else: logger.error(f"{text} , 5次出现错误,无法访问!!!") @@ -147,7 +156,7 @@ class PtOperation: elif res['status'] == 'error': logger.error(f"{text} , 访问返回 {res['message']} !!!") return "" - except Exception as e: + except Exception: time.sleep(2) else: logger.error(f"{text} , 5次出现错误,无法访问!!!") diff --git a/junit/pt_operation_junit.py b/junit/pt_operation_junit.py index 5574eea..51c2208 100644 --- a/junit/pt_operation_junit.py +++ b/junit/pt_operation_junit.py @@ -1,8 +1,13 @@ +import asyncio + import toml +from fsspec.asyn import loop from PT.pt_get_data import PtGetData from PT.pt_operation import PtOperation +pt_opt = PtOperation() + def get_section_name_by_name(name): with open('../PT/pt_config.toml', 'r', encoding='utf-8') as file: @@ -14,7 +19,7 @@ def get_section_name_by_name(name): return True, section_name, section_data -def attendances_junit(name): +async def attendances_junit(name): """ PT签到测试 :param name: @@ -22,10 +27,10 @@ def attendances_junit(name): """ flag, section_name, section_data = get_section_name_by_name(name) if flag: - PtOperation().attendances(section_name, section_data) + await pt_opt.attendances(section_name, section_data) -def signup_junit(name): +async def signup_junit(name): """ PT开注测试 :param name: @@ -33,7 +38,7 @@ def signup_junit(name): """ flag, section_name, section_data = get_section_name_by_name(name) if flag: - PtOperation().signup(section_name, section_data) + await PtOperation().signup(section_name, section_data) def get_pt_data_junit(name): @@ -42,6 +47,7 @@ def get_pt_data_junit(name): PtGetData().get_data(section_name, section_data) -# attendances_junit("btschool") -signup_junit("PTLSP 零食铺") +# asyncio.run(attendances_junit("PTVicomo 象站")) + +asyncio.run(signup_junit("Audiences 观众/奥迪")) # get_pt_data_junit("pttime") diff --git a/main_pt.py b/main_pt.py index fb40792..6cfe037 100644 --- a/main_pt.py +++ b/main_pt.py @@ -1,9 +1,69 @@ +import asyncio + +import toml + from PT.pt_operation import PtOperation ''' new Env('PT自动签到和开注检测'); 0 0 15 * * ? ''' +toml_file = 'PT/pt_config.toml' + + +async def attendances(): + """ + 签到 + :return: + """ + pt_opt = PtOperation() + try: + with open(toml_file, 'r', encoding='utf-8') as file: + config_data = toml.load(file) + # 迭代每个 section + for section_name, section_data in config_data.items(): + url, cookie, flag = section_data.get('url'), section_data.get('cookie'), section_data.get('flag') + if flag != 1 and cookie is not None and len(cookie.strip()) > 0: + print(f"Processing section: {section_name} --- {section_data.get('url')}") + # 签到 + await pt_opt.attendances(section_name, section_data) + except FileNotFoundError: + print(f"Error: The file '{toml_file}' was not found.") + except toml.TomlDecodeError as e: + print(f"Error decoding TOML: {e}") + + +async def signup(): + """ + 开注提醒 + :return: + """ + pt_opt = PtOperation() + try: + with open(toml_file, 'r', encoding='utf-8') as file: + config_data = toml.load(file) + # 迭代每个 section + for section_name, section_data in config_data.items(): + url, cookie, flag = section_data.get('url'), section_data.get('cookie'), section_data.get('flag') + if flag != 1: + print(f"Processing section: {section_name} --- {section_data.get('url')}") + # 签到 + await pt_opt.signup(section_name, section_data) + except FileNotFoundError: + print(f"Error: The file '{toml_file}' was not found.") + except toml.TomlDecodeError as e: + print(f"Error decoding TOML: {e}") + + +# 拉取网站数据 +# 做种 + if __name__ == '__main__': - PtOperation().opt() + # PtOperation().opt() + loop = asyncio.get_event_loop() + # 使用 asyncio.gather 可以运行多个异步任务 + results = loop.run_until_complete(asyncio.gather( + attendances(), signup() + )) + # print(results)