From ed5ddf2baf3cded53450b019b48b1441ffa47ca5 Mon Sep 17 00:00:00 2001 From: JasonYANG170 Date: Sun, 18 Aug 2024 01:06:51 +0800 Subject: [PATCH] V7.0:Fix some issues and add new function --- UserDefined.py | 16 +++++++++--- bosszhipin.py | 5 +++- maimai.py | 4 ++- shixiseng.py | 5 ++-- system.py | 6 +++-- wubatongcheng.py | 32 +++++++++++++++++++++--- yizhanchi.py | 5 +++- zhilianzhaopin.py | 62 ++++++++++++++++++++++++++++++++++++++++++++--- 8 files changed, 117 insertions(+), 18 deletions(-) diff --git a/UserDefined.py b/UserDefined.py index b15ed2d..3764f9f 100644 --- a/UserDefined.py +++ b/UserDefined.py @@ -22,6 +22,7 @@ maimai_state = 0 wubatongcheng_state = 0 # --------------实习僧配置项-------------------- # 是否投递(不投递:0,投递优先在线简历:1,投递优先离线简历:2) +shixiseng_postnumber=0 shixiseng_poststate = 0 # Cookie(参考wiki说明获取) shixiseng_Cookie = '' @@ -42,6 +43,7 @@ shixiseng_Search = { 'payment_per_day': "" # 日薪:200-300|100以下 } # --------------易展翅配置项-------------------- +yizhanchi_postnumber=0 yizhanchi_poststate = 0 yizhanchi_city="" yizhanchi_Cookie ="" @@ -71,6 +73,7 @@ yizhanchi_Search = { } # --------------Boss直聘配置项-------------------- bosszhipin_poststate = 0 +bosszhipin_postnumber=0 bosszhipin_city="" bosszhipin_Cookie ="" bosszhipin_Search = { @@ -94,8 +97,11 @@ bosszhipin_Search = { } # --------------智联招聘-------------------- zhilianzhaopin_poststate = 0 +zhilianzhaopin_postnumber=0 +zhilianzhaopin_Chatstate = 0 # Cookie(参考wiki说明获取) zhilianzhaopin_Cookie = '' +zhilianzhaopin_cvNumber='' zhilianzhaopin_Search ={ "pageIndex": "1", "S_SOU_WORK_CITY": "",#城市ID @@ -105,7 +111,7 @@ zhilianzhaopin_Search ={ "pageSize": "30", "keywordChange": "1", "S_SOU_FULL_INDEX": "",#岗位 - "cvNumber": "",#你的ID + "cvNumber": zhilianzhaopin_cvNumber,#你的ID "x-zp-utm-client-version": "u", "rt": "", "d": "", @@ -122,6 +128,7 @@ zhilianzhaopin_Search ={ } # --------------脉脉-------------------- maimai_poststate = 0 +maimai_postnumber=0 # Cookie(参考wiki说明获取) maimai_Token = ''#你的token,在Cookie maimai_Cookie = '' @@ -164,7 +171,7 @@ maimai_Search = { 'hms_oaid': "", 'sm_dl': "0", 'sm_did': "", - 'u': "242374278", + 'u': "", 'access_token': maimai_Token,#你的token 'webviewUserAgent': "Mozilla/5.0 (Linux; Android 14; 21051182C Build/UQ1A.240105.004.A1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/128.0.6613.40 Safari/537.36", 'density': "1.875", @@ -176,8 +183,11 @@ maimai_Search = { } # --------------58同城-------------------- wubatongcheng_poststate = 0 +wubatongcheng_postnumber=0 +wubatongcheng_Chatstate=0 # Cookie(参考wiki说明获取) wubatongcheng_clientid = '' +wubatongcheng_cityid='' wubatongcheng_Search = { 'os': "android", 'v': "1", @@ -189,7 +199,7 @@ wubatongcheng_Search = { 'action': "getListInfo,getFilterInfo,getRecTagInfo", 'pagetype': "filterList", 'filterParams': "{\"filterLocalId\":\"-1\",\"filterLocal\":\"\"}", - 'localname': "sz", + 'localname': "", 'isNeedAd': "1", 'page': "1", 'extendParams': "{\"intentionArray\":[]}" diff --git a/bosszhipin.py b/bosszhipin.py index 5410782..9fdf285 100644 --- a/bosszhipin.py +++ b/bosszhipin.py @@ -2,7 +2,8 @@ import time import requests import json -from UserDefined import bosszhipin_city, bosszhipin_Search, bosszhipin_poststate, bosszhipin_Cookie +from UserDefined import bosszhipin_city, bosszhipin_Search, bosszhipin_poststate, bosszhipin_Cookie, \ + bosszhipin_postnumber from system import Bosszhipin_CitylistUrl, Bosszhipin_SearchUrl, successful_deliveries, Bosszhipin_PostUrl @@ -50,6 +51,8 @@ def run_bosszhipin_script(): print(response.text) item_list = data['zpData']['jobList'] + if bosszhipin_successCount>=bosszhipin_postnumber: + break if not item_list: break diff --git a/maimai.py b/maimai.py index 2fedebc..e28eb9c 100644 --- a/maimai.py +++ b/maimai.py @@ -1,7 +1,7 @@ # main_script.py import requests import json -from UserDefined import maimai_poststate, maimai_Cookie, maimai_Search, deviceName, maimai_Token +from UserDefined import maimai_poststate, maimai_Cookie, maimai_Search, deviceName, maimai_Token, maimai_postnumber from system import successful_deliveries,maimai_SearchUrl,maimai_PostUrl def run_maimai_script(): # 初始化变量 @@ -35,6 +35,8 @@ def run_maimai_script(): data = maimai_SearchResponse.json() items = data['data'] + if maimai_successCount>=maimai_postnumber: + break if not items: break diff --git a/shixiseng.py b/shixiseng.py index 6751b38..4d8af4d 100644 --- a/shixiseng.py +++ b/shixiseng.py @@ -1,7 +1,7 @@ # main_script.py import requests import json -from UserDefined import shixiseng_poststate, shixiseng_Cookie, shixiseng_Search,deviceName +from UserDefined import shixiseng_poststate, shixiseng_Cookie, shixiseng_Search, deviceName, shixiseng_postnumber from system import successful_deliveries,shixiseng_SearchUrl,shixiseng_GroupUrl,shixiseng_PostUrl def run_shixiseng_script(): # 初始化变量 @@ -33,7 +33,8 @@ def run_shixiseng_script(): try: data = shixiseng_SearchResponse.json() items = data['msg']['data'] - + if shixiseng_successCount>=shixiseng_postnumber: + break if not items: break diff --git a/system.py b/system.py index c19fcac..795f87f 100644 --- a/system.py +++ b/system.py @@ -1,5 +1,5 @@ successful_deliveries = [] -version='V3.0' +version='V7.0' ResultUrl = 'http://www.pushplus.plus/send' shixiseng_SearchUrl = "https://apigateway-h3.shixiseng.com/api/interns/v3.0/interns/wxz/search/v4" shixiseng_GroupUrl = "https://apigateway-h3.shixiseng.com/api/deliver/v3.0/deliver/options" @@ -12,7 +12,9 @@ Bosszhipin_SearchUrl = "https://www.zhipin.com/wapi/zpgeek/search/joblist.json" Bosszhipin_PostUrl = "https://www.zhipin.com/wapi/zpgeek/friend/add.json" zhilianzhaopin_SearchUrl = "https://cgate.zhaopin.com/positionbusiness/searchrecommend/searchPositions" zhilianzhaopin_PostUrl = "https://cgate.zhaopin.com/positionbusiness/delivery/positionApply" +zhilianzhaopin_Chat = "https://cgate.zhaopin.com/imapi/imV2/createAndUpdateContextV2" maimai_SearchUrl = "https://h3.open.taou.com/maimai/search_front/app/job_search" maimai_PostUrl = "https://maimai.cn/sdk/jobs/job/send_resume" wubatongcheng_SearchUrl = "https://app.58.com/api/list/quanzhizhaopin" -wubatongcheng_PostUrl = "https://jlwebapp.58.com//resumedelivery/process" \ No newline at end of file +wubatongcheng_PostUrl = "https://jlwebapp.58.com//resumedelivery/process" +wubatongcheng_Chat = "https://wbim.58.com/im/precheck" \ No newline at end of file diff --git a/wubatongcheng.py b/wubatongcheng.py index 17c1a4f..f7631b5 100644 --- a/wubatongcheng.py +++ b/wubatongcheng.py @@ -1,8 +1,11 @@ # main_script.py import requests import json -from UserDefined import wubatongcheng_poststate, wubatongcheng_clientid, wubatongcheng_Search,deviceName -from system import successful_deliveries,wubatongcheng_SearchUrl,wubatongcheng_PostUrl +from UserDefined import wubatongcheng_poststate, wubatongcheng_clientid, wubatongcheng_Search, deviceName, \ + wubatongcheng_cityid, wubatongcheng_Chatstate, wubatongcheng_postnumber +from system import successful_deliveries, wubatongcheng_SearchUrl, wubatongcheng_PostUrl, wubatongcheng_Chat + + def run_wubatongcheng_script(): # 初始化变量 wubatongcheng_successCount = 0 @@ -43,7 +46,7 @@ def run_wubatongcheng_script(): 'buildtime': "", 'bangbangid': "", 'xxwxtoken': "", - 'cid': "4", + 'cid': wubatongcheng_cityid, 'ajkAuthTicket': "", 'xxzlsid': "", 'scale': "1", @@ -100,6 +103,8 @@ def run_wubatongcheng_script(): data = wubatongcheng_SearchResponse.json() items = data['jobList']['data'] + if wubatongcheng_successCount>=wubatongcheng_postnumber: + break if not items: break @@ -142,9 +147,28 @@ def run_wubatongcheng_script(): # usegroup = group_list[1] # elif (wubatongcheng_poststate == 0 and (deliver_able_online or deliver_able_local)): # usegroup = None + if (wubatongcheng_Chatstate==1): + wubatongcheng_Chatpayload = "infoId=57464116683181&scene=job_detail&tjfrom=app_list_search_mxn__143164519225947239129717587__723395933378117632__tegptplus__I%2CL__4____null__eyJyIjp7InNwbSI6IiIsImluZm9pZCI6IjU3NDY0MTE2NjgzMTgxIiwic2xvdCI6ImFwcF9saXN0X3NlYXJjaF9teG4iLCJ0eXBlIjoidGVncHRwbHVzIiwic2lkIjoiMTQzMTY0NTE5MjI1OTQ3MjM5MTI5NzE3NTg3IiwidXRtIjoiIiwiY2lkIjoiMTM2NiJ9LCJ0IjoxLCJ2IjoxLCJ3Ijp7InNsb3RfZnJvbSI6ImFwcF9taWRkbGVfc2VhcmNoIn19&platform=3" + wubatongcheng_ChatResponse = requests.post(wubatongcheng_Chat, data=wubatongcheng_Chatpayload, headers=wubatongcheng_headers) + data = wubatongcheng_ChatResponse.json() + wubatongcheng_wubatongcheng_Chatstate = data['message'] + if wubatongcheng_wubatongcheng_Chatstate == '成功'and wubatongcheng_poststate==0: + wubatongcheng_successCount += 1 + delivery_info = { + "UUID": uuid, + "公司": company, + "城市": city, + "岗位": job, + "薪资": salary_desc, + "福利": attraction_str, + # "投递来自": "在线简历" if usegroup == group_list[0] else "本地简历" + } + successful_deliveries.append(delivery_info) + elif wubatongcheng_poststate==0: + wubatongcheng_errorCount += 1 if (wubatongcheng_poststate==1): wubatongcheng_Postpayload = { - "infoId=uuid&os=android&pt=0&ceping=0&format=json&wechat=0&aiScene=4&ct=4&resumeId=&completeResume=0&deliverySource=8&v=1&curVer=13.10.2&downloadApp=0&appId=1&tjfrom=&synYingcai=0&sidDict=" + "infoId="+uuid+"&os=android&pt=0&ceping=0&format=json&wechat=0&aiScene=4&ct=4&resumeId=&completeResume=0&deliverySource=8&v=1&curVer=13.10.2&downloadApp=0&appId=1&tjfrom=&synYingcai=0&sidDict=" } diff --git a/yizhanchi.py b/yizhanchi.py index 96f1831..72e11e1 100644 --- a/yizhanchi.py +++ b/yizhanchi.py @@ -2,7 +2,8 @@ import json import requests from datetime import datetime import time -from UserDefined import yizhanchi_Search, yizhanchi_city, deviceName, yizhanchi_poststate, yizhanchi_Cookie +from UserDefined import yizhanchi_Search, yizhanchi_city, deviceName, yizhanchi_poststate, yizhanchi_Cookie, \ + yizhanchi_postnumber from system import yizhanchi_SearchUrl, yizhanchi_PostUrl, successful_deliveries, yizhanchi_CitylistUrl def run_yizhanchi_script(): @@ -46,6 +47,8 @@ def run_yizhanchi_script(): data = response.json() items = data['data']['data'] + if yizhanchi_successCount>=yizhanchi_postnumber: + break if not items: break diff --git a/zhilianzhaopin.py b/zhilianzhaopin.py index c0916cc..b4b8b30 100644 --- a/zhilianzhaopin.py +++ b/zhilianzhaopin.py @@ -1,8 +1,11 @@ # main_script.py import requests import json -from UserDefined import zhilianzhaopin_poststate, zhilianzhaopin_Cookie, zhilianzhaopin_Search,deviceName -from system import successful_deliveries,zhilianzhaopin_SearchUrl,zhilianzhaopin_PostUrl +from UserDefined import zhilianzhaopin_poststate, zhilianzhaopin_Cookie, zhilianzhaopin_Search, deviceName, \ + zhilianzhaopin_cvNumber, zhilianzhaopin_Chatstate, zhilianzhaopin_postnumber +from system import successful_deliveries, zhilianzhaopin_SearchUrl, zhilianzhaopin_PostUrl, zhilianzhaopin_Chat + + def run_zhilianzhaopin_script(): # 初始化变量 zhilianzhaopin_successCount = 0 @@ -54,6 +57,8 @@ def run_zhilianzhaopin_script(): data = zhilianzhaopin_SearchResponse.json() items = data['data']['list'] + if zhilianzhaopin_successCount>=zhilianzhaopin_postnumber: + break if not items: break @@ -64,7 +69,9 @@ def run_zhilianzhaopin_script(): salary_desc_list = [item['salary60'] for item in items] attraction_list = [item['welfareTagList'] for item in items] city_list = [item['workCity'] for item in items] - + rootCompanyNumber = [item['rootCompanyNumber'] for item in items] + jobId = [item['jobId'] for item in items] + companyId= [item['companyId'] for item in items] print("------------智联招聘-------------") print("在智联招聘平台找到以下岗位,即将为您投递:") print("---------------------------------") @@ -96,6 +103,53 @@ def run_zhilianzhaopin_script(): # usegroup = group_list[1] # elif (zhilianzhaopin_poststate == 0 and (deliver_able_online or deliver_able_local)): # usegroup = None + + if(zhilianzhaopin_Chatstate==1): + zhilianzhaopin_Chatparams = { + 'businessOperation': "POSITION_DETAIL_APPLY", + 'jobTitle': job, + 'stSourceCode': "5019", + 'jobId': jobId, + 'companyId': companyId, + 'resumeId': "523222527", + 'positionChatScene': "1", + 'stAction': "601", + 'rootCompanyId': rootCompanyNumber, + 'resumeNumber': zhilianzhaopin_cvNumber, + 'staffId': "1117787837", + 'jobNumber': uuid, + 'resumeLanguage': "0", + 'x-zp-utm-client-version': "u", + 'rt': "dcca32868511402db6106f553f231d3a", + 'd': "00000000-0543-0650-ffff-ffffef05ac4a", + 'os_version': "14", + 'channel': "tengxun", + 'version': "8.11.26", + 'platform': "4", + 'at': "51fb6d8c840b490ebd3bb476dc53e229", + 'identity': "1", + 'businessLine': "com.zhaopin.social", + 'anonymous': "0", + 'userRole': "0", + 'oaid': "" + } + zhilianzhaopin_ChatResponse = requests.get(zhilianzhaopin_Chat, params=zhilianzhaopin_Chatparams, headers=zhilianzhaopin_headers) + data = zhilianzhaopin_ChatResponse.json() + zhilianzhaopin_zhilianzhaopin_Chatstate = data['message'] + if zhilianzhaopin_zhilianzhaopin_Chatstate == '成功' and zhilianzhaopin_poststate==0: + zhilianzhaopin_successCount += 1 + delivery_info = { + "UUID": uuid, + "公司": company, + "城市": city, + "岗位": job, + "薪资": salary_desc, + "福利": attraction_str, + # "投递来自": "在线简历" if usegroup == group_list[0] else "本地简历" + } + successful_deliveries.append(delivery_info) + elif zhilianzhaopin_poststate==0: + zhilianzhaopin_errorCount += 1 if (zhilianzhaopin_poststate==1): zhilianzhaopin_Postpayload = json.dumps({ "st_page": "5019", @@ -119,7 +173,7 @@ def run_zhilianzhaopin_script(): "attachmentDefaultFileId": "", "businessOperation": "POSITION_DETAIL_APPLY", "resumeVersion": "1", - "resumeNumber": "E7B8AF54DD3376FDA5A9B05CD09B5CC0F6037F86044EB47E5AB3EE3D1ECB9804234E45D6A6C667951BF55660FBE10B1D_A0001", + "resumeNumber": zhilianzhaopin_cvNumber, "language": "3", "x-zp-utm-client-version": "u", "rt": "",