mirror of https://github.com/yuxian158/check.git
yuxian158
3 years ago
24 changed files with 1038 additions and 3129 deletions
@ -0,0 +1,292 @@ |
|||||||
|
{ |
||||||
|
"IQIYI": [ |
||||||
|
{ |
||||||
|
"cookie": "__dfp=xxxxxx; QP0013=xxxxxx; QP0022=xxxxxx; QYABEX=xxxxxx; P00001=xxxxxx; P00002=xxxxxx; P00003=xxxxxx; P00007=xxxxxx; QC163=xxxxxx; QC175=xxxxxx; QC179=xxxxxx; QC170=xxxxxx; P00010=xxxxxx; P00PRU=xxxxxx; P01010=xxxxxx; QC173=xxxxxx; QC180=xxxxxx; P00004=xxxxxx; QP0030=xxxxxx; QC006=xxxxxx; QC007=xxxxxx; QC008=xxxxxx; QC010=xxxxxx; nu=xxxxxx; __uuid=xxxxxx; QC005=xxxxxx;" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"VQQ": [ |
||||||
|
{ |
||||||
|
"auth_refresh": "https://access.video.qq.com/user/auth_refresh?vappid=xxxxxx&vsecret=xxxxxx&type=qq&g_tk=&g_vstk=xxxxxx&g_actk=xxxxxx&callback=xxxxxx&_=xxxxxx", |
||||||
|
"cookie": "pgv_pvid=xxxxxx; pac_uid=xxxxxx; RK=xxxxxx; ptcz=xxxxxx; tvfe_boss_uuid=xxxxxx; video_guid=xxxxxx; video_platform=xxxxxx; pgv_info=xxxxxx; main_login=xxxxxx; vqq_access_token=xxxxxx; vqq_appid=xxxxxx; vqq_openid=xxxxxx; vqq_vuserid=xxxxxx; vqq_refresh_token=xxxxxx; login_time_init=xxxxxx; uid=xxxxxx; vqq_vusession=xxxxxx; vqq_next_refresh_time=xxxxxx; vqq_login_time_init=xxxxxx; login_time_last=xxxxxx;" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"auth_refresh": "多账号 refresh url,请参考上面,以实际获取为准", |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"YOUDAO": [ |
||||||
|
{ |
||||||
|
"cookie": "JSESSIONID=xxxxxx; __yadk_uid=xxxxxx; OUTFOX_SEARCH_USER_ID_NCOO=xxxxxx; YNOTE_SESS=xxxxxx; YNOTE_PERS=xxxxxx; YNOTE_LOGIN=xxxxxx; YNOTE_CSTK=xxxxxx; _ga=xxxxxx; _gid=xxxxxx; _gat=xxxxxx; PUBLIC_SHARE_18a9dde3de846b6a69e24431764270c4=xxxxxx;" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"KGQQ": [ |
||||||
|
{ |
||||||
|
"cookie": "muid=xxxxxx; uid=xxxxxx; userlevel=xxxxxx; openid=xxxxxx; openkey=xxxxxx; opentype=xxxxxx; qrsig=xxxxxx; pgv_pvid=xxxxxx;" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"MUSIC163": [ |
||||||
|
{ |
||||||
|
"password": "Sitoi", |
||||||
|
"phone": "18888xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"password": "多账号 密码", |
||||||
|
"phone": "多账号 手机号" |
||||||
|
} |
||||||
|
], |
||||||
|
"ONEPLUSBBS": [ |
||||||
|
{ |
||||||
|
"cookie": "acw_tc=xxxxxx; qKc3_0e8d_saltkey=xxxxxx; qKc3_0e8d_lastvisit=xxxxxx; bbs_avatar=xxxxxx; qKc3_0e8d_sendmail=xxxxxx; opcid=xxxxxx; opcct=xxxxxx; oppt=xxxxxx; opsid=xxxxxx; opsct=xxxxxx; opbct=xxxxxx; UM_distinctid=xxxxxx; CNZZDATA1277373783=xxxxxx; www_clear=xxxxxx; ONEPLUSID=xxxxxx; qKc3_0e8d_sid=xxxxxx; bbs_uid=xxxxxx; bbs_uname=xxxxxx; bbs_grouptitle=xxxxxx; opuserid=xxxxxx; bbs_sign=xxxxxx; bbs_formhash=xxxxxx; qKc3_0e8d_ulastactivity=xxxxxx; opsertime=xxxxxx; qKc3_0e8d_lastact=xxxxxx; qKc3_0e8d_checkpm=xxxxxx; qKc3_0e8d_noticeTitle=xxxxxx; optime_browser=xxxxxx; opnt=xxxxxx; opstep=xxxxxx; opstep_event=xxxxxx; fp=xxxxxx;" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"BAIDU": [ |
||||||
|
{ |
||||||
|
"data_url": "https://cdn.jsdelivr.net/gh/Sitoi/Sitoi.github.io/baidu_urls.txt", |
||||||
|
"submit_url": "http://data.zz.baidu.com/urls?site=https://sitoi.cn&token=xxxxxx", |
||||||
|
"times": 10 |
||||||
|
}, |
||||||
|
{ |
||||||
|
"data_url": "多账号 data_url 链接地址,以实际获取为准", |
||||||
|
"submit_url": "多账号 submit_url 链接地址,以实际获取为准", |
||||||
|
"times": 10 |
||||||
|
} |
||||||
|
], |
||||||
|
"FMAPP": [ |
||||||
|
{ |
||||||
|
"blackbox": "eyJlcnJxxxxxx", |
||||||
|
"cookie": "sensorsdata2015jssdkcross=xxxxxx", |
||||||
|
"device_id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxx", |
||||||
|
"fmversion": "xxxxxx", |
||||||
|
"os": "xxxxxx", |
||||||
|
"token": "xxxxxx.xxxxxx-xxxxxx-xxxxxx.xxxxxx-xxxxxx", |
||||||
|
"useragent": "xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"blackbox": "多账号 blackbox 填写,请参考上面,blackbox 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
||||||
|
"device_id": "多账号 device_id 填写,请参考上面,以实际获取为准", |
||||||
|
"fmversion": "多账号 fmVersion 填写,请参考上面,以实际获取为准", |
||||||
|
"os": "多账号 os 填写,请参考上面,以实际获取为准", |
||||||
|
"token": "多账号 token 填写,请参考上面,以实际获取为准", |
||||||
|
"useragent": "多账号 User-Agent 填写,请参考上面,以实际获取为准" |
||||||
|
} |
||||||
|
], |
||||||
|
"TIEBA": [ |
||||||
|
{ |
||||||
|
"cookie": "BIDUPSID=xxxxxx; PSTM=xxxxxx; BAIDUID=xxxxxx; BAIDUID_BFESS=xxxxxx; delPer=xxxxxx; PSINO=xxxxxx; H_PS_PSSID=xxxxxx; BA_HECTOR=xxxxxx; BDORZ=xxxxxx; TIEBA_USERTYPE=xxxxxx; st_key_id=xxxxxx; BDUSS=xxxxxx; BDUSS_BFESS=xxxxxx; STOKEN=xxxxxx; TIEBAUID=xxxxxx; ab_sr=xxxxxx; st_data=xxxxxx; st_sign=xxxxxx;" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"BILIBILI": [ |
||||||
|
{ |
||||||
|
"cookie": "_uuid=xxxxxx; rpdid=xxxxxx; LIVE_BUVID=xxxxxx; PVID=xxxxxx; blackside_state=xxxxxx; CURRENT_FNVAL=xxxxxx; buvid3=xxxxxx; fingerprint3=xxxxxx; fingerprint=xxxxxx; buivd_fp=xxxxxx; buvid_fp_plain=xxxxxx; DedeUserID=xxxxxx; DedeUserID__ckMd5=xxxxxx; SESSDATA=xxxxxx; bili_jct=xxxxxx; bsource=xxxxxx; finger=xxxxxx; fingerprint_s=xxxxxx;", |
||||||
|
"coin_num": 0, |
||||||
|
"coin_type": 1, |
||||||
|
"silver2coin": true |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
||||||
|
"coin_num": 0, |
||||||
|
"coin_type": 1, |
||||||
|
"silver2coin": true |
||||||
|
} |
||||||
|
], |
||||||
|
"V2EX": [ |
||||||
|
{ |
||||||
|
"cookie": "_ga=xxxxxx; __cfduid=xxxxxx; PB3_SESSION=xxxxxx; A2=xxxxxx; V2EXSETTINGS=xxxxxx; V2EX_REFERRER=xxxxxx; V2EX_LANG=xxxxxx; _gid=xxxxxx; V2EX_TAB=xxxxxx;", |
||||||
|
"proxy": "使用代理的信息,无密码例子: http://127.0.0.1:1080 有密码例子: http://username:password@127.0.0.1:1080" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
||||||
|
"proxy": "使用代理的信息,无密码例子: http://127.0.0.1:1080 有密码例子: http://username:password@127.0.0.1:1080" |
||||||
|
} |
||||||
|
], |
||||||
|
"WWW2NZZ": [ |
||||||
|
{ |
||||||
|
"cookie": "YPx9_2132_saltkey=xxxxxx; YPx9_2132_lastvisit=xxxxxx; YPx9_2132_sendmail=xxxxxx; YPx9_2132_con_request_uri=xxxxxx; YPx9_2132_sid=xxxxxx; YPx9_2132_client_created=xxxxxx; YPx9_2132_client_token=xxxxxx; YPx9_2132_ulastactivity=xxxxxx; YPx9_2132_auth=xxxxxx; YPx9_2132_connect_login=xxxxxx; YPx9_2132_connect_is_bind=xxxxxx; YPx9_2132_connect_uin=xxxxxx; YPx9_2132_stats_qc_login=xxxxxx; YPx9_2132_checkpm=xxxxxx; YPx9_2132_noticeTitle=xxxxxx; YPx9_2132_nofavfid=xxxxxx; YPx9_2132_lastact=xxxxxx;" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"SMZDM": [ |
||||||
|
{ |
||||||
|
"cookie": "__jsluid_s=xxxxxx; __ckguid=xxxxxx; device_id=xxxxxx; homepage_sug=xxxxxx; r_sort_type=xxxxxx; _zdmA.vid=xxxxxx; sajssdk_2015_cross_new_user=xxxxxx; sensorsdata2015jssdkcross=xxxxxx; footer_floating_layer=xxxxxx; ad_date=xxxxxx; ad_json_feed=xxxxxx; zdm_qd=xxxxxx; sess=xxxxxx; user=xxxxxx; _zdmA.uid=xxxxxx; smzdm_id=xxxxxx; userId=xxxxxx; bannerCounter=xxxxxx; _zdmA.time=xxxxxx;" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"MIMOTION": [ |
||||||
|
{ |
||||||
|
"max_step": "20000", |
||||||
|
"min_step": "10000", |
||||||
|
"password": "Sitoi", |
||||||
|
"phone": "18888xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"max_step": "多账号 最大步数填写,请参考上面", |
||||||
|
"min_step": "多账号 最小步数填写,请参考上面", |
||||||
|
"password": "多账号 密码填写,请参考上面", |
||||||
|
"phone": "多账号 手机号填写,请参考上面" |
||||||
|
} |
||||||
|
], |
||||||
|
"ACFUN": [ |
||||||
|
{ |
||||||
|
"password": "Sitoi", |
||||||
|
"phone": "18888xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"password": "多账号 密码填写,请参考上面", |
||||||
|
"phone": "多账号 手机号填写,请参考上面" |
||||||
|
} |
||||||
|
], |
||||||
|
"CLOUD189": [ |
||||||
|
{ |
||||||
|
"password": "Sitoi", |
||||||
|
"phone": "18888xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"password": "多账号 密码填写,请参考上面", |
||||||
|
"phone": "多账号 手机号填写,请参考上面" |
||||||
|
} |
||||||
|
], |
||||||
|
"POJIE": [ |
||||||
|
{ |
||||||
|
"cookie": "htVD_2132_client_token=xxxxxx; htVD_2132_connect_is_bind=xxxxxx; htVD_2132_connect_uin=xxxxxx; htVD_2132_nofavfid=xxxxxx; htVD_2132_smile=xxxxxx; Hm_lvt_46d556462595ed05e05f009cdafff31a=xxxxxx; htVD_2132_saltkey=xxxxxx; htVD_2132_lastvisit=xxxxxx; htVD_2132_client_created=xxxxxx; htVD_2132_auth=xxxxxx; htVD_2132_connect_login=xxxxxx; htVD_2132_home_diymode=xxxxxx; htVD_2132_visitedfid=xxxxxx; htVD_2132_viewid=xxxxxx; KF4=xxxxxx; htVD_2132_st_p=xxxxxx; htVD_2132_lastcheckfeed=xxxxxx; htVD_2132_sid=xxxxxx; htVD_2132_ulastactivity=xxxxxx; htVD_2132_noticeTitle=xxxxxx;" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"MGTV": [ |
||||||
|
{ |
||||||
|
"params": "uuid=xxxxxx&uid=xxxxxx&ticket=xxxxxx&token=xxxxxx&device=iPhone&did=xxxxxx&deviceId=xxxxxx&appVersion=6.8.2&osType=ios&platform=iphone&abroad=0&aid=xxxxxx&nonce=xxxxxx×tamp=xxxxxx&appid=xxxxxx&type=1&sign=xxxxxx&callback=xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"params": "多账号 请求参数填写,请参考上面" |
||||||
|
} |
||||||
|
], |
||||||
|
"PICACOMIC": [ |
||||||
|
{ |
||||||
|
"email": "Sitoi", |
||||||
|
"password": "xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"email": "多账号 账号填写,请参考上面", |
||||||
|
"password": "多账号 密码填写,请参考上面" |
||||||
|
} |
||||||
|
], |
||||||
|
"MEIZU": [ |
||||||
|
{ |
||||||
|
"draw_count": "1", |
||||||
|
"cookie": "aliyungf_tc=xxxxxx; logined_uid=xxxxxx; acw_tc=xxxxxx; LT=xxxxxx; MZBBS_2132_saltkey=xxxxxx; MZBBS_2132_lastvisit=xxxxxx; MZBBSUC_2132_auth=xxxxxx; MZBBSUC_2132_loginmember=xxxxxx; MZBBSUC_2132_ticket=xxxxxx; MZBBS_2132_sid=xxxxxx; MZBBS_2132_ulastactivity=xxxxxx; MZBBS_2132_auth=xxxxxx; MZBBS_2132_loginmember=xxxxxx; MZBBS_2132_lastcheckfeed=xxxxxx; MZBBS_2132_checkfollow=xxxxxx; MZBBS_2132_lastact=xxxxxx;" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"draw_count": "多账号 抽奖次数设置", |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"ZHIYOO": [ |
||||||
|
{ |
||||||
|
"cookie": "ikdQ_9242_saltkey=xxxxxx; ikdQ_9242_lastvisit=xxxxxx; ikdQ_9242_onlineusernum=xxxxxx; ikdQ_9242_sendmail=1; ikdQ_9242_seccode=xxxxxx; ikdQ_9242_ulastactivity=xxxxxx; ikdQ_9242_auth=xxxxxx; ikdQ_9242_connect_is_bind=xxxxxx; ikdQ_9242_nofavfid=xxxxxx; ikdQ_9242_checkpm=xxxxxx; ikdQ_9242_noticeTitle=1; ikdQ_9242_sid=xxxxxx; ikdQ_9242_lip=xxxxxx; ikdQ_9242_lastact=xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"WEIBO": [ |
||||||
|
{ |
||||||
|
"url": "https://api.weibo.cn/2/users/show?wm=xxxxxx&launchid=xxxxxx&b=xxxxxx&from=xxxxxx&c=xxxxxx&networktype=xxxxxx&v_p=xxxxxx&skin=xxxxxx&v_f=xxxxxx&lang=xxxxxx&sflag=xxxxxx&ua=xxxxxx&ft=xxxxxx&aid=xxxxxx&has_extend=xxxxxx&uid=xxxxxx&gsid=xxxxxx&sourcetype=&get_teenager=xxxxxx&s=xxxxxx&has_profile=xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"url": "多账号 show_url 填写,请参考上面,show_url 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"DUOKAN": [ |
||||||
|
{ |
||||||
|
"cookie": "user_id=xxxxxx; token=xxxxxx; user_gender=xxxxxx; device_id=xxxxxx; app_id=xxxxxx; build=xxxxxx; short_version=xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"CSDN": [ |
||||||
|
{ |
||||||
|
"cookie": "uuid_tt_dd=xxxxxx; _ga=xxxxxx; UserName=xxxxxx; UserInfo=xxxxxx; UserToken=xxxxxx; UserNick=xxxxxx; AU=768; UN=xxxxxx; BT=xxxxxx; p_uid=xxxxxx; Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=xxxxxx; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=xxxxxx; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=xxxxxx dc_sid=xxxxxx; c_segment=xxxxxx; dc_session_id=xxxxxx; csrfToken=xxxxxx; c_first_ref=xxxxxx; c_first_page=xxxxxx; c_page_id=xxxxxx; announcement-new=xxxxxx; log_Id_click=xxxxxx; c_pref=xxxxxx; c_ref=xxxxxx; dc_tos=xxxxxx; log_Id_pv=xxxxxx; log_Id_view=xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"WZYD": [ |
||||||
|
{ |
||||||
|
"data": "areaId=xxxxxx&roleId=xxxxxx&gameId=xxxxxx&serverId=xxxxxx&gameOpenid=xxxxxx&userId=xxxxxx&appVersion=xxxxxx&cClientVersionName=xxxxxx&platid=xxxxxx&source=xxxxxx&algorithm=xxxxxx&version=xxxxxx×tamp=xxxxxx&appid=xxxxxx&openid=xxxxxx&sig=xxxxxx&encode=2&msdkEncodeParam=xxxxxx&cSystem=xxxxxx&h5Get=xxxxxx&msdkToken=&appOpenid=xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"data": "多账号 data 填写,请参考上面,data 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
||||||
|
} |
||||||
|
], |
||||||
|
"WOMAIL": [ |
||||||
|
{ |
||||||
|
"url": "https://nyan.mail.wo.cn/cn/sign/index/index?mobile=xxxxxx&userName=&openId=xxxxxx", |
||||||
|
"pause21days": true, |
||||||
|
"password": "Sitoi", |
||||||
|
"phone": "18888xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"url": "多账号 url 填写,请参考上面,url 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
||||||
|
"pause21days": true, |
||||||
|
"password": "多账号 密码填写,请参考上面", |
||||||
|
"phone": "多账号 手机号填写,请参考上面" |
||||||
|
} |
||||||
|
], |
||||||
|
"HEYTAP": [ |
||||||
|
{ |
||||||
|
"cookie": "sa_distinct_id=xxxxxx;Personalized=xxxxxx;s_channel=xxxxxx;source_type=xxxxxx;app_param=xxxxxx;ENCODE_TOKENSID=xxxxxx;scene_id=xxxxxx;apkPkg=xxxxxx;exp_id=;app_utm=xxxxxx;TOKENSID=xxxxxx;strategy_id=xxxxxx;referer=;experiment_id=xxxxxx;section_id=;s_version=xxxxxx;app_innerutm=xxxxxx;retrieve_id=;log_id=;", |
||||||
|
"useragent": "xxxxxx", |
||||||
|
"draw": false |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
||||||
|
"useragent": "多账号 User-Agent 填写,请参考上面,以实际获取为准", |
||||||
|
"draw": false |
||||||
|
} |
||||||
|
], |
||||||
|
"UNICOM": [ |
||||||
|
{ |
||||||
|
"mobile": "18888xxxxxx", |
||||||
|
"password": "xxxxxx", |
||||||
|
"app_id": "xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"mobile": "多账号 手机号", |
||||||
|
"password": "多账号 密码", |
||||||
|
"app_id": "多账号 appId" |
||||||
|
} |
||||||
|
], |
||||||
|
"EVERPHOTO": [ |
||||||
|
{ |
||||||
|
"mobile": "+8618888xxxxxx", |
||||||
|
"password": "xxxxxx" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"mobile": "多账号 手机号", |
||||||
|
"password": "多账号 密码" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -1,35 +0,0 @@ |
|||||||
import requests |
|
||||||
import json |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
""" |
|
||||||
建议cron: 20 8 * * * |
|
||||||
new Env('网易云游戏'); |
|
||||||
""" |
|
||||||
|
|
||||||
def game163(Authorization): |
|
||||||
headers = { |
|
||||||
'user-agent': 'Mozilla/5.0 (Linux; Android 10; Redmi K30 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/85.0.4183.127 Mobile Safari/537.36', |
|
||||||
## 下面填抓包来的参数######## |
|
||||||
'Authorization': Authorization |
|
||||||
} |
|
||||||
url = 'http://n.cg.163.com/api/v2/sign-today' |
|
||||||
r = requests.post(url, headers=headers).text |
|
||||||
if r[0] == "{": |
|
||||||
return "cookie已失效" |
|
||||||
else: |
|
||||||
return "签到成功" |
|
||||||
|
|
||||||
|
|
||||||
def start(): |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("163game", []) |
|
||||||
res = game163(_check_item.get('Authorization')) |
|
||||||
print(res) |
|
||||||
send("网易云游戏", res) |
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
start() |
|
@ -1,150 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 31 7 * * * |
|
||||||
new Env('AcFun'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
import requests |
|
||||||
import urllib3 |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
urllib3.disable_warnings() |
|
||||||
|
|
||||||
|
|
||||||
class AcFunCheckIn: |
|
||||||
def __init__(self, check_item: dict): |
|
||||||
self.check_item = check_item |
|
||||||
self.contentid = "27259341" |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def get_cookies(session, phone, password): |
|
||||||
url = "https://id.app.acfun.cn/rest/app/login/signin" |
|
||||||
headers = { |
|
||||||
"Host": "id.app.acfun.cn", |
|
||||||
"user-agent": "AcFun/6.39.0 (iPhone; iOS 14.3; Scale/2.00)", |
|
||||||
"devicetype": "0", |
|
||||||
"accept-language": "zh-Hans-CN;q=1, en-CN;q=0.9, ja-CN;q=0.8, zh-Hant-HK;q=0.7, io-Latn-CN;q=0.6", |
|
||||||
"accept": "application/json", |
|
||||||
"content-type": "application/x-www-form-urlencoded", |
|
||||||
} |
|
||||||
data = f"password={password}&username={phone}" |
|
||||||
response = session.post(url=url, data=data, headers=headers, verify=False) |
|
||||||
acpasstoken = response.json().get("acPassToken") |
|
||||||
auth_key = str(response.json().get("auth_key")) |
|
||||||
if acpasstoken and auth_key: |
|
||||||
cookies = {"acPasstoken": acpasstoken, "auth_key": auth_key} |
|
||||||
return cookies |
|
||||||
else: |
|
||||||
return False |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def get_token(session, cookies): |
|
||||||
url = "https://id.app.acfun.cn/rest/web/token/get" |
|
||||||
headers = { |
|
||||||
"Content-Type": "application/x-www-form-urlencoded", |
|
||||||
} |
|
||||||
response = session.post(url=url, cookies=cookies, data="sid=acfun.midground.api", headers=headers, verify=False) |
|
||||||
return response.json().get("acfun.midground.api_st") |
|
||||||
|
|
||||||
def get_video(self, session): |
|
||||||
url = "https://api-ipv6.acfunchina.com/rest/app/rank/channel" |
|
||||||
data = "channelId=0&rankPeriod=DAY" |
|
||||||
headers = { |
|
||||||
"Content-Type": "application/x-www-form-urlencoded", |
|
||||||
} |
|
||||||
response = session.post(url=url, data=data, headers=headers, verify=False) |
|
||||||
self.contentid = response.json().get("rankList")[0].get("contentId") |
|
||||||
return self.contentid |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def sign(session, cookies): |
|
||||||
headers = {"acPlatform": "IPHONE"} |
|
||||||
response = session.post( |
|
||||||
url="https://api-ipv6.acfunchina.com/rest/app/user/signIn", headers=headers, cookies=cookies, verify=False |
|
||||||
) |
|
||||||
return response.json().get("msg") |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def danmu(session, cookies): |
|
||||||
url = "https://api-ipv6.acfunchina.com/rest/app/new-danmaku/add" |
|
||||||
body = "body=sitoi&color=16777215&id=27259341&mode=1&position=5019&size=25&subChannelId=84&subChannelName=%E4" \ |
|
||||||
"%B8%BB%E6%9C%BA%E5%8D%95%E6%9C%BA&type=douga&videoId=22898696 " |
|
||||||
headers = { |
|
||||||
"Content-Type": "application/x-www-form-urlencoded", |
|
||||||
} |
|
||||||
response = session.post(url=url, headers=headers, cookies=cookies, data=body, verify=False) |
|
||||||
if response.json().get("result") == 0: |
|
||||||
msg = "弹幕成功" |
|
||||||
else: |
|
||||||
msg = "弹幕失败" |
|
||||||
return msg |
|
||||||
|
|
||||||
def throwbanana(self, session, cookies): |
|
||||||
url = "https://api-ipv6.acfunchina.com/rest/app/banana/throwBanana" |
|
||||||
body = f"count=1&resourceId={self.contentid}&resourceType=2" |
|
||||||
headers = { |
|
||||||
"Content-Type": "application/x-www-form-urlencoded", |
|
||||||
} |
|
||||||
response = session.post(url=url, headers=headers, cookies=cookies, data=body, verify=False) |
|
||||||
if response.json().get("result") == 0: |
|
||||||
msg = "香蕉成功" |
|
||||||
else: |
|
||||||
msg = "香蕉失败" |
|
||||||
return msg |
|
||||||
|
|
||||||
def like(self, session, token): |
|
||||||
like_url = "https://api.kuaishouzt.com/rest/zt/interact/add" |
|
||||||
unlike_url = "https://api.kuaishouzt.com/rest/zt/interact/delete" |
|
||||||
headers = { |
|
||||||
"Content-Type": "application/x-www-form-urlencoded", |
|
||||||
} |
|
||||||
cookies = {"acfun.midground.api_st": token, "kpn": "ACFUN_APP"} |
|
||||||
body = f"interactType=1&objectId={self.contentid}&objectType=2&subBiz=mainApp" |
|
||||||
response = session.post(url=like_url, headers=headers, cookies=cookies, data=body, verify=False) |
|
||||||
session.post(url=unlike_url, headers=headers, cookies=cookies, data=body, verify=False) |
|
||||||
if response.json().get("result") == 1: |
|
||||||
msg = "点赞成功" |
|
||||||
else: |
|
||||||
msg = "点赞失败" |
|
||||||
return msg |
|
||||||
|
|
||||||
def share(self, session, cookies): |
|
||||||
url = "https://api-ipv6.acfunchina.com/rest/app/task/reportTaskAction?taskType=1&market=tencent&product=ACFUN_APP&appMode=0" |
|
||||||
headers = { |
|
||||||
"Content-Type": "application/x-www-form-urlencoded", |
|
||||||
} |
|
||||||
response = session.get(url=url, headers=headers, cookies=cookies, verify=False) |
|
||||||
if response.json().get("result") == 0: |
|
||||||
msg = "分享成功" |
|
||||||
else: |
|
||||||
msg = "分享失败" |
|
||||||
return msg |
|
||||||
|
|
||||||
def main(self): |
|
||||||
phone = self.check_item.get("acfun_phone") |
|
||||||
password = self.check_item.get("acfun_password") |
|
||||||
session = requests.session() |
|
||||||
self.get_video(session=session) |
|
||||||
cookies = self.get_cookies(session=session, phone=phone, password=password) |
|
||||||
token = self.get_token(session=session, cookies=cookies) |
|
||||||
sign_msg = self.sign(session=session, cookies=cookies) |
|
||||||
like_msg = self.like(session=session, token=token) |
|
||||||
share_msg = self.share(session=session, cookies=cookies) |
|
||||||
danmu_msg = self.danmu(session=session, cookies=cookies) |
|
||||||
throwbanana_msg = self.throwbanana(session=session, cookies=cookies) |
|
||||||
msg = ( |
|
||||||
f"帐号信息: {phone}\n签到状态: {sign_msg}\n点赞任务: {like_msg}\n" |
|
||||||
f"弹幕任务: {danmu_msg}\n香蕉任务: {throwbanana_msg}\n分享任务: {share_msg}" |
|
||||||
) |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("ACFUN_ACCOUNT_LIST", [])[0] |
|
||||||
res = AcFunCheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send('AcFun', res) |
|
@ -1,59 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 32 7 * * * |
|
||||||
new Env('百度搜索资源平台'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
from urllib import parse |
|
||||||
import requests |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
|
|
||||||
class BaiduUrlSubmit: |
|
||||||
def __init__(self, check_item: dict): |
|
||||||
self.check_item = check_item |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def url_submit(data_url: str, submit_url: str, times: int = 100) -> str: |
|
||||||
site = parse.parse_qs(parse.urlsplit(submit_url).query).get("site")[0] |
|
||||||
urls_data = requests.get(url=data_url) |
|
||||||
remian = 100000 |
|
||||||
success_count = 0 |
|
||||||
error_count = 0 |
|
||||||
for one in range(times): |
|
||||||
try: |
|
||||||
response = requests.post(url=submit_url, data=urls_data) |
|
||||||
if response.json().get("success"): |
|
||||||
remian = response.json().get("remain") |
|
||||||
success_count += response.json().get("success") |
|
||||||
else: |
|
||||||
error_count += 1 |
|
||||||
except Exception as e: |
|
||||||
print(e) |
|
||||||
error_count += 1 |
|
||||||
msg = ( |
|
||||||
f"站点地址: {site}\n当天剩余的可推送 url 条数: {remian}\n成功推送的 url 条数: {success_count}\n" |
|
||||||
f"成功推送的 url 次数: {times - error_count}\n失败推送的 url 次数: {error_count}" |
|
||||||
) |
|
||||||
return msg |
|
||||||
|
|
||||||
def main(self): |
|
||||||
data_url = self.check_item.get("data_url") |
|
||||||
submit_url = self.check_item.get("submit_url") |
|
||||||
times = int(self.check_item.get("times", 100)) |
|
||||||
if data_url and submit_url: |
|
||||||
msg = self.url_submit(data_url=data_url, submit_url=submit_url, times=times) |
|
||||||
else: |
|
||||||
msg = "配置错误" |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("BAIDU_URL_SUBMIT_LIST", [])[0] |
|
||||||
res = BaiduUrlSubmit(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send("百度搜索资源平台", res) |
|
@ -1,345 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 30 8 * * * |
|
||||||
new Env('哔哩哔哩'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
import os |
|
||||||
|
|
||||||
import requests |
|
||||||
from requests import utils |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
|
|
||||||
class BiliBiliCheckIn(object): |
|
||||||
# TODO 待测试,需要大会员账号测试领取福利 |
|
||||||
def __init__(self, check_item: dict): |
|
||||||
self.check_item = check_item |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def get_nav(session): |
|
||||||
url = "https://api.bilibili.com/x/web-interface/nav" |
|
||||||
ret = session.get(url=url).json() |
|
||||||
uname = ret.get("data", {}).get("uname") |
|
||||||
uid = ret.get("data", {}).get("mid") |
|
||||||
is_login = ret.get("data", {}).get("isLogin") |
|
||||||
coin = ret.get("data", {}).get("money") |
|
||||||
vip_type = ret.get("data", {}).get("vipType") |
|
||||||
current_exp = ret.get("data", {}).get("level_info", {}).get("current_exp") |
|
||||||
return uname, uid, is_login, coin, vip_type, current_exp |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def reward(session) -> dict: |
|
||||||
"""取B站经验信息""" |
|
||||||
url = "https://account.bilibili.com/home/reward" |
|
||||||
ret = session.get(url=url).json() |
|
||||||
return ret |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def live_sign(session) -> dict: |
|
||||||
"""B站直播签到""" |
|
||||||
try: |
|
||||||
url = "https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/DoSign" |
|
||||||
ret = session.get(url=url).json() |
|
||||||
if ret["code"] == 0: |
|
||||||
msg = f'签到成功,{ret["data"]["text"]},特别信息:{ret["data"]["specialText"]},本月已签到{ret["data"]["hadSignDays"]}天' |
|
||||||
elif ret["code"] == 1011040: |
|
||||||
msg = "今日已签到过,无法重复签到" |
|
||||||
else: |
|
||||||
msg = f'签到失败,信息为: {ret["message"]}' |
|
||||||
except Exception as e: |
|
||||||
msg = f"签到异常,原因为{str(e)}" |
|
||||||
print(msg) |
|
||||||
return msg |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def manga_sign(session, platform="android") -> dict: |
|
||||||
""" |
|
||||||
模拟B站漫画客户端签到 |
|
||||||
""" |
|
||||||
try: |
|
||||||
url = "https://manga.bilibili.com/twirp/activity.v1.Activity/ClockIn" |
|
||||||
post_data = {"platform": platform} |
|
||||||
ret = session.post(url=url, data=post_data).json() |
|
||||||
if ret["code"] == 0: |
|
||||||
msg = "签到成功" |
|
||||||
elif ret["msg"] == "clockin clockin is duplicate": |
|
||||||
msg = "今天已经签到过了" |
|
||||||
else: |
|
||||||
msg = f'签到失败,信息为({ret["msg"]})' |
|
||||||
print(msg) |
|
||||||
except Exception as e: |
|
||||||
msg = f"签到异常,原因为: {str(e)}" |
|
||||||
print(msg) |
|
||||||
return msg |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def vip_privilege_receive(session, bili_jct, receive_type: int = 1) -> dict: |
|
||||||
""" |
|
||||||
领取B站大会员权益 |
|
||||||
receive_type int 权益类型,1为B币劵,2为优惠券 |
|
||||||
""" |
|
||||||
url = "https://api.bilibili.com/x/vip/privilege/receive" |
|
||||||
post_data = {"type": receive_type, "csrf": bili_jct} |
|
||||||
ret = session.post(url=url, data=post_data).json() |
|
||||||
return ret |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def vip_manga_reward(session) -> dict: |
|
||||||
"""获取漫画大会员福利""" |
|
||||||
url = "https://manga.bilibili.com/twirp/user.v1.User/GetVipReward" |
|
||||||
ret = session.post(url=url, json={"reason_id": 1}).json() |
|
||||||
return ret |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def report_task(session, bili_jct, aid: int, cid: int, progres: int = 300) -> dict: |
|
||||||
""" |
|
||||||
B站上报视频观看进度 |
|
||||||
aid int 视频av号 |
|
||||||
cid int 视频cid号 |
|
||||||
progres int 观看秒数 |
|
||||||
""" |
|
||||||
url = "http://api.bilibili.com/x/v2/history/report" |
|
||||||
post_data = {"aid": aid, "cid": cid, "progres": progres, "csrf": bili_jct} |
|
||||||
ret = session.post(url=url, data=post_data).json() |
|
||||||
return ret |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def share_task(session, bili_jct, aid) -> dict: |
|
||||||
""" |
|
||||||
分享指定av号视频 |
|
||||||
aid int 视频av号 |
|
||||||
""" |
|
||||||
url = "https://api.bilibili.com/x/web-interface/share/add" |
|
||||||
post_data = {"aid": aid, "csrf": bili_jct} |
|
||||||
ret = session.post(url=url, data=post_data).json() |
|
||||||
return ret |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def get_followings( |
|
||||||
session, uid: int, pn: int = 1, ps: int = 50, order: str = "desc", order_type: str = "attention" |
|
||||||
) -> dict: |
|
||||||
""" |
|
||||||
获取指定用户关注的up主 |
|
||||||
uid int 账户uid,默认为本账户,非登录账户只能获取20个*5页 |
|
||||||
pn int 页码,默认第一页 |
|
||||||
ps int 每页数量,默认50 |
|
||||||
order str 排序方式,默认desc |
|
||||||
order_type 排序类型,默认attention |
|
||||||
""" |
|
||||||
params = { |
|
||||||
"vmid": uid, |
|
||||||
"pn": pn, |
|
||||||
"ps": ps, |
|
||||||
"order": order, |
|
||||||
"order_type": order_type, |
|
||||||
} |
|
||||||
url = f"https://api.bilibili.com/x/relation/followings" |
|
||||||
ret = session.get(url=url, params=params).json() |
|
||||||
return ret |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def space_arc_search( |
|
||||||
session, uid: int, pn: int = 1, ps: int = 100, tid: int = 0, order: str = "pubdate", keyword: str = "" |
|
||||||
) -> dict: |
|
||||||
""" |
|
||||||
获取指定up主空间视频投稿信息 |
|
||||||
uid int 账户uid,默认为本账户 |
|
||||||
pn int 页码,默认第一页 |
|
||||||
ps int 每页数量,默认50 |
|
||||||
tid int 分区 默认为0(所有分区) |
|
||||||
order str 排序方式,默认pubdate |
|
||||||
keyword str 关键字,默认为空 |
|
||||||
""" |
|
||||||
params = { |
|
||||||
"mid": uid, |
|
||||||
"pn": pn, |
|
||||||
"ps": ps, |
|
||||||
"tid": tid, |
|
||||||
"order": order, |
|
||||||
"keyword": keyword, |
|
||||||
} |
|
||||||
url = f"https://api.bilibili.com/x/space/arc/search" |
|
||||||
ret = session.get(url=url, params=params).json() |
|
||||||
data_list = [ |
|
||||||
{"aid": one.get("aid"), "cid": 0, "title": one.get("title"), "owner": one.get("author")} |
|
||||||
for one in ret.get("data", {}).get("list", {}).get("vlist", []) |
|
||||||
] |
|
||||||
return data_list |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def elec_pay(session, bili_jct, uid: int, num: int = 50) -> dict: |
|
||||||
""" |
|
||||||
用B币给up主充电 |
|
||||||
uid int up主uid |
|
||||||
num int 充电电池数量 |
|
||||||
""" |
|
||||||
url = "https://api.bilibili.com/x/ugcpay/trade/elec/pay/quick" |
|
||||||
post_data = {"elec_num": num, "up_mid": uid, "otype": "up", "oid": uid, "csrf": bili_jct} |
|
||||||
ret = session.post(url=url, data=post_data).json() |
|
||||||
return ret |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def coin_add(session, bili_jct, aid: int, num: int = 1, select_like: int = 1) -> dict: |
|
||||||
""" |
|
||||||
给指定 av 号视频投币 |
|
||||||
aid int 视频av号 |
|
||||||
num int 投币数量 |
|
||||||
select_like int 是否点赞 |
|
||||||
""" |
|
||||||
url = "https://api.bilibili.com/x/web-interface/coin/add" |
|
||||||
post_data = { |
|
||||||
"aid": aid, |
|
||||||
"multiply": num, |
|
||||||
"select_like": select_like, |
|
||||||
"cross_domain": "true", |
|
||||||
"csrf": bili_jct, |
|
||||||
} |
|
||||||
ret = session.post(url=url, data=post_data).json() |
|
||||||
|
|
||||||
return ret |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def live_status(session) -> dict: |
|
||||||
"""B站直播获取金银瓜子状态""" |
|
||||||
url = "https://api.live.bilibili.com/pay/v1/Exchange/getStatus" |
|
||||||
ret = session.get(url=url).json() |
|
||||||
data = ret.get("data") |
|
||||||
silver = data.get("silver", 0) |
|
||||||
gold = data.get("gold", 0) |
|
||||||
coin = data.get("coin", 0) |
|
||||||
msg = f"银瓜子数量: {silver}\n金瓜子数量: {gold}\n硬币数量: {coin}" |
|
||||||
return msg |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def silver2coin(session, bili_jct) -> dict: |
|
||||||
"""银瓜子兑换硬币""" |
|
||||||
url = "https://api.live.bilibili.com/pay/v1/Exchange/silver2coin" |
|
||||||
post_data = {"csrf_token": bili_jct} |
|
||||||
ret = session.post(url=url, data=post_data).json() |
|
||||||
return ret |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def get_region(session, rid=1, num=6) -> dict: |
|
||||||
""" |
|
||||||
获取 B站分区视频信息 |
|
||||||
rid int 分区号 |
|
||||||
num int 获取视频数量 |
|
||||||
""" |
|
||||||
url = "https://api.bilibili.com/x/web-interface/dynamic/region?ps=" + str(num) + "&rid=" + str(rid) |
|
||||||
ret = session.get(url=url).json() |
|
||||||
data_list = [ |
|
||||||
{ |
|
||||||
"aid": one.get("aid"), |
|
||||||
"cid": one.get("cid"), |
|
||||||
"title": one.get("title"), |
|
||||||
"owner": one.get("owner", {}).get("name"), |
|
||||||
} |
|
||||||
for one in ret.get("data", {}).get("archives", []) |
|
||||||
] |
|
||||||
return data_list |
|
||||||
|
|
||||||
def main(self): |
|
||||||
bilibili_cookie = { |
|
||||||
item.split("=")[0]: item.split("=")[1] for item in self.check_item.get("bilibili_cookie").split("; ") |
|
||||||
} |
|
||||||
bili_jct = bilibili_cookie.get("bili_jct") |
|
||||||
coin_num = self.check_item.get("coin_num", 0) |
|
||||||
coin_type = self.check_item.get("coin_type", 1) |
|
||||||
silver2coin = self.check_item.get("silver2coin", True) |
|
||||||
session = requests.session() |
|
||||||
requests.utils.add_dict_to_cookiejar(session.cookies, bilibili_cookie) |
|
||||||
session.headers.update( |
|
||||||
{ |
|
||||||
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64", |
|
||||||
"Referer": "https://www.bilibili.com/", |
|
||||||
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", |
|
||||||
"Connection": "keep-alive", |
|
||||||
} |
|
||||||
) |
|
||||||
success_count = 0 |
|
||||||
uname, uid, is_login, coin, vip_type, current_exp = self.get_nav(session=session) |
|
||||||
if is_login: |
|
||||||
manhua_msg = self.manga_sign(session=session) |
|
||||||
live_msg = self.live_sign(session=session) |
|
||||||
aid_list = self.get_region(session=session) |
|
||||||
reward_ret = self.reward(session=session) |
|
||||||
coins_av_count = reward_ret.get("data", {}).get("coins_av") // 10 |
|
||||||
coin_num = coin_num - coins_av_count |
|
||||||
coin_num = coin_num if coin_num < coin else coin |
|
||||||
if coin_type == 1 and coin_num: |
|
||||||
following_list = self.get_followings(session=session, uid=uid) |
|
||||||
for following in following_list.get("data", {}).get("list"): |
|
||||||
mid = following.get("mid") |
|
||||||
if mid: |
|
||||||
aid_list += self.space_arc_search(session=session, uid=mid) |
|
||||||
if coin_num > 0: |
|
||||||
for aid in aid_list[::-1]: |
|
||||||
ret = self.coin_add(session=session, aid=aid.get("aid"), bili_jct=bili_jct) |
|
||||||
if ret["code"] == 0: |
|
||||||
coin_num -= 1 |
|
||||||
print(f'成功给{aid.get("title")}投一个币') |
|
||||||
success_count += 1 |
|
||||||
elif ret["code"] == 34005: |
|
||||||
print(f'投币{aid.get("title")}失败,原因为{ret["message"]}') |
|
||||||
continue |
|
||||||
# -104 硬币不够了 -111 csrf 失败 34005 投币达到上限 |
|
||||||
else: |
|
||||||
print(f'投币{aid.get("title")}失败,原因为{ret["message"]},跳过投币') |
|
||||||
break |
|
||||||
if coin_num <= 0: |
|
||||||
break |
|
||||||
coin_msg = f"今日成功投币{success_count + coins_av_count}/{self.check_item.get('coin_num', 5)}个" |
|
||||||
else: |
|
||||||
coin_msg = f"今日成功投币{coins_av_count}/{self.check_item.get('coin_num', 5)}个" |
|
||||||
aid = aid_list[0].get("aid") |
|
||||||
cid = aid_list[0].get("cid") |
|
||||||
title = aid_list[0].get("title") |
|
||||||
report_ret = self.report_task(session=session, bili_jct=bili_jct, aid=aid, cid=cid) |
|
||||||
if report_ret.get("code") == 0: |
|
||||||
report_msg = f"观看《{title}》300秒" |
|
||||||
else: |
|
||||||
report_msg = f"任务失败" |
|
||||||
print(report_msg) |
|
||||||
share_ret = self.share_task(session=session, bili_jct=bili_jct, aid=aid) |
|
||||||
if share_ret.get("code") == 0: |
|
||||||
share_msg = f"分享《{title}》成功" |
|
||||||
else: |
|
||||||
share_msg = f"分享失败" |
|
||||||
print(share_msg) |
|
||||||
if silver2coin: |
|
||||||
silver2coin_ret = self.silver2coin(session=session, bili_jct=bili_jct) |
|
||||||
if silver2coin_ret["code"] == 0: |
|
||||||
silver2coin_msg = f"成功将银瓜子兑换为1个硬币" |
|
||||||
else: |
|
||||||
silver2coin_msg = silver2coin_ret["message"] |
|
||||||
else: |
|
||||||
silver2coin_msg = f"未开启银瓜子兑换硬币功能" |
|
||||||
live_stats = self.live_status(session=session) |
|
||||||
uname, uid, is_login, new_coin, vip_type, new_current_exp = self.get_nav(session=session) |
|
||||||
reward_ret = self.reward(session=session) |
|
||||||
login = reward_ret.get("data", {}).get("login") |
|
||||||
watch_av = reward_ret.get("data", {}).get("watch_av") |
|
||||||
coins_av = reward_ret.get("data", {}).get("coins_av", 0) |
|
||||||
share_av = reward_ret.get("data", {}).get("share_av") |
|
||||||
today_exp = len([one for one in [login, watch_av, share_av] if one]) * 5 |
|
||||||
today_exp += coins_av |
|
||||||
update_data = (28800 - new_current_exp) // (today_exp if today_exp else 1) |
|
||||||
msg = ( |
|
||||||
f"帐号信息: {uname}\n漫画签到: {manhua_msg}\n直播签到: {live_msg}\n" |
|
||||||
f"登陆任务: 今日已登陆\n观看视频: {report_msg}\n分享任务: {share_msg}\n投币任务: {coin_msg}\n" |
|
||||||
f"银瓜子兑换硬币: {silver2coin_msg}\n今日获得经验: {today_exp}\n当前经验: {new_current_exp}\n" |
|
||||||
f"按当前速度升级还需: {update_data}天\n{live_stats}" |
|
||||||
) |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("BILIBILI_COOKIE_LIST", [])[0] |
|
||||||
res = BiliBiliCheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send('哔哩哔哩', res) |
|
@ -1,159 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 30 9 * * * |
|
||||||
new Env('天翼网盘'); |
|
||||||
""" |
|
||||||
# 修改来自于 https://github.com/MayoBlueSky/My-Actions/blob/master/function/cloud189/checkin.py |
|
||||||
import base64 |
|
||||||
import json |
|
||||||
import os |
|
||||||
import re |
|
||||||
import time |
|
||||||
|
|
||||||
import requests |
|
||||||
|
|
||||||
import rsa |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
|
|
||||||
class Cloud189CheckIn: |
|
||||||
def __init__(self, check_item: dict): |
|
||||||
self.check_item = check_item |
|
||||||
self.b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def int2char(a): |
|
||||||
return list("0123456789abcdefghijklmnopqrstuvwxyz")[a] |
|
||||||
|
|
||||||
def b64tohex(self, a): |
|
||||||
d = "" |
|
||||||
e = 0 |
|
||||||
c = 0 |
|
||||||
for i in range(len(a)): |
|
||||||
if list(a)[i] != "=": |
|
||||||
v = self.b64map.index(list(a)[i]) |
|
||||||
if 0 == e: |
|
||||||
e = 1 |
|
||||||
d += self.int2char(v >> 2) |
|
||||||
c = 3 & v |
|
||||||
elif 1 == e: |
|
||||||
e = 2 |
|
||||||
d += self.int2char(c << 2 | v >> 4) |
|
||||||
c = 15 & v |
|
||||||
elif 2 == e: |
|
||||||
e = 3 |
|
||||||
d += self.int2char(c) |
|
||||||
d += self.int2char(v >> 2) |
|
||||||
c = 3 & v |
|
||||||
else: |
|
||||||
e = 0 |
|
||||||
d += self.int2char(c << 2 | v >> 4) |
|
||||||
d += self.int2char(15 & v) |
|
||||||
if e == 1: |
|
||||||
d += self.int2char(c << 2) |
|
||||||
return d |
|
||||||
|
|
||||||
def rsa_encode(self, j_rsakey, string): |
|
||||||
rsa_key = f"-----BEGIN PUBLIC KEY-----\n{j_rsakey}\n-----END PUBLIC KEY-----" |
|
||||||
pubkey = rsa.PublicKey.load_pkcs1_openssl_pem(rsa_key.encode()) |
|
||||||
result = self.b64tohex((base64.b64encode(rsa.encrypt(f"{string}".encode(), pubkey))).decode()) |
|
||||||
return result |
|
||||||
|
|
||||||
def login(self, session, username, password): |
|
||||||
url = "https://cloud.189.cn/api/portal/loginUrl.action?redirectURL=https://cloud.189.cn/web/redirect.html" |
|
||||||
r = session.get(url=url) |
|
||||||
captchatoken = re.findall(r"captchaToken' value='(.+?)'", r.text)[0] |
|
||||||
lt = re.findall(r'lt = "(.+?)"', r.text)[0] |
|
||||||
returnurl = re.findall(r"returnUrl = '(.+?)'", r.text)[0] |
|
||||||
paramid = re.findall(r'paramId = "(.+?)"', r.text)[0] |
|
||||||
j_rsakey = re.findall(r'j_rsaKey" value="(\S+)"', r.text, re.M)[0] |
|
||||||
session.headers.update({"lt": lt}) |
|
||||||
|
|
||||||
username = self.rsa_encode(j_rsakey, username) |
|
||||||
password = self.rsa_encode(j_rsakey, password) |
|
||||||
url = "https://open.e.189.cn/api/logbox/oauth2/loginSubmit.do" |
|
||||||
headers = { |
|
||||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/76.0", |
|
||||||
"Referer": "https://open.e.189.cn/", |
|
||||||
} |
|
||||||
data = { |
|
||||||
"appKey": "cloud", |
|
||||||
"accountType": "01", |
|
||||||
"userName": f"{{RSA}}{username}", |
|
||||||
"password": f"{{RSA}}{password}", |
|
||||||
"validateCode": "", |
|
||||||
"captchaToken": captchatoken, |
|
||||||
"returnUrl": returnurl, |
|
||||||
"mailSuffix": "@189.cn", |
|
||||||
"paramId": paramid, |
|
||||||
} |
|
||||||
r = session.post(url, data=data, headers=headers, timeout=5) |
|
||||||
if r.json()["result"] == 0: |
|
||||||
redirect_url = r.json()["toUrl"] |
|
||||||
session.get(url=redirect_url) |
|
||||||
return True |
|
||||||
else: |
|
||||||
return "登陆状态: " + r.json()["msg"] |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def sign(session): |
|
||||||
rand = str(round(time.time() * 1000)) |
|
||||||
surl = f"https://api.cloud.189.cn/mkt/userSign.action?rand={rand}&clientType=TELEANDROID&version=8.6.3&model=SM-G930K" |
|
||||||
url = "https://m.cloud.189.cn/v2/drawPrizeMarketDetails.action?taskId=TASK_SIGNIN&activityId=ACT_SIGNIN" |
|
||||||
url2 = "https://m.cloud.189.cn/v2/drawPrizeMarketDetails.action?taskId=TASK_SIGNIN_PHOTOS&activityId=ACT_SIGNIN" |
|
||||||
headers = { |
|
||||||
"User-Agent": "Mozilla/5.0 (Linux; Android 5.1.1; SM-G930K Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36 Ecloud/8.6.3 Android/22 clientId/355325117317828 clientModel/SM-G930K imsi/460071114317824 clientChannelId/qq proVersion/1.0.6", |
|
||||||
"Referer": "https://m.cloud.189.cn/zhuanti/2016/sign/index.jsp?albumBackupOpened=1", |
|
||||||
"Host": "m.cloud.189.cn", |
|
||||||
"Accept-Encoding": "gzip, deflate", |
|
||||||
} |
|
||||||
response = session.get(url=surl, headers=headers) |
|
||||||
netdiskbonus = response.json().get("netdiskBonus") |
|
||||||
if response.json().get("isSign") == "false": |
|
||||||
msg = f"签到结果: 未签到,签到获得 {netdiskbonus}M 空间" |
|
||||||
else: |
|
||||||
msg = f"签到结果: 已经签到过了,签到获得 {netdiskbonus}M 空间" |
|
||||||
response = session.get(url=url, headers=headers) |
|
||||||
if "errorCode" in response.text: |
|
||||||
msg += f"\n第一次抽奖: {response.json().get('errorCode')}" |
|
||||||
else: |
|
||||||
description = response.json().get("description", "") |
|
||||||
if description in ["1", 1]: |
|
||||||
description = "50M空间" |
|
||||||
msg += f"\n第一次抽奖: 获得{description}" |
|
||||||
response = session.get(url=url2, headers=headers) |
|
||||||
if "errorCode" in response.text: |
|
||||||
msg += f"\n第二次抽奖: {response.json().get('errorCode')}" |
|
||||||
else: |
|
||||||
description = response.json().get("description", "") |
|
||||||
if description in ["1", 1]: |
|
||||||
description = "50M空间" |
|
||||||
msg += f"\n第二次抽奖: 获得{description}" |
|
||||||
return msg |
|
||||||
|
|
||||||
def main(self): |
|
||||||
cloud189_phone = self.check_item.get("cloud189_phone") |
|
||||||
cloud189_password = self.check_item.get("cloud189_password") |
|
||||||
session = requests.Session() |
|
||||||
flag = self.login(session=session, username=cloud189_phone, password=cloud189_password) |
|
||||||
if flag is True: |
|
||||||
sign_msg = self.sign(session=session) |
|
||||||
else: |
|
||||||
sign_msg = flag |
|
||||||
msg = f"帐号信息: {cloud189_phone}\n{sign_msg}" |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
def start(): |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("CLOUD189_ACCOUNT_LIST", [])[0] |
|
||||||
res = Cloud189CheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send('天翼网盘', res) |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
start() |
|
@ -1,63 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 30 10 * * * |
|
||||||
new Env('CSDN'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
import requests |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
|
|
||||||
class CSDNCheckIn: |
|
||||||
def __init__(self, check_item): |
|
||||||
self.check_item = check_item |
|
||||||
self.headers = { |
|
||||||
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_2) AppleWebKit/537.36 (KHTML, like Gecko) " |
|
||||||
"Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74", |
|
||||||
} |
|
||||||
|
|
||||||
def sign(self, cookies): |
|
||||||
response = requests.get( |
|
||||||
url="https://me.csdn.net/api/LuckyDraw_v2/signIn", headers=self.headers, cookies=cookies |
|
||||||
).json() |
|
||||||
if response.get("code") == 200: |
|
||||||
msg = response.get("data").get("msg") |
|
||||||
else: |
|
||||||
msg = "签到失败" |
|
||||||
print(response) |
|
||||||
return msg |
|
||||||
|
|
||||||
def draw(self, cookies): |
|
||||||
response = requests.get( |
|
||||||
url="https://me.csdn.net/api/LuckyDraw_v2/goodluck", headers=self.headers, cookies=cookies |
|
||||||
).json() |
|
||||||
if response.get("code") == 200: |
|
||||||
msg = response.get("data").get("msg") |
|
||||||
else: |
|
||||||
msg = "抽奖失败" |
|
||||||
return msg |
|
||||||
|
|
||||||
def main(self): |
|
||||||
csdn_cookie = { |
|
||||||
item.split("=")[0]: item.split("=")[1] for item in self.check_item.get("csdn_cookie").split("; ") |
|
||||||
} |
|
||||||
try: |
|
||||||
user_name = csdn_cookie.get("UserName", "") |
|
||||||
except Exception as e: |
|
||||||
print(f"获取用户信息失败: {e}") |
|
||||||
user_name = "未获取到用户信息" |
|
||||||
sign_msg = self.sign(cookies=csdn_cookie) |
|
||||||
draw_msg = self.draw(cookies=csdn_cookie) |
|
||||||
msg = f"帐号信息: {user_name}\n签到信息: {sign_msg}\n抽奖结果: {draw_msg}" |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("CSDN_COOKIE_LIST", [])[0] |
|
||||||
res = CSDNCheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send("CSDN", res) |
|
@ -1,368 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 30 20 * * * |
|
||||||
new Env('多看阅读'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
import time |
|
||||||
import requests |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
|
|
||||||
class DuoKanCheckIn: |
|
||||||
def __init__(self, check_item): |
|
||||||
self.check_item = check_item |
|
||||||
self.gift_code_list = [ |
|
||||||
"d16ad58199c69518a4afd87b5cf0fe67", |
|
||||||
"828672d6bc39ccd25e1f6ad34e00b86c", |
|
||||||
"f0ccc1bb1cecea673c197b928fb8dbd9", |
|
||||||
"6b86c490d92a138de9a0ae6847781caa", |
|
||||||
"c707047e8b820ba441d29cf87dff341e", |
|
||||||
"82b2c012a956b18cff2388d24f2574a6", |
|
||||||
"87d6b5183a361ee1f6ea8cece1ee83c3", |
|
||||||
"9d42576f7e99c94bb752fde06e6770a5", |
|
||||||
"e58d1f67a82a539d9331baaa3785a943", |
|
||||||
"52c95192ebcb1d0113a748df58a72055", |
|
||||||
"511f33e481fe4504d2637aaf6cbbbaff", |
|
||||||
"6e986f36f4a45cadf61d2f246b27cdc6", |
|
||||||
"f27797a6a1d7fe495b0f4de05f799327", |
|
||||||
"4bd335e899fa665f15eea2f215156321", |
|
||||||
"9355df762183f084473432b5c6900c44", |
|
||||||
"4fb21fb04cbbae9d65556c3958603674", |
|
||||||
"2d02ceb4f1bc916510c7407ce4eca5a5", |
|
||||||
"ef314bf665af0b51294e624244acd7d6", |
|
||||||
"1b441a2ab8e9e7dcf11a55b85931132f", |
|
||||||
"005d2345782ab456e5af167336b70623", |
|
||||||
"51ac508a4d494654035f17f1d646779b", |
|
||||||
"0f6579670f1081f1bcba89dd64645b48", |
|
||||||
"0cd858abe26f0d3db561185fe26bbb75", |
|
||||||
"b5f5fd5b47fd587cb003807e97bed783", |
|
||||||
"6ac9509a5cb799efeb1bb877c505f7e3", |
|
||||||
"b5dd986ffc84762429901ffe633d82a0", |
|
||||||
"f98a436cc2c85943d23d986a8d84c3bd", |
|
||||||
"6fc387f2a17b8564ca212e2b16544cc3", |
|
||||||
"12ead6a62411402378c6311199a0b2ef", |
|
||||||
"7d8dcf31e2e69fcf6bd8af4f48831e92", |
|
||||||
"446c3d0303b0dbd6bc2157844f1222ad", |
|
||||||
"439890227d823ff57bed8ad351fa1b75", |
|
||||||
"645acf3107722ab26b9d3194ecd156ff", |
|
||||||
"afcb41dd9bc54d752c26ace985b49960", |
|
||||||
"1100ab94ccd2e8373af70326c194d8ea", |
|
||||||
"373d73c0c0975cf959eb4c40dc82b27c", |
|
||||||
"2167ac28833149e9ad4ca217bcfa1a62", |
|
||||||
"80547afccc42f34e4c8c4083e00a41a6", |
|
||||||
"b604dda473644bd8157bafdf4ae518dc", |
|
||||||
"15eaa8f727b595d512b82f55364b53b9", |
|
||||||
"8fb656937fd613ccbbcacdc384595b03", |
|
||||||
"dd8410da0b5144ba4aba5a618723b72e", |
|
||||||
"204208386b056a2288e541110bfeeec3", |
|
||||||
"c5b2e7344efd4128bcab5840fa427103", |
|
||||||
"0168601e4335095c502e2e550ca53114", |
|
||||||
"dfa12fe056a8deee35da18613173560f", |
|
||||||
"ed945efdef9c7b2de41249a4fed3945e", |
|
||||||
"b9ece5964ab62d51f8b70ffd35191e9d", |
|
||||||
"f0e0ca4ca0b8afd766821a4922a2873c", |
|
||||||
"5c687b8c6bd641f3f2c0d6aaeceafff6", |
|
||||||
"c983be6420027231d77b748f9d02c1f2", |
|
||||||
"7c53358df8156d979cb6cbb74e15877b", |
|
||||||
"a58058035f73628a7c0847c66c350e88", |
|
||||||
"79dd039ca5cf401993801710f9900d6b", |
|
||||||
"5aff116c2cec01fcc69b389034f456a2", |
|
||||||
"d006927cd9bfd620a6af4f76ee3c4100", |
|
||||||
"410fe62830eeb91ca48be24ffe596364", |
|
||||||
"9d18226ff144a72812d0104ce59fb34e", |
|
||||||
"de439c7f75ca80b1d5b8aba619ee200d", |
|
||||||
"00d1a0479590793294bfdd5c427643aa", |
|
||||||
"d57176b1ce88135243bd501e448b8559", |
|
||||||
"7c500eff681637b97dd526bb11737abb", |
|
||||||
"3e197e47aaac926ccd50c37eb2828311", |
|
||||||
"7db084ea5987f841ad77240bcbb8ce54", |
|
||||||
"cce74f0facc50d47c0dd0e3e2f7435fb", |
|
||||||
"f8bb53fbeb9b2d45db8aca1401817599", |
|
||||||
"5baf7f0f355db11eeb0e936b675cdb82", |
|
||||||
"4478a3354de6bcd7e91b49e28a2b2b3f", |
|
||||||
"66a0338d93af82e956122288b08d2b4b", |
|
||||||
"9f598b2b1c9cd0f2b20e335831cce366", |
|
||||||
"9f4a45fec88b2820653abba179759eb6", |
|
||||||
"41086649c9a39ec977ba42f9ce81f828", |
|
||||||
"06ccca6fd73a6e38f65638ab8abbab76", |
|
||||||
"0cfa0a034a203bb3a22be499e74906f4", |
|
||||||
"c0d1da35a8878b7e4dcdf44bf3cd6b96", |
|
||||||
"f34921e16f6518c1149cc083bd8e1ad7", |
|
||||||
"ed0be3c70075d1d8f1a412f9e59a12e7", |
|
||||||
"eb4d6324bae7db952bd220cb4d57a3de", |
|
||||||
"5ba65d9f8ad735681b594f5092f6ab37", |
|
||||||
"2fa6e0b612962937edb37ed7043923fd", |
|
||||||
"baa8268c7d85d793011c5f5b977f8d4b", |
|
||||||
"f4842a465e4583646abf7df67d8e2915", |
|
||||||
"12c6332c8c9ded3d58d45f2dae7de8da", |
|
||||||
"f56609232205692acf6b6a5d337b0965", |
|
||||||
"3e4eed15387843c668fba53641599d07", |
|
||||||
"d1b9d9ede145b5d426130986245cb66e", |
|
||||||
"2979e43f6ab786f5d68cc262105f3c45", |
|
||||||
"118a18ed578c78f4855b416f8271b29a", |
|
||||||
"9122e158d034f094627c70ed6c3d0c33", |
|
||||||
"dd5413c17253e86cc4247984f3bb77e5", |
|
||||||
"b36bb0124b962efccbb601486665ce9e", |
|
||||||
"6afb3a719f8b0a0b2f744b3dad8b15ab", |
|
||||||
"faf18d64268402ed2975a3f60bc9e651", |
|
||||||
"9f4081944d4ca3fa7b831d7c3b6c289d", |
|
||||||
"367d7a3d77a9f96cbd7903b33c30b61f", |
|
||||||
"605276cf621ff9ba34a99e3675a006f6", |
|
||||||
"a50a734c1a3a749918e20205505ef91d", |
|
||||||
"271ff14ba5edfe89a80a3430227bc11b", |
|
||||||
"3bae338062b4bb3a5087eb13cbcc6efe", |
|
||||||
"9b443d60178a9bcb08bae62c41970abf", |
|
||||||
"a4f6e97741054f3567ab6a7257c63ab1", |
|
||||||
"e06a82cc1f05eda4947e5fa0927d89c5", |
|
||||||
"4fa3b4fc274c283efb02c0a1ddd133e7", |
|
||||||
"4aa59e16a3961ed1ebd12b7f15d79547", |
|
||||||
"f75fe88eaa24fc28ac57d963d8b90f2d", |
|
||||||
"42cbe52b6f74761a5a7a79bf370c30ef", |
|
||||||
"7d4571b5c9710e3b5481330bc7123ecc", |
|
||||||
"fcf2f7ec42086809991de5aed5e7ef0d", |
|
||||||
"bb7de9aaf68a83ac1ddbe75ba913b8af", |
|
||||||
"a9bd964b97e785fffb641edb9b402d3f", |
|
||||||
"6a815be6f537b2351e947ed66f74e209", |
|
||||||
"27ae4e4d71395c6255bf7ea57c496507", |
|
||||||
"2b07f369e90f4fc34ef419d891a2906f", |
|
||||||
"7a2dc8a5b3fc0c7ecddb97ed1ce2c833", |
|
||||||
"e7ad152ef27beb80c5d343f41f885b21", |
|
||||||
"ba21758aed15a3a20a27f63bc0d84626", |
|
||||||
"3820f7b8e1ece2614a11264501b5c93e", |
|
||||||
"c3c41c87e6bf752f5237b4fffa33f08b", |
|
||||||
"ed21086ff6682ab8495ecbfbb697af4a", |
|
||||||
"5a2585ff3524f319dfd1f6b735c9a18d", |
|
||||||
"0e61444507f0a780a1c83b612eb5fb9b", |
|
||||||
"b105aa5c696648c0f7aae9e3933f8fe0", |
|
||||||
"fec8f729e9e1d02248b949ce17674e0c", |
|
||||||
"d3323d5560d15d4bc03575dcd0f53ae9", |
|
||||||
"15fbf9d24dd05d9d64a18a8fd28f4dcc", |
|
||||||
"ac0f3bda53081eee547882b2cdc8b04f", |
|
||||||
"5dd3fadcd4ea6b922e1462431966c2bf", |
|
||||||
"4acb71816dad0ce9a53d8fee301d857c", |
|
||||||
"4c7e173f3a046919587db5b2640896e7", |
|
||||||
"8407dc0459d0b367eaced7e5dfdef8ed", |
|
||||||
"17e02409659223ff4e32cabd9ad352d9", |
|
||||||
"c49edc07086b27769eddb981359f56b2", |
|
||||||
"344822f5d8d53fe9aa7a1c7328cd2c59", |
|
||||||
"92259343c65ac0feab5cb56b2e851783", |
|
||||||
"e1e537b0bd37091c0ba4d5f614af9160", |
|
||||||
"dff1116c175ddaaa20f3985a3d88abc6", |
|
||||||
"3b1131a7c7273aa61cbd71b044e9beca", |
|
||||||
"431aab37ef168c383f078b9244008cee", |
|
||||||
"96c3bb8355d7e3ed7265095374f1c090", |
|
||||||
"c3a7d304cdb307f073bef5003d1b8b78", |
|
||||||
"627d884fc905cc353d0028076e39846b", |
|
||||||
"36ce0d88a6bb2d10e0dc0a697f64df4e", |
|
||||||
"dc8dbd035d42a5d8170976d5f532dab0", |
|
||||||
"01c2665e7ea15bc56cca6d955c2e8ae1", |
|
||||||
"c54ae7eeedc87ac52249684f012d3805", |
|
||||||
"2df9b3b8f21a682b20d9d77669087a7a", |
|
||||||
"fded473150a783586c12692fd57d0825", |
|
||||||
"580499e69f42c0ccba0d1f87a83e41e9", |
|
||||||
"99433cb83f1cd7176b7cdeaa7be49cd8", |
|
||||||
"fbd76e8265547376905b3b6004150064", |
|
||||||
"362768496052ae0dfbe909a9b5c6f54e", |
|
||||||
"4f33581089c90944e5ad950646b17712", |
|
||||||
"bffe93cdfe4b8833190e0a59c779e027", |
|
||||||
"78e042b792c3af7faf7a6ebfedf6af9e", |
|
||||||
"51a59c881726c2887efe9752bd9db715", |
|
||||||
"a46ecf03d3f4038ba3de4ae4ac28170f", |
|
||||||
"48d025f7cc34ac29c21d03b2c1f36449", |
|
||||||
"8c9ceb77d61c20cb96ee652eb7b838c9", |
|
||||||
"47a5882c89671429ae532339b7f333ce", |
|
||||||
"a0b735557416ff3d08d3d8440393061a", |
|
||||||
"976d3b3a8fbdf33d525075a9288455ab", |
|
||||||
"636ca4c1db1c4450431ecd7e10a5e671", |
|
||||||
"8c5cd12180027ee6535a837bd4f0259a", |
|
||||||
"b82315333974c76793b3c7f517fe977c", |
|
||||||
"6143d1f3472cd7cf08e3780918019158", |
|
||||||
"20d032426fd66d49bec4f99579252cfa", |
|
||||||
"398ee715d1dfd058a912bc7768d35f82", |
|
||||||
"1f678678966444fb53d118b8134ceb94", |
|
||||||
"d6641f3ed9444eae2b77ba68d3552f6a", |
|
||||||
"ab2babaa19539895a5285c1ded6de8c6", |
|
||||||
"5bc61d3cd53582b859db9cf04fc7e250", |
|
||||||
"5deb619ed27c2754df4f9c7e3ce16b82", |
|
||||||
"b81a322830fee59c75985626f7e0a8b5", |
|
||||||
"e2313ad53d58e181c5fbaef29e5772c3", |
|
||||||
"70d2aa99ef48b6cf1c0e8c107c0e121d", |
|
||||||
"0633cdb06253a2b11e9a9ca234a3e9c3", |
|
||||||
"bd1cbb9764fba94e8f1c0d1c024487af", |
|
||||||
"301cbdbf26210596f9b22123abff0ca8", |
|
||||||
"1fc2448ee192a1d0806ae1eb6fcc81fe", |
|
||||||
"306247030d0b6442c3ded42e9ca99872", |
|
||||||
"1c8f9a0786a01db1d06989345887967e", |
|
||||||
"256ec3a54aaae719aae88d8f9c7f9b5f", |
|
||||||
"45645896cccec48191916fec482979d9", |
|
||||||
"c3a19c728d6fd39925bd63abe15aa446", |
|
||||||
"15f45c4cd8fd4a6c0a3fae14ccafff47", |
|
||||||
"a082c46b09772739af41f01676e1d0d1", |
|
||||||
"14928418f94f5d35b182001ae0160455", |
|
||||||
"dfbc5bc946c72650adaaf570f11a1e80", |
|
||||||
"8a312e3e30d2e8fd1cf8873c3abe1d8c", |
|
||||||
"ef425403acaabfb2a5b3f6ab0aafce8c", |
|
||||||
"c78d471822dd961a53afe23e6c2dfa61", |
|
||||||
"a40f670d8de3784b54784daf63095d88", |
|
||||||
"49a72ace7fd54d8d0833bb2590db58aa", |
|
||||||
"38e3808d28de73af3578f6d64020e1fc", |
|
||||||
"a8be6ab39263d2edf61acafc60949921", |
|
||||||
"d9c16bf0032800916e948ea26624a253", |
|
||||||
"dbf3a62ff403c3ba94d5ab1e6219f5bc", |
|
||||||
"3a6415de684e2978ce17543d66d523f6", |
|
||||||
"2f69a681ee1ff927df1bdbd5431ced1d", |
|
||||||
"e55c0390872735ec285dad8ebdd939e0", |
|
||||||
] |
|
||||||
self.code_list = [ |
|
||||||
"K7S36GFSZC", |
|
||||||
"A2AMBFHP6C", |
|
||||||
"K5HHKUU14D", |
|
||||||
"J18UK6YYAY", |
|
||||||
"1BJGW140U5", |
|
||||||
] |
|
||||||
self.headers = {"Content-Type": "application/x-www-form-urlencoded; charset=utf-8"} |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def get_data(cookies): |
|
||||||
device_id = cookies.get("device_id") |
|
||||||
t = int(time.time()) |
|
||||||
t_device_id = f"{device_id}&{t}" |
|
||||||
c = 0 |
|
||||||
for index, one in enumerate(t_device_id): |
|
||||||
c = (c * 131 + ord(one)) % 65536 |
|
||||||
data = f"_t={t}&_c={c}" |
|
||||||
return data |
|
||||||
|
|
||||||
def sign(self, cookies): |
|
||||||
url = "https://www.duokan.com/checkin/v0/checkin" |
|
||||||
data = self.get_data(cookies=cookies) |
|
||||||
response = requests.post(url=url, data=data, cookies=cookies, headers=self.headers) |
|
||||||
result = response.json() |
|
||||||
msg = result.get("msg") |
|
||||||
return msg |
|
||||||
|
|
||||||
def info(self, cookies): |
|
||||||
url = "https://www.duokan.com/store/v0/award/coin/list" |
|
||||||
data = f"sandbox=0&{self.get_data(cookies=cookies)}&withid=1" |
|
||||||
response = requests.post(url=url, data=data, cookies=cookies, headers=self.headers) |
|
||||||
result = response.json() |
|
||||||
if "尚未登录" not in result.get("msg"): |
|
||||||
coin = sum([one.get('coin') for one in result.get("data", {}).get("award")]) |
|
||||||
msg = f"当前书豆: {coin}\n" + "\n".join( |
|
||||||
[f"{one.get('expire')} 到期,{one.get('coin')} 书豆" for one in result.get("data", {}).get("award")]) |
|
||||||
return msg |
|
||||||
else: |
|
||||||
return "账号异常: Cookie 失效" |
|
||||||
|
|
||||||
def free(self, cookies): |
|
||||||
url = "https://www.duokan.com/hs/v4/channel/query/2027" |
|
||||||
response = requests.get(url=url, cookies=cookies, headers=self.headers) |
|
||||||
bid = response.json().get("items")[0].get("data").get("book_id") |
|
||||||
data = f"payment_name=BC&ch=VSZUVB&book_id={bid}&price=0&allow_discount=1" |
|
||||||
free_url = "https://www.duokan.com/store/v0/payment/book/create" |
|
||||||
response = requests.post(url=free_url, data=data, cookies=cookies, headers=self.headers) |
|
||||||
result = response.json() |
|
||||||
if "尚未登录" not in result.get("msg"): |
|
||||||
book_title = result.get("book").get("title") |
|
||||||
book_msg = result.get("msg") |
|
||||||
msg = f"今日限免: {book_title} · {book_msg}" |
|
||||||
return msg |
|
||||||
else: |
|
||||||
return "今日限免: Cookie 失效" |
|
||||||
|
|
||||||
def gift(self, cookies): |
|
||||||
url = "https://www.duokan.com/events/common_task_gift_check" |
|
||||||
data = f"code=KYKJF7LL0G&{self.get_data(cookies=cookies)}&withid=1" |
|
||||||
response = requests.post(url=url, data=data, cookies=cookies, headers=self.headers) |
|
||||||
result = response.json() |
|
||||||
if result.get("chances") == 0: |
|
||||||
msg = "体验任务: 已经做完啦" |
|
||||||
elif result.get("chances"): |
|
||||||
num = 0 |
|
||||||
for gift_code in self.gift_code_list: |
|
||||||
url = "https://www.duokan.com/events/common_task_gift" |
|
||||||
data = f"code=KYKJF7LL0G&chances=1&sign={gift_code}&{self.get_data(cookies=cookies)}&withid=1" |
|
||||||
response = requests.post(url=url, data=data, cookies=cookies, headers=self.headers) |
|
||||||
result = response.json() |
|
||||||
if result.get("msg") == "成功": |
|
||||||
num += 30 |
|
||||||
print("体验任务完成啦!豆子 +30") |
|
||||||
else: |
|
||||||
print(result.get("data")) |
|
||||||
msg = f"体验任务: 获得 {num} 豆子" |
|
||||||
else: |
|
||||||
msg = f"体验任务: {response.text}" |
|
||||||
return msg |
|
||||||
|
|
||||||
def add_draw(self, cookies): |
|
||||||
success_count = 0 |
|
||||||
for one in range(6): |
|
||||||
url = "https://www.duokan.com/store/v0/event/chances/add" |
|
||||||
data = f"code=8ulcky4bknbe_f&count=1&{self.get_data(cookies=cookies)}&withid=1" |
|
||||||
response = requests.post(url=url, data=data, cookies=cookies, headers=self.headers) |
|
||||||
result = response.json() |
|
||||||
if result.get("result") == 0: |
|
||||||
success_count += 1 |
|
||||||
msg = f"添加抽奖: {success_count} 次" |
|
||||||
return msg |
|
||||||
|
|
||||||
def draw(self, cookies): |
|
||||||
success_count = 0 |
|
||||||
for one in range(6): |
|
||||||
url = "https://www.duokan.com/store/v0/event/drawing" |
|
||||||
data = f"code=8ulcky4bknbe_f&{self.get_data(cookies=cookies)}&withid=1" |
|
||||||
response = requests.post(url=url, data=data, cookies=cookies, headers=self.headers) |
|
||||||
result = response.json() |
|
||||||
if result.get("result") == 0: |
|
||||||
success_count += 1 |
|
||||||
msg = f"成功抽奖: {success_count} 次" |
|
||||||
return msg |
|
||||||
|
|
||||||
def download(self, cookies): |
|
||||||
url = "https://www.duokan.com/events/common_task_gift" |
|
||||||
data = f"code=J18UK6YYAY&chances=17&{self.get_data(cookies=cookies)}&withid=1" |
|
||||||
response = requests.post(url=url, data=data, cookies=cookies, headers=self.headers) |
|
||||||
result = response.json() |
|
||||||
msg = "下载任务: " + result.get("msg") |
|
||||||
return msg |
|
||||||
|
|
||||||
def task(self, cookies): |
|
||||||
success_count = 0 |
|
||||||
url = "https://www.duokan.com/events/tasks_gift" |
|
||||||
for code in self.code_list: |
|
||||||
data = f"code={code}&chances=3&{self.get_data(cookies=cookies)}&withid=1" |
|
||||||
response = requests.post(url=url, data=data, cookies=cookies, headers=self.headers) |
|
||||||
result = response.json() |
|
||||||
if result.get("result") == 0: |
|
||||||
success_count += 1 |
|
||||||
return f"其他任务: 完成 {success_count} 个" |
|
||||||
|
|
||||||
def main(self): |
|
||||||
duokan_cookie = { |
|
||||||
item.split("=")[0]: item.split("=")[1] for item in self.check_item.get("duokan_cookie").split("; ") |
|
||||||
} |
|
||||||
sign_msg = self.sign(cookies=duokan_cookie) |
|
||||||
free_msg = self.free(cookies=duokan_cookie) |
|
||||||
gift_msg = self.gift(cookies=duokan_cookie) |
|
||||||
add_draw_msg = self.add_draw(cookies=duokan_cookie) |
|
||||||
draw_msg = self.draw(cookies=duokan_cookie) |
|
||||||
download_msg = self.download(cookies=duokan_cookie) |
|
||||||
task_msg = self.task(cookies=duokan_cookie) |
|
||||||
info_msg = self.info(cookies=duokan_cookie) |
|
||||||
msg = ( |
|
||||||
f"每日签到: {sign_msg}\n{free_msg}\n{gift_msg}\n" |
|
||||||
f"{add_draw_msg}\n{draw_msg}\n{download_msg}\n{task_msg}\n{info_msg}" |
|
||||||
) |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("DUOKAN_COOKIE_LIST", [])[2] |
|
||||||
res = DuoKanCheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send("多看阅读",res) |
|
@ -1,104 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 30 14 * * * |
|
||||||
new Env('米家'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
import requests |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
|
|
||||||
class FMAPPCheckIn: |
|
||||||
def __init__(self, check_item): |
|
||||||
self.check_item = check_item |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def sign(headers): |
|
||||||
try: |
|
||||||
url = "https://fmapp.chinafamilymart.com.cn/api/app/market/member/signin/sign" |
|
||||||
response = requests.post(url=url, headers=headers).json() |
|
||||||
code = response.get("code") |
|
||||||
if code == "200": |
|
||||||
data = response.get("data", {}) |
|
||||||
msg = ( |
|
||||||
f"在坚持{data.get('nextDay')}天即可获得{data.get('nextNumber')}个发米粒\n" |
|
||||||
f"签到{data.get('lastDay')}天可获得{data.get('lastNumber')}个发米粒" |
|
||||||
) |
|
||||||
else: |
|
||||||
msg = response.get("message") |
|
||||||
except Exception as e: |
|
||||||
print("错误信息", str(e)) |
|
||||||
msg = "未知错误,检查日志" |
|
||||||
return msg |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def user_info(headers): |
|
||||||
try: |
|
||||||
url = "https://fmapp.chinafamilymart.com.cn/api/app/member/info" |
|
||||||
response = requests.post(url=url, headers=headers).json() |
|
||||||
code = response.get("code") |
|
||||||
if code == "200": |
|
||||||
data = response.get("data", {}) |
|
||||||
msg = data.get("nickName") |
|
||||||
else: |
|
||||||
msg = response.get("message") |
|
||||||
except Exception as e: |
|
||||||
print("错误信息", str(e)) |
|
||||||
msg = "未知错误,检查日志" |
|
||||||
return msg |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def mili_count(headers): |
|
||||||
try: |
|
||||||
url = "https://fmapp.chinafamilymart.com.cn/api/app/member/v1/mili/service/detail" |
|
||||||
response = requests.post(url=url, headers=headers, data=json.dumps({"pageSize": 10, "pageNo": 1})).json() |
|
||||||
code = response.get("code") |
|
||||||
if code == "200": |
|
||||||
data = response.get("data", {}) |
|
||||||
msg = data.get("miliNum") |
|
||||||
else: |
|
||||||
msg = response.get("message") |
|
||||||
except Exception as e: |
|
||||||
print("错误信息", str(e)) |
|
||||||
msg = "未知错误,检查日志" |
|
||||||
return msg |
|
||||||
|
|
||||||
def main(self): |
|
||||||
fmapp_token = self.check_item.get("fmapp_token") |
|
||||||
fmapp_cookie = self.check_item.get("fmapp_cookie") |
|
||||||
fmapp_blackbox = self.check_item.get("fmapp_blackbox") |
|
||||||
fmapp_device_id = self.check_item.get("fmapp_device_id") |
|
||||||
fmapp_fmversion = self.check_item.get("fmapp_fmversion", "2.2.3") |
|
||||||
fmapp_os = self.check_item.get("fmapp_os", "ios") |
|
||||||
fmapp_useragent = self.check_item.get("fmapp_useragent", "Fa") |
|
||||||
headers = { |
|
||||||
"Accept": "*/*", |
|
||||||
"Accept-Language": "zh-Hans;q=1.0", |
|
||||||
"Accept-Encoding": "br;q=1.0, gzip;q=0.9, deflate;q=0.8", |
|
||||||
"Host": "fmapp.chinafamilymart.com.cn", |
|
||||||
"Content-Type": "application/json", |
|
||||||
"loginChannel": "app", |
|
||||||
"token": fmapp_token, |
|
||||||
"fmVersion": fmapp_fmversion, |
|
||||||
"deviceId": fmapp_device_id, |
|
||||||
"User-Agent": fmapp_useragent, |
|
||||||
"os": fmapp_os, |
|
||||||
"cookie": fmapp_cookie, |
|
||||||
"blackBox": fmapp_blackbox, |
|
||||||
} |
|
||||||
sign_msg = self.sign(headers=headers) |
|
||||||
name_msg = self.user_info(headers=headers) |
|
||||||
mili_msg = self.mili_count(headers=headers) |
|
||||||
msg = f"帐号信息: {name_msg}\n签到状态: {sign_msg}\n米粒数量: {mili_msg}" |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("FMAPP_ACCOUNT_LIST", [])[0] |
|
||||||
res = FMAPPCheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send("米家APP", res) |
|
@ -1,115 +0,0 @@ |
|||||||
""" |
|
||||||
|
|
||||||
建议cron: 30 7 * * * python3 ck_hlx.py |
|
||||||
new Env('葫芦侠签到'); |
|
||||||
|
|
||||||
""" |
|
||||||
import requests |
|
||||||
import os |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
import json |
|
||||||
r = requests.Session() |
|
||||||
|
|
||||||
|
|
||||||
def login(user, passwd): |
|
||||||
url = 'http://floor.huluxia.com/account/login/ANDROID/4.0?platform=2&gkey=000000&app_version=4.0.0.6.2' \ |
|
||||||
'&versioncode=20141433&market_id=floor_baidu&_key=&device_code=%5Bw%5D02%3A00%3A00%3A00%3A00%3A00 ' |
|
||||||
params = { |
|
||||||
'account': user, |
|
||||||
'login_type': '2', |
|
||||||
'password': passwd |
|
||||||
} |
|
||||||
login_res = r.post(url=url, data=params) |
|
||||||
login_res = login_res.json() |
|
||||||
nick = login_res['user']['nick'] |
|
||||||
key = login_res['_key'] |
|
||||||
s_key = login_res['session_key'] |
|
||||||
return nick, key, s_key |
|
||||||
|
|
||||||
|
|
||||||
def check(key): |
|
||||||
url1 = 'http://floor.huluxia.com/user/status/ANDROID/2.1' |
|
||||||
params = { |
|
||||||
'platform': '2', |
|
||||||
'gkey': '000000', |
|
||||||
'app_version': '4.0.0.6.3', |
|
||||||
'versioncode': '20141434', |
|
||||||
'market_id': 'floor_baidu', |
|
||||||
'_key': key, |
|
||||||
'device_code': '%5Bw%5D02%3A00%3A00%3A00%3A00%3A00', |
|
||||||
} |
|
||||||
check_req = r.get(url=url1, params=params) |
|
||||||
check_req = check_req.json() |
|
||||||
status = check_req['status'] |
|
||||||
if status == 0: |
|
||||||
raise Exception("令牌验证失败") |
|
||||||
elif status == 1: |
|
||||||
pass |
|
||||||
return status |
|
||||||
|
|
||||||
|
|
||||||
def category(key): |
|
||||||
global experienceVal |
|
||||||
titles = [] |
|
||||||
categoryIDs = [] |
|
||||||
category_url = 'http://floor.huluxia.com/category/list/ANDROID/2.0' |
|
||||||
params = { |
|
||||||
'platform': '2', |
|
||||||
'gkey': '000000', |
|
||||||
'app_version': '4.0.0.6.3', |
|
||||||
'versioncode': '20141434', |
|
||||||
'market_id': 'floor_huluxia', |
|
||||||
'_key': key, |
|
||||||
'device_code': '%5Bw%5D02%3A00%3A00%3A00%3A00%3A00', |
|
||||||
'is_hidden': '1' |
|
||||||
} |
|
||||||
category_res = r.get(url=category_url, params=params) |
|
||||||
category_res = category_res.json() |
|
||||||
category_res = category_res["categories"] |
|
||||||
for i in range(3, len(category_res)): |
|
||||||
res = category_res[i] |
|
||||||
titles.append(res['title']) |
|
||||||
categoryIDs.append(res['categoryID']) |
|
||||||
# print(res) |
|
||||||
url = f'http://floor.huluxia.com/user/signin/ANDROID/4.0' |
|
||||||
all_experienceVal = 0 |
|
||||||
for i in range(0, len(categoryIDs)): |
|
||||||
IDS = str(categoryIDs[i]) |
|
||||||
params = { |
|
||||||
'platform': '2', |
|
||||||
'gkey': '000000', |
|
||||||
'app_version': '4.0.0.6.3', |
|
||||||
'versioncode': '20141434', |
|
||||||
'market_id': 'floor_baidu', |
|
||||||
'_key': key, |
|
||||||
'device_code': '%5Bw%5D02%3A00%3A00%3A00%3A00%3A00', |
|
||||||
'cat_id': IDS |
|
||||||
} |
|
||||||
try: |
|
||||||
experienceVal = r.get(url=url, params=params).json()['experienceVal'] |
|
||||||
except: |
|
||||||
experienceVal = 0 |
|
||||||
finally: |
|
||||||
all_experienceVal = all_experienceVal + experienceVal |
|
||||||
return '签到成功 共获得{}点经验'.format(all_experienceVal) |
|
||||||
|
|
||||||
|
|
||||||
def hlx(user, passwd): |
|
||||||
nick, key, s_key = login(user, passwd) |
|
||||||
check(key) |
|
||||||
return "用户名:" + nick + category(key) |
|
||||||
|
|
||||||
|
|
||||||
def start(): |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("HLX", []) |
|
||||||
res = hlx(user=_check_item.get('user'),passwd=_check_item.get('password')) |
|
||||||
print(res) |
|
||||||
send('葫芦侠', res) |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__': |
|
||||||
start() |
|
@ -1,219 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 55 23 * * * |
|
||||||
new Env('爱奇艺'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
import os |
|
||||||
import re |
|
||||||
import time |
|
||||||
from urllib.parse import unquote |
|
||||||
|
|
||||||
import requests |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
|
|
||||||
class IQIYICheckIn: |
|
||||||
def __init__(self, check_item): |
|
||||||
self.check_item = check_item |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def parse_cookie(cookie): |
|
||||||
p00001 = re.findall(r"P00001=(.*?);", cookie)[0] |
|
||||||
p00002 = re.findall(r"P00002=(.*?);", cookie)[0] if re.findall(r"P00002=(.*?);", cookie) else "" |
|
||||||
p00003 = re.findall(r"P00003=(.*?);", cookie)[0] |
|
||||||
return p00001, p00002, p00003 |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def user_information(p00001): |
|
||||||
""" |
|
||||||
用户信息查询 |
|
||||||
""" |
|
||||||
time.sleep(3) |
|
||||||
url = "http://serv.vip.iqiyi.com/vipgrowth/query.action" |
|
||||||
params = {"P00001": p00001} |
|
||||||
res = requests.get(url=url, params=params).json() |
|
||||||
if res["code"] == "A00000": |
|
||||||
try: |
|
||||||
res_data = res.get("data", {}) |
|
||||||
level = res_data.get("level", 0) # VIP 等级 |
|
||||||
growthvalue = res_data.get("growthvalue", 0) # 当前 VIP 成长值 |
|
||||||
distance = res_data.get("distance", 0) # 升级需要成长值 |
|
||||||
deadline = res_data.get("deadline", "非 VIP 用户") # VIP 到期时间 |
|
||||||
today_growth_value = res_data.get("todayGrowthValue", 0) # 今日成长值 |
|
||||||
msg = ( |
|
||||||
f"VIP 等级: {level}\n当前成长值: {growthvalue}\n" |
|
||||||
f"升级需成长值: {distance}\n今日成长值: +{today_growth_value}\nVIP 到期时间: {deadline}" |
|
||||||
) |
|
||||||
except Exception as e: |
|
||||||
msg = str(e) |
|
||||||
print(msg) |
|
||||||
else: |
|
||||||
msg = res.get("msg") |
|
||||||
return msg |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def sign(p00001): |
|
||||||
""" |
|
||||||
VIP 签到 |
|
||||||
""" |
|
||||||
url = "https://tc.vip.iqiyi.com/taskCenter/task/queryUserTask" |
|
||||||
params = {"P00001": p00001, "autoSign": "yes"} |
|
||||||
res = requests.get(url=url, params=params).json() |
|
||||||
if res["code"] == "A00000": |
|
||||||
try: |
|
||||||
growth = res["data"]["signInfo"]["data"]["rewardMap"]["growth"] |
|
||||||
continue_sign_days_sum = res["data"]["signInfo"]["data"]["continueSignDaysSum"] |
|
||||||
reward_day = ( |
|
||||||
7 if continue_sign_days_sum % 28 <= 7 else (14 if continue_sign_days_sum % 28 <= 14 else 28) |
|
||||||
) |
|
||||||
rouund_day = 28 if continue_sign_days_sum % 28 == 0 else continue_sign_days_sum % 28 |
|
||||||
msg = f"+{growth}成长值\n连续签到: {continue_sign_days_sum}天\n签到周期: {rouund_day}天/{reward_day}天" |
|
||||||
except Exception as e: |
|
||||||
print(e) |
|
||||||
msg = res["data"]["signInfo"].get("msg") |
|
||||||
else: |
|
||||||
msg = res.get("msg") |
|
||||||
return msg |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def query_user_task(p00001): |
|
||||||
""" |
|
||||||
获取 VIP 日常任务 和 taskCode(任务状态) |
|
||||||
""" |
|
||||||
url = "https://tc.vip.iqiyi.com/taskCenter/task/queryUserTask" |
|
||||||
params = {"P00001": p00001} |
|
||||||
task_list = [] |
|
||||||
res = requests.get(url=url, params=params).json() |
|
||||||
if res["code"] == "A00000": |
|
||||||
for item in res["data"]["tasks"]["daily"]: |
|
||||||
task_list.append( |
|
||||||
{ |
|
||||||
"name": item["name"], |
|
||||||
"taskCode": item["taskCode"], |
|
||||||
"status": item["status"], |
|
||||||
"taskReward": item["taskReward"]["task_reward_growth"], |
|
||||||
} |
|
||||||
) |
|
||||||
return task_list |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def join_task(p00001, task_list): |
|
||||||
""" |
|
||||||
遍历完成任务 |
|
||||||
""" |
|
||||||
url = "https://tc.vip.iqiyi.com/taskCenter/task/joinTask" |
|
||||||
params = {"P00001": p00001, "taskCode": "", "platform": "bb136ff4276771f3", "lang": "zh_CN"} |
|
||||||
for item in task_list: |
|
||||||
if item["status"] == 2: |
|
||||||
params["taskCode"] = item["taskCode"] |
|
||||||
requests.get(url=url, params=params) |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def get_task_rewards(p00001, task_list): |
|
||||||
""" |
|
||||||
获取任务奖励 |
|
||||||
:return: 返回信息 |
|
||||||
""" |
|
||||||
url = "https://tc.vip.iqiyi.com/taskCenter/task/getTaskRewards" |
|
||||||
params = {"P00001": p00001, "taskCode": "", "platform": "bb136ff4276771f3", "lang": "zh_CN"} |
|
||||||
growth_task = 0 |
|
||||||
for item in task_list: |
|
||||||
if item["status"] == 0: |
|
||||||
params["taskCode"] = item.get("taskCode") |
|
||||||
requests.get(url=url, params=params) |
|
||||||
elif item["status"] == 4: |
|
||||||
requests.get(url="https://tc.vip.iqiyi.com/taskCenter/task/notify", params=params) |
|
||||||
params["taskCode"] = item.get("taskCode") |
|
||||||
requests.get(url=url, params=params) |
|
||||||
elif item["status"] == 1: |
|
||||||
growth_task += item["taskReward"] |
|
||||||
msg = f"+{growth_task}成长值" |
|
||||||
return msg |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def draw(draw_type, p00001, p00003): |
|
||||||
""" |
|
||||||
查询抽奖次数(必),抽奖 |
|
||||||
:param draw_type: 类型。0 查询次数;1 抽奖 |
|
||||||
:param p00001: 关键参数 |
|
||||||
:param p00003: 关键参数 |
|
||||||
:return: {status, msg, chance} |
|
||||||
""" |
|
||||||
url = "https://iface2.iqiyi.com/aggregate/3.0/lottery_activity" |
|
||||||
params = { |
|
||||||
"lottery_chance": 1, |
|
||||||
"app_k": "b398b8ccbaeacca840073a7ee9b7e7e6", |
|
||||||
"app_v": "11.6.5", |
|
||||||
"platform_id": 10, |
|
||||||
"dev_os": "8.0.0", |
|
||||||
"dev_ua": "FRD-AL10", |
|
||||||
"net_sts": 1, |
|
||||||
"qyid": "2655b332a116d2247fac3dd66a5285011102", |
|
||||||
"psp_uid": p00003, |
|
||||||
"psp_cki": p00001, |
|
||||||
"psp_status": 3, |
|
||||||
"secure_v": 1, |
|
||||||
"secure_p": "GPhone", |
|
||||||
"req_sn": round(time.time() * 1000), |
|
||||||
} |
|
||||||
if draw_type == 1: |
|
||||||
del params["lottery_chance"] |
|
||||||
res = requests.get(url=url, params=params).json() |
|
||||||
if not res.get("code"): |
|
||||||
chance = int(res.get("daysurpluschance")) |
|
||||||
msg = res.get("awardName") |
|
||||||
return {"status": True, "msg": msg, "chance": chance} |
|
||||||
else: |
|
||||||
try: |
|
||||||
msg = res.get("kv", {}).get("msg") |
|
||||||
except Exception as e: |
|
||||||
print(e) |
|
||||||
msg = res["errorReason"] |
|
||||||
return {"status": False, "msg": msg, "chance": 0} |
|
||||||
|
|
||||||
def main(self): |
|
||||||
p00001, p00002, p00003 = self.parse_cookie(self.check_item.get("iqiyi_cookie")) |
|
||||||
sign_msg = self.sign(p00001=p00001) |
|
||||||
chance = self.draw(0, p00001=p00001, p00003=p00003)["chance"] |
|
||||||
if chance: |
|
||||||
draw_msg = "" |
|
||||||
for i in range(chance): |
|
||||||
ret = self.draw(1, p00001=p00001, p00003=p00003) |
|
||||||
draw_msg += ret["msg"] + ";" if ret["status"] else "" |
|
||||||
else: |
|
||||||
draw_msg = "抽奖机会不足" |
|
||||||
task_msg = "" |
|
||||||
for one in range(6): |
|
||||||
task_list = self.query_user_task(p00001=p00001) |
|
||||||
self.join_task(p00001=p00001, task_list=task_list) |
|
||||||
time.sleep(10) |
|
||||||
task_msg = self.get_task_rewards(p00001=p00001, task_list=task_list) |
|
||||||
try: |
|
||||||
user_info = json.loads(unquote(p00002, encoding="utf-8")) |
|
||||||
user_name = user_info.get("user_name") |
|
||||||
user_name = user_name.replace(user_name[3:7], "****") |
|
||||||
nickname = user_info.get("nickname") |
|
||||||
except Exception as e: |
|
||||||
print(f"获取用户信息失败,错误信息: {e}") |
|
||||||
nickname = "未获取到,请检查 Cookie 中 P00002 字段" |
|
||||||
user_name = "未获取到,请检查 Cookie 中 P00002 字段" |
|
||||||
user_msg = self.user_information(p00001=p00001) |
|
||||||
msg = f"用户账号: {user_name}\n用户昵称: {nickname}\n{user_msg}\n" \ |
|
||||||
f"签到奖励: {sign_msg}\n任务奖励: {task_msg}\n抽奖奖励: {draw_msg}" |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
def start(): |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("IQIYI_COOKIE_LIST", [])[0] |
|
||||||
res = IQIYICheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send('爱奇艺', res) |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
start() |
|
@ -1,139 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 55 14 * * * |
|
||||||
new Env('全民k歌'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
import requests |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
|
|
||||||
class KGQQCheckIn: |
|
||||||
def __init__(self, check_item): |
|
||||||
self.check_item = check_item |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def sign(kgqq_cookie): |
|
||||||
headers = {"Cookie": kgqq_cookie} |
|
||||||
uid = kgqq_cookie.split("; ") |
|
||||||
t_uuid = "" |
|
||||||
for i in uid: |
|
||||||
if i.find("uid=") >= 0: |
|
||||||
t_uuid = i.split("=")[1] |
|
||||||
proto_profile_url = "https://node.kg.qq.com/webapp/proxy?ns=proto_profile&cmd=profile.getProfile&mapExt=JTdCJTIyZmlsZSUyMiUzQSUyMnByb2ZpbGVfd2ViYXBwSmNlJTIyJTJDJTIyY21kTmFtZSUyMiUzQSUyMlByb2ZpbGVHZXQlMjIlMkMlMjJhcHBpZCUyMiUzQTEwMDA2MjYlMkMlMjJkY2FwaSUyMiUzQSU3QiUyMmludGVyZmFjZUlkJTIyJTNBMjA1MzU5NTk3JTdEJTJDJTIybDVhcGklMjIlM0ElN0IlMjJtb2RpZCUyMiUzQTI5NDAxNyUyQyUyMmNtZCUyMiUzQTI2MjE0NCU3RCUyQyUyMmlwJTIyJTNBJTIyMTAwLjExMy4xNjIuMTc4JTIyJTJDJTIycG9ydCUyMiUzQSUyMjEyNDA2JTIyJTdE&t_uUid={0}".format( |
|
||||||
t_uuid |
|
||||||
) |
|
||||||
|
|
||||||
url_list = ( |
|
||||||
[ |
|
||||||
"https://node.kg.qq.com/webapp/proxy?ns=KG_TASK&cmd=task.getLottery&ns_inbuf=&mapExt=JTdCJTIyZmlsZSUyMiUzQSUyMnRhc2tKY2UlMjIlMkMlMjJjbWROYW1lJTIyJTNBJTIyTG90dGVyeVJlcSUyMiUyQyUyMnduc0NvbmZpZyUyMiUzQSU3QiUyMmFwcGlkJTIyJTNBMTAwMDU1NyU3RCUyQyUyMmw1YXBpJTIyJTNBJTdCJTIybW9kaWQlMjIlM0E1MDM5MzclMkMlMjJjbWQlMjIlM0E1ODk4MjQlN0QlN0Q%3D&t_uid={0}&t_iShowEntry=1&t_type={1}".format( |
|
||||||
t_uuid, one |
|
||||||
) |
|
||||||
for one in ["1", "2"] |
|
||||||
] |
|
||||||
+ [ |
|
||||||
"https://node.kg.qq.com/webapp/proxy?ns=KG_TASK&cmd=task.signinGetAward&mapExt=JTdCJTIyZmlsZSUyMiUzQSUyMnRhc2tKY2UlMjIlMkMlMjJjbWROYW1lJTIyJTNBJTIyR2V0U2lnbkluQXdhcmRSZXElMjIlMkMlMjJ3bnNDb25maWclMjIlM0ElN0IlMjJhcHBpZCUyMiUzQTEwMDA2MjYlN0QlMkMlMjJsNWFwaSUyMiUzQSU3QiUyMm1vZGlkJTIyJTNBNTAzOTM3JTJDJTIyY21kJTIyJTNBNTg5ODI0JTdEJTdE&t_uid={0}&t_iShowEntry={1}".format( |
|
||||||
t_uuid, one |
|
||||||
) |
|
||||||
for one in ["1", "2", "4", "16", "128", "512"] |
|
||||||
] |
|
||||||
+ [ |
|
||||||
"https://node.kg.qq.com/webapp/proxy?ns=KG_TASK&cmd=task.getLottery&mapExt=JTdCJTIyZmlsZSUyMiUzQSUyMnRhc2tKY2UlMjIlMkMlMjJjbWROYW1lJTIyJTNBJTIyTG90dGVyeVJlcSUyMiUyQyUyMnduc0NvbmZpZyUyMiUzQSU3QiUyMmFwcGlkJTIyJTNBMTAwMDU1NyU3RCUyQyUyMmw1YXBpJTIyJTNBJTdCJTIybW9kaWQlMjIlM0E1MDM5MzclMkMlMjJjbWQlMjIlM0E1ODk4MjQlN0QlN0Q&t_uid={0}&t_iShowEntry=4&t_type=104".format( |
|
||||||
t_uuid |
|
||||||
), |
|
||||||
"https://node.kg.qq.com/webapp/proxy?ns=KG_TASK&cmd=task.getLottery&mapExt=JTdCJTIyZmlsZSUyMiUzQSUyMnRhc2tKY2UlMjIlMkMlMjJjbWROYW1lJTIyJTNBJTIyTG90dGVyeVJlcSUyMiUyQyUyMmw1YXBpJTIyJTNBJTdCJTIybW9kaWQlMjIlM0E1MDM5MzclMkMlMjJjbWQlMjIlM0E1ODk4MjQlN0QlMkMlMjJsNWFwaV9leHAxJTIyJTNBJTdCJTIybW9kaWQlMjIlM0E4MTcwODklMkMlMjJjbWQlMjIlM0EzODAxMDg4JTdEJTdE&t_uid={0}&t_type=103".format( |
|
||||||
t_uuid |
|
||||||
), |
|
||||||
] |
|
||||||
) |
|
||||||
|
|
||||||
proto_music_station_url = "https://node.kg.qq.com/webapp/proxy?ns=proto_music_station&cmd=message.batch_get_music_cards&mapExt=JTdCJTIyY21kTmFtZSUyMiUzQSUyMkdldEJhdGNoTXVzaWNDYXJkc1JlcSUyMiUyQyUyMmZpbGUlMjIlM0ElMjJwcm90b19tdXNpY19zdGF0aW9uSmNlJTIyJTJDJTIyd25zRGlzcGF0Y2hlciUyMiUzQXRydWUlN0Q&t_uUid={0}&g_tk_openkey=".format( |
|
||||||
t_uuid |
|
||||||
) |
|
||||||
|
|
||||||
url_10 = "https://node.kg.qq.com/webapp/proxy?t_stReward%3Aobject=%7B%22uInteractiveType%22%3A1%2C%22uRewardType%22%3A0%2C%22uFlowerNum%22%3A15%7D&ns=proto_music_station&cmd=message.get_reward&mapExt=JTdCJTIyY21kTmFtZSUyMiUzQSUyMkdldFJld2FyZFJlcSUyMiUyQyUyMmZpbGUlMjIlM0ElMjJwcm90b19tdXNpY19zdGF0aW9uSmNlJTIyJTJDJTIyd25zRGlzcGF0Y2hlciUyMiUzQXRydWUlN0Q&t_uUid={0}&t_strUgcId=".format( |
|
||||||
t_uuid |
|
||||||
) |
|
||||||
|
|
||||||
url_15 = "https://node.kg.qq.com/webapp/proxy?t_stReward%3Aobject=%7B%22uInteractiveType%22%3A0%2C%22uRewardType%22%3A0%2C%22uFlowerNum%22%3A10%7D&ns=proto_music_station&cmd=message.get_reward&mapExt=JTdCJTIyY21kTmFtZSUyMiUzQSUyMkdldFJld2FyZFJlcSUyMiUyQyUyMmZpbGUlMjIlM0ElMjJwcm90b19tdXNpY19zdGF0aW9uSmNlJTIyJTJDJTIyd25zRGlzcGF0Y2hlciUyMiUzQXRydWUlN0Q&t_uUid={0}&t_strUgcId=".format( |
|
||||||
t_uuid |
|
||||||
) |
|
||||||
try: |
|
||||||
old_proto_profile_response = requests.get(url=proto_profile_url, headers=headers) |
|
||||||
old_num = old_proto_profile_response.json()["data"]["profile.getProfile"]["uFlowerNum"] |
|
||||||
nickname = old_proto_profile_response.json()["data"]["profile.getProfile"]["stPersonInfo"]["sKgNick"] |
|
||||||
for url in url_list: |
|
||||||
try: |
|
||||||
requests.get(url=url, headers=headers) |
|
||||||
except Exception as e: |
|
||||||
print(e) |
|
||||||
for g_tk_openkey in range(16): |
|
||||||
try: |
|
||||||
proto_music_station_resp = requests.get( |
|
||||||
url=proto_music_station_url + str(g_tk_openkey), headers=headers |
|
||||||
) |
|
||||||
if proto_music_station_resp.json().get("code") in [1000]: |
|
||||||
return proto_music_station_resp.json().get("msg") |
|
||||||
vct_music_cards = proto_music_station_resp.json()["data"]["message.batch_get_music_cards"][ |
|
||||||
"vctMusicCards" |
|
||||||
] |
|
||||||
vct_music_cards_list = sorted( |
|
||||||
vct_music_cards, key=lambda x: x["stReward"]["uFlowerNum"], reverse=True |
|
||||||
)[0] |
|
||||||
str_ugc_id = vct_music_cards_list["strUgcId"] |
|
||||||
str_key = vct_music_cards_list["strKey"] |
|
||||||
url = str_ugc_id + "&t_strKey=" + str_key |
|
||||||
u_flower_num = vct_music_cards_list["stReward"]["uFlowerNum"] |
|
||||||
if u_flower_num > 10: |
|
||||||
requests.get(url=url_10 + url, headers=headers) |
|
||||||
elif 1 < u_flower_num < 10: |
|
||||||
requests.get(url=url_15 + url, headers=headers) |
|
||||||
except Exception as e: |
|
||||||
print(e) |
|
||||||
# VIP 签到 |
|
||||||
try: |
|
||||||
getinfourl = ( |
|
||||||
"https://node.kg.qq.com/webapp/proxy?ns=proto_vip_webapp&cmd=vip.get_vip_info&t_uUid=" |
|
||||||
+ t_uuid |
|
||||||
+ "&t_uWebReq=1&t_uGetDataFromC4B=1" |
|
||||||
) |
|
||||||
inforequest = requests.get(url=getinfourl, headers=headers) |
|
||||||
vip_status = inforequest.json()["data"]["vip.get_vip_info"]["stVipCoreInfo"]["uStatus"] |
|
||||||
if vip_status == 1: |
|
||||||
vipurl = ( |
|
||||||
"https://node.kg.qq.com/webapp/proxy?t_uUid=" |
|
||||||
+ t_uuid |
|
||||||
+ "&ns=proto_vip_webapp&cmd=vip.get_vip_day_reward&ns_inbuf=&nocache=1613719349184&mapExt=JTdCJTIyY21kTmFtZSUyMiUzQSUyMkdldFZpcERheVJld2FyZCUyMiU3RA%3D%3D&g_tk_openkey=642424811" |
|
||||||
) |
|
||||||
viprequest = requests.get(url=vipurl, headers=headers) |
|
||||||
str_tips = viprequest.json()["data"]["vip.get_vip_day_reward"]["strTips"] |
|
||||||
u_cur_reward_num = viprequest.json()["data"]["vip.get_vip_day_reward"]["uCurRewardNum"] |
|
||||||
vip_message = f"{str_tips} 获取VIP福利道具:{u_cur_reward_num}个" |
|
||||||
else: |
|
||||||
vip_message = "非 VIP 用户" |
|
||||||
except Exception as e: |
|
||||||
print(e) |
|
||||||
vip_message = "VIP 签到失败" |
|
||||||
new_proto_profile_response = requests.get(url=proto_profile_url, headers=headers) |
|
||||||
new_num = new_proto_profile_response.json()["data"]["profile.getProfile"]["uFlowerNum"] |
|
||||||
get_num = int(new_num) - int(old_num) |
|
||||||
kg_message = f"帐号信息: {nickname}\n获取鲜花: {get_num}朵\n当前鲜花: {new_num}朵\nVIP签到: {vip_message}" |
|
||||||
except Exception as e: |
|
||||||
kg_message = str(e) |
|
||||||
return kg_message |
|
||||||
|
|
||||||
def main(self): |
|
||||||
kgqq_cookie = self.check_item.get("kgqq_cookie") |
|
||||||
msg = self.sign(kgqq_cookie=kgqq_cookie) |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("KGQQ_COOKIE_LIST", [])[0] |
|
||||||
res = KGQQCheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send("全民K歌", res) |
|
@ -1,102 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 55 15 * * * |
|
||||||
new Env('魅族社区'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
import time |
|
||||||
import requests |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
|
|
||||||
class MeizuCheckIn: |
|
||||||
def __init__(self, check_item): |
|
||||||
self.check_item = check_item |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def sign(cookie): |
|
||||||
headers = { |
|
||||||
"authority": "bbs-act.meizu.cn", |
|
||||||
"pragma": "no-cache", |
|
||||||
"cache-control": "no-cache", |
|
||||||
"accept": "application/json, text/javascript, */*; q=0.01", |
|
||||||
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74", |
|
||||||
"origin": "https://bbs.meizu.cn", |
|
||||||
"referer": "https://bbs.meizu.cn/", |
|
||||||
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8", |
|
||||||
"cookie": cookie, |
|
||||||
} |
|
||||||
params = ( |
|
||||||
("mod", "signin"), |
|
||||||
("action", "sign"), |
|
||||||
) |
|
||||||
response = requests.get(url="https://bbs-act.meizu.cn/index.php", headers=headers, params=params).json() |
|
||||||
msg = response.get("message") |
|
||||||
return msg |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def draw(cookie, count: int = 0): |
|
||||||
headers = { |
|
||||||
"authority": "bbs-act.meizu.cn", |
|
||||||
"accept": "application/json, text/javascript, */*; q=0.01", |
|
||||||
"x-requested-with": "XMLHttpRequest", |
|
||||||
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74", |
|
||||||
"content-type": "application/x-www-form-urlencoded", |
|
||||||
"origin": "https://bbs-act.meizu.cn", |
|
||||||
"referer": "https://bbs-act.meizu.cn/2/index.html", |
|
||||||
"accept-language": "zh-CN,zh;q=0.9", |
|
||||||
"cookie": cookie, |
|
||||||
} |
|
||||||
data = {"mod": "index", "action": "draw", "id": "2"} |
|
||||||
award_list = [] |
|
||||||
success_count = 0 |
|
||||||
error_count = 0 |
|
||||||
if count: |
|
||||||
for i in range(count): |
|
||||||
try: |
|
||||||
data = requests.post(url="https://bbs-act.meizu.cn/index.php", headers=headers, data=data).json() |
|
||||||
if data["code"] == 200: |
|
||||||
one_msg = data.get("data", {}).get("award_name") |
|
||||||
award_list.append(one_msg) |
|
||||||
success_count += 1 |
|
||||||
else: |
|
||||||
error_count += 1 |
|
||||||
print(data.get("code"), data.get("message")) |
|
||||||
one_msg = "抽奖失败" |
|
||||||
except Exception as e: |
|
||||||
one_msg = f"抽奖失败: {e}" |
|
||||||
error_count += 1 |
|
||||||
print(f"第{i + 1}次抽奖结果:" + str(one_msg)) |
|
||||||
time.sleep(5) |
|
||||||
msg = f"成功抽奖 {success_count} 次" |
|
||||||
draw_msg = "抽奖状态: " + str(msg) |
|
||||||
draw_msg += f"\n抽奖结果: {';'.join(award_list)}" |
|
||||||
else: |
|
||||||
draw_msg = "抽奖结果: 未开启抽奖" |
|
||||||
data = {"mod": "index", "action": "get_user_count", "id": "2"} |
|
||||||
user_info = requests.post("https://bbs-act.meizu.cn/index.php", headers=headers, data=data).json() |
|
||||||
uid = user_info.get("data", {}).get("uid") |
|
||||||
return draw_msg, uid |
|
||||||
|
|
||||||
def main(self): |
|
||||||
meizu_cookie = self.check_item.get("meizu_cookie") |
|
||||||
try: |
|
||||||
draw_count = int(self.check_item.get("draw_count", 0)) |
|
||||||
except Exception as e: |
|
||||||
print("初始化抽奖次数失败: 重置为 0 ", str(e)) |
|
||||||
draw_count = 0 |
|
||||||
sign_msg = self.sign(cookie=meizu_cookie) |
|
||||||
draw_msg, uid = self.draw(cookie=meizu_cookie, count=draw_count) |
|
||||||
msg = f"帐号信息: {uid}\n签到信息: {sign_msg}\n{draw_msg}" |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("MEIZU_COOKIE_LIST", [])[0] |
|
||||||
res = MeizuCheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send("MEIZU 社区",res) |
|
@ -1,68 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 23 14 * * * |
|
||||||
new Env('芒果TV'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
import os |
|
||||||
import time |
|
||||||
from urllib import parse |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
import requests |
|
||||||
|
|
||||||
|
|
||||||
class MgtvCheckIn: |
|
||||||
def __init__(self, check_item): |
|
||||||
self.check_item = check_item |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def sign(params): |
|
||||||
url = "https://credits.bz.mgtv.com/user/creditsTake" |
|
||||||
user_params = { |
|
||||||
"abroad": params.get("abroad"), |
|
||||||
"ageMode": "0", |
|
||||||
"appVersion": params.get("appVersion"), |
|
||||||
"artistId": params.get("uuid"), |
|
||||||
"device": params.get("device"), |
|
||||||
"did": params.get("did"), |
|
||||||
"mac": params.get("did"), |
|
||||||
"osType": params.get("osType"), |
|
||||||
"src": "mgtv", |
|
||||||
"testversion": "", |
|
||||||
"ticket": params.get("ticket"), |
|
||||||
"uuid": params.get("uuid"), |
|
||||||
} |
|
||||||
try: |
|
||||||
user_info = requests.get(url="https://homepage.bz.mgtv.com/v2/user/userInfo", params=user_params).json() |
|
||||||
username = user_info.get("data", {}).get("nickName") |
|
||||||
except Exception as e: |
|
||||||
print("获取用户信息失败", e) |
|
||||||
username = params.get("uuid") |
|
||||||
res = requests.get(url=url, params=params) |
|
||||||
res_json = json.loads(res.text.replace(f"{params.get('callback')}(", "").replace(");", "")) |
|
||||||
if res_json["code"] == 200: |
|
||||||
cur_day = res_json["data"]["curDay"] |
|
||||||
_credits = res_json["data"]["credits"] |
|
||||||
msg = f"帐号信息: {username}\n签到积分: +{_credits}积分\n已经签到: {cur_day}天/21天" |
|
||||||
else: |
|
||||||
msg = f"帐号信息: {username}\n签到状态: 已完成签到 or 签到失败" |
|
||||||
return msg |
|
||||||
|
|
||||||
def main(self): |
|
||||||
mgtv_params = self.check_item.get("mgtv_params") |
|
||||||
params = parse.parse_qs(mgtv_params) |
|
||||||
params["timestamp"] = [round(time.time())] |
|
||||||
params = {key: value[0] for key, value in params.items()} |
|
||||||
msg = self.sign(params=params) |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("MGTV_PARAMS_LIST", [])[0] |
|
||||||
res = MgtvCheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send("芒果 TV",res) |
|
File diff suppressed because one or more lines are too long
@ -1,76 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
import json |
|
||||||
import os |
|
||||||
|
|
||||||
import requests |
|
||||||
from requests import utils |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
""" |
|
||||||
建议cron: 51 9 * * * |
|
||||||
new Env('什么值得买'); |
|
||||||
""" |
|
||||||
|
|
||||||
class SmzdmCheckIn: |
|
||||||
def __init__(self, check_item): |
|
||||||
self.check_item = check_item |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def sign(session): |
|
||||||
try: |
|
||||||
current = session.get(url="https://zhiyou.smzdm.com/user/info/jsonp_get_current").json() |
|
||||||
if current["checkin"]["has_checkin"]: |
|
||||||
msg = ( |
|
||||||
f"用户信息: {current.get('nickname', '')}\n目前积分: {current.get('point', '')}\n" |
|
||||||
f"经验值: {current.get('exp', '')}\n金币: {current.get('gold', '')}\n" |
|
||||||
f"碎银子: {current.get('silver', '')}\n威望: {current.get('prestige', '')}\n" |
|
||||||
f"等级: {current.get('level', '')}\n" |
|
||||||
f"已经签到: {current.get('checkin', {}).get('daily_checkin_num', '')} 天" |
|
||||||
) |
|
||||||
else: |
|
||||||
response = session.get(url="https://zhiyou.smzdm.com/user/checkin/jsonp_checkin").json().get("data", {}) |
|
||||||
msg = ( |
|
||||||
f"用户信息: {current.get('nickname', '')}\n目前积分: {response.get('point', '')}\n" |
|
||||||
f"增加积分: {response.get('add_point', '')}\n经验值: {response.get('exp', '')}\n" |
|
||||||
f"金币: {response.get('gold', '')}\n威望: {response.get('prestige', '')}\n" |
|
||||||
f"等级: {response.get('rank', '')}\n" |
|
||||||
f"已经签到: {response.get('checkin_num', {})} 天" |
|
||||||
) |
|
||||||
except Exception as e: |
|
||||||
msg = f"签到状态: 签到失败\n错误信息: {e}" |
|
||||||
return msg |
|
||||||
|
|
||||||
def main(self): |
|
||||||
smzdm_cookie = { |
|
||||||
item.split("=")[0]: item.split("=")[1] for item in self.check_item.get("smzdm_cookie").split("; ") |
|
||||||
} |
|
||||||
session = requests.session() |
|
||||||
requests.utils.add_dict_to_cookiejar(session.cookies, smzdm_cookie) |
|
||||||
session.headers.update( |
|
||||||
{ |
|
||||||
"Accept": "*/*", |
|
||||||
"Accept-Encoding": "gzip, deflate, br", |
|
||||||
"Accept-Language": "zh-CN,zh;q=0.9", |
|
||||||
"Connection": "keep-alive", |
|
||||||
"Host": "zhiyou.smzdm.com", |
|
||||||
"Referer": "https://www.smzdm.com/", |
|
||||||
"Sec-Fetch-Dest": "script", |
|
||||||
"Sec-Fetch-Mode": "no-cors", |
|
||||||
"Sec-Fetch-Site": "same-site", |
|
||||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36", |
|
||||||
} |
|
||||||
) |
|
||||||
sign_msg = self.sign(session=session) |
|
||||||
msg = f"{sign_msg}" |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("SMZDM_COOKIE_LIST", [])[0] |
|
||||||
res = SmzdmCheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send('什么值得买',res) |
|
File diff suppressed because one or more lines are too long
@ -1,51 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
""" |
|
||||||
建议cron: 00 8 * * * |
|
||||||
new Env('王者营地'); |
|
||||||
""" |
|
||||||
import json |
|
||||||
import os |
|
||||||
from urllib import parse |
|
||||||
|
|
||||||
import requests |
|
||||||
from getENV import getENv |
|
||||||
from checksendNotify import send |
|
||||||
|
|
||||||
|
|
||||||
class WZYDCheckIn: |
|
||||||
def __init__(self, check_item): |
|
||||||
self.check_item = check_item |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def sign(data): |
|
||||||
response = requests.post(url="https://ssl.kohsocialapp.qq.com:10001/play/h5sign", data=data).json() |
|
||||||
try: |
|
||||||
if response["result"] == 0: |
|
||||||
msg = "签到成功" |
|
||||||
else: |
|
||||||
msg = response["returnMsg"] |
|
||||||
except: |
|
||||||
msg = "请求失败,请检查接口" |
|
||||||
return msg |
|
||||||
|
|
||||||
def main(self): |
|
||||||
wzyd_data = self.check_item.get("wzyd_data") |
|
||||||
data = {k: v[0] for k, v in parse.parse_qs(wzyd_data).items()} |
|
||||||
try: |
|
||||||
user_id = data.get("userId", "") |
|
||||||
except Exception as e: |
|
||||||
print(f"获取用户信息失败: {e}") |
|
||||||
user_id = "未获取到用户信息" |
|
||||||
sign_msg = self.sign(data=data) |
|
||||||
msg = f"帐号信息: {user_id}\n签到信息: {sign_msg}" |
|
||||||
return msg |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
getENv() |
|
||||||
with open("/ql/config/check.json", "r", encoding="utf-8") as f: |
|
||||||
datas = json.loads(f.read()) |
|
||||||
_check_item = datas.get("WZYD_DATA_LIST", [])[0] |
|
||||||
res = WZYDCheckIn(check_item=_check_item).main() |
|
||||||
print(res) |
|
||||||
send('王者营地', res) |
|
@ -1,265 +0,0 @@ |
|||||||
{ |
|
||||||
"CITY_NAME_LIST": [ |
|
||||||
"上海" |
|
||||||
], |
|
||||||
"MOTTO": true, |
|
||||||
"IQIYI_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"iqiyi_cookie": "__dfp=xxxxxx; QP0013=xxxxxx; QP0022=xxxxxx; QYABEX=xxxxxx; P00001=xxxxxx; P00002=xxxxxx; P00003=xxxxxx; P00007=xxxxxx; QC163=xxxxxx; QC175=xxxxxx; QC179=xxxxxx; QC170=xxxxxx; P00010=xxxxxx; P00PRU=xxxxxx; P01010=xxxxxx; QC173=xxxxxx; QC180=xxxxxx; P00004=xxxxxx; QP0030=xxxxxx; QC006=xxxxxx; QC007=xxxxxx; QC008=xxxxxx; QC010=xxxxxx; nu=xxxxxx; __uuid=xxxxxx; QC005=xxxxxx;" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"iqiyi_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"VQQ_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"auth_refresh": "https://access.video.qq.com/user/auth_refresh?vappid=xxxxxx&vsecret=xxxxxx&type=qq&g_tk=&g_vstk=xxxxxx&g_actk=xxxxxx&callback=xxxxxx&_=xxxxxx", |
|
||||||
"vqq_cookie": "pgv_pvid=xxxxxx; pac_uid=xxxxxx; RK=xxxxxx; ptcz=xxxxxx; tvfe_boss_uuid=xxxxxx; video_guid=xxxxxx; video_platform=xxxxxx; pgv_info=xxxxxx; main_login=xxxxxx; vqq_access_token=xxxxxx; vqq_appid=xxxxxx; vqq_openid=xxxxxx; vqq_vuserid=xxxxxx; vqq_refresh_token=xxxxxx; login_time_init=xxxxxx; uid=xxxxxx; vqq_vusession=xxxxxx; vqq_next_refresh_time=xxxxxx; vqq_login_time_init=xxxxxx; login_time_last=xxxxxx;" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"auth_refresh": "多账号 refresh url,请参考上面,以实际获取为准", |
|
||||||
"vqq_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"YOUDAO_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"youdao_cookie": "JSESSIONID=xxxxxx; __yadk_uid=xxxxxx; OUTFOX_SEARCH_USER_ID_NCOO=xxxxxx; YNOTE_SESS=xxxxxx; YNOTE_PERS=xxxxxx; YNOTE_LOGIN=xxxxxx; YNOTE_CSTK=xxxxxx; _ga=xxxxxx; _gid=xxxxxx; _gat=xxxxxx; PUBLIC_SHARE_18a9dde3de846b6a69e24431764270c4=xxxxxx;" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"youdao_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"KGQQ_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"kgqq_cookie": "muid=xxxxxx; uid=xxxxxx; userlevel=xxxxxx; openid=xxxxxx; openkey=xxxxxx; opentype=xxxxxx; qrsig=xxxxxx; pgv_pvid=xxxxxx;" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"kgqq_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"MUSIC163_ACCOUNT_LIST": [ |
|
||||||
{ |
|
||||||
"music163_phone": "18888xxxxxx", |
|
||||||
"music163_password": "Sitoi" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"music163_phone": "多账号 手机号", |
|
||||||
"music163_password": "多账号 密码" |
|
||||||
} |
|
||||||
], |
|
||||||
"ONEPLUSBBS_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"oneplusbbs_cookie": "acw_tc=xxxxxx; qKc3_0e8d_saltkey=xxxxxx; qKc3_0e8d_lastvisit=xxxxxx; bbs_avatar=xxxxxx; qKc3_0e8d_sendmail=xxxxxx; opcid=xxxxxx; opcct=xxxxxx; oppt=xxxxxx; opsid=xxxxxx; opsct=xxxxxx; opbct=xxxxxx; UM_distinctid=xxxxxx; CNZZDATA1277373783=xxxxxx; www_clear=xxxxxx; ONEPLUSID=xxxxxx; qKc3_0e8d_sid=xxxxxx; bbs_uid=xxxxxx; bbs_uname=xxxxxx; bbs_grouptitle=xxxxxx; opuserid=xxxxxx; bbs_sign=xxxxxx; bbs_formhash=xxxxxx; qKc3_0e8d_ulastactivity=xxxxxx; opsertime=xxxxxx; qKc3_0e8d_lastact=xxxxxx; qKc3_0e8d_checkpm=xxxxxx; qKc3_0e8d_noticeTitle=xxxxxx; optime_browser=xxxxxx; opnt=xxxxxx; opstep=xxxxxx; opstep_event=xxxxxx; fp=xxxxxx;" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"oneplusbbs_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"BAIDU_URL_SUBMIT_LIST": [ |
|
||||||
{ |
|
||||||
"data_url": "https://cdn.jsdelivr.net/gh/Sitoi/Sitoi.github.io/baidu_urls.txt", |
|
||||||
"submit_url": "http://data.zz.baidu.com/urls?site=https://sitoi.cn&token=xxxxxx", |
|
||||||
"times": 10 |
|
||||||
}, |
|
||||||
{ |
|
||||||
"data_url": "多账号 data_url 链接地址,以实际获取为准", |
|
||||||
"submit_url": "多账号 submit_url 链接地址,以实际获取为准", |
|
||||||
"times": 10 |
|
||||||
} |
|
||||||
], |
|
||||||
"FMAPP_ACCOUNT_LIST": [ |
|
||||||
{ |
|
||||||
"fmapp_token": "xxxxxx.xxxxxx-xxxxxx-xxxxxx.xxxxxx-xxxxxx", |
|
||||||
"fmapp_cookie": "sensorsdata2015jssdkcross=xxxxxx", |
|
||||||
"fmapp_blackbox": "eyJlcnJxxxxxx", |
|
||||||
"fmapp_device_id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxx", |
|
||||||
"fmapp_fmversion": "xxxxxx", |
|
||||||
"fmapp_os": "xxxxxx", |
|
||||||
"fmapp_useragent": "xxxxxx" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"fmapp_token": "多账号 token 填写,请参考上面,以实际获取为准", |
|
||||||
"fmapp_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
|
||||||
"fmapp_blackbox": "多账号 blackbox 填写,请参考上面,blackbox 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
|
||||||
"fmapp_device_id": "多账号 device_id 填写,请参考上面,以实际获取为准", |
|
||||||
"fmapp_fmversion": "多账号 fmVersion 填写,请参考上面,以实际获取为准", |
|
||||||
"fmapp_os": "多账号 os 填写,请参考上面,以实际获取为准", |
|
||||||
"fmapp_useragent": "多账号 User-Agent 填写,请参考上面,以实际获取为准" |
|
||||||
} |
|
||||||
], |
|
||||||
"TIEBA_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"tieba_cookie": "BIDUPSID=xxxxxx; PSTM=xxxxxx; BAIDUID=xxxxxx; BAIDUID_BFESS=xxxxxx; delPer=xxxxxx; PSINO=xxxxxx; H_PS_PSSID=xxxxxx; BA_HECTOR=xxxxxx; BDORZ=xxxxxx; TIEBA_USERTYPE=xxxxxx; st_key_id=xxxxxx; BDUSS=xxxxxx; BDUSS_BFESS=xxxxxx; STOKEN=xxxxxx; TIEBAUID=xxxxxx; ab_sr=xxxxxx; st_data=xxxxxx; st_sign=xxxxxx;" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"tieba_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"BILIBILI_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"bilibili_cookie": "_uuid=xxxxxx; rpdid=xxxxxx; LIVE_BUVID=xxxxxx; PVID=xxxxxx; blackside_state=xxxxxx; CURRENT_FNVAL=xxxxxx; buvid3=xxxxxx; fingerprint3=xxxxxx; fingerprint=xxxxxx; buivd_fp=xxxxxx; buvid_fp_plain=xxxxxx; DedeUserID=xxxxxx; DedeUserID__ckMd5=xxxxxx; SESSDATA=xxxxxx; bili_jct=xxxxxx; bsource=xxxxxx; finger=xxxxxx; fingerprint_s=xxxxxx;", |
|
||||||
"coin_num": 0, |
|
||||||
"coin_type": 1, |
|
||||||
"silver2coin": true |
|
||||||
}, |
|
||||||
{ |
|
||||||
"bilibili_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
|
||||||
"coin_num": 0, |
|
||||||
"coin_type": 1, |
|
||||||
"silver2coin": true |
|
||||||
} |
|
||||||
], |
|
||||||
"V2EX_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"v2ex_cookie": "_ga=xxxxxx; __cfduid=xxxxxx; PB3_SESSION=xxxxxx; A2=xxxxxx; V2EXSETTINGS=xxxxxx; V2EX_REFERRER=xxxxxx; V2EX_LANG=xxxxxx; _gid=xxxxxx; V2EX_TAB=xxxxxx;", |
|
||||||
"v2ex_proxy": "使用代理的信息,无密码例子: http://127.0.0.1:1080 有密码例子: http://username:password@127.0.0.1:1080" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"v2ex_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
|
||||||
"v2ex_proxy": "使用代理的信息,无密码例子: http://127.0.0.1:1080 有密码例子: http://username:password@127.0.0.1:1080" |
|
||||||
} |
|
||||||
], |
|
||||||
"WWW2NZZ_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"www2nzz_cookie": "YPx9_2132_saltkey=xxxxxx; YPx9_2132_lastvisit=xxxxxx; YPx9_2132_sendmail=xxxxxx; YPx9_2132_con_request_uri=xxxxxx; YPx9_2132_sid=xxxxxx; YPx9_2132_client_created=xxxxxx; YPx9_2132_client_token=xxxxxx; YPx9_2132_ulastactivity=xxxxxx; YPx9_2132_auth=xxxxxx; YPx9_2132_connect_login=xxxxxx; YPx9_2132_connect_is_bind=xxxxxx; YPx9_2132_connect_uin=xxxxxx; YPx9_2132_stats_qc_login=xxxxxx; YPx9_2132_checkpm=xxxxxx; YPx9_2132_noticeTitle=xxxxxx; YPx9_2132_nofavfid=xxxxxx; YPx9_2132_lastact=xxxxxx;" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"www2nzz_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"SMZDM_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"smzdm_cookie": "__jsluid_s=xxxxxx; __ckguid=xxxxxx; device_id=xxxxxx; homepage_sug=xxxxxx; r_sort_type=xxxxxx; _zdmA.vid=xxxxxx; sajssdk_2015_cross_new_user=xxxxxx; sensorsdata2015jssdkcross=xxxxxx; footer_floating_layer=xxxxxx; ad_date=xxxxxx; ad_json_feed=xxxxxx; zdm_qd=xxxxxx; sess=xxxxxx; user=xxxxxx; _zdmA.uid=xxxxxx; smzdm_id=xxxxxx; userId=xxxxxx; bannerCounter=xxxxxx; _zdmA.time=xxxxxx;" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"smzdm_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"MIMOTION_ACCOUNT_LIST": [ |
|
||||||
{ |
|
||||||
"mimotion_phone": "18888xxxxxx", |
|
||||||
"mimotion_password": "Sitoi", |
|
||||||
"mimotion_min_step": "10000", |
|
||||||
"mimotion_max_step": "20000" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"mimotion_phone": "多账号 手机号填写,请参考上面", |
|
||||||
"mimotion_password": "多账号 密码填写,请参考上面", |
|
||||||
"mimotion_min_step": "多账号 最小步数填写,请参考上面", |
|
||||||
"mimotion_max_step": "多账号 最大步数填写,请参考上面" |
|
||||||
} |
|
||||||
], |
|
||||||
"ACFUN_ACCOUNT_LIST": [ |
|
||||||
{ |
|
||||||
"acfun_phone": "18888xxxxxx", |
|
||||||
"acfun_password": "Sitoi" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"acfun_phone": "多账号 手机号填写,请参考上面", |
|
||||||
"acfun_password": "多账号 密码填写,请参考上面" |
|
||||||
} |
|
||||||
], |
|
||||||
"CLOUD189_ACCOUNT_LIST": [ |
|
||||||
{ |
|
||||||
"cloud189_phone": "18888xxxxxx", |
|
||||||
"cloud189_password": "Sitoi" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"cloud189_phone": "多账号 手机号填写,请参考上面", |
|
||||||
"cloud189_password": "多账号 密码填写,请参考上面" |
|
||||||
} |
|
||||||
], |
|
||||||
"POJIE_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"pojie_cookie": "htVD_2132_client_token=xxxxxx; htVD_2132_connect_is_bind=xxxxxx; htVD_2132_connect_uin=xxxxxx; htVD_2132_nofavfid=xxxxxx; htVD_2132_smile=xxxxxx; Hm_lvt_46d556462595ed05e05f009cdafff31a=xxxxxx; htVD_2132_saltkey=xxxxxx; htVD_2132_lastvisit=xxxxxx; htVD_2132_client_created=xxxxxx; htVD_2132_auth=xxxxxx; htVD_2132_connect_login=xxxxxx; htVD_2132_home_diymode=xxxxxx; htVD_2132_visitedfid=xxxxxx; htVD_2132_viewid=xxxxxx; KF4=xxxxxx; htVD_2132_st_p=xxxxxx; htVD_2132_lastcheckfeed=xxxxxx; htVD_2132_sid=xxxxxx; htVD_2132_ulastactivity=xxxxxx; htVD_2132_noticeTitle=xxxxxx;" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"pojie_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"MGTV_PARAMS_LIST": [ |
|
||||||
{ |
|
||||||
"mgtv_params": "uuid=xxxxxx&uid=xxxxxx&ticket=xxxxxx&token=xxxxxx&device=iPhone&did=xxxxxx&deviceId=xxxxxx&appVersion=6.8.2&osType=ios&platform=iphone&abroad=0&aid=xxxxxx&nonce=xxxxxx×tamp=xxxxxx&appid=xxxxxx&type=1&sign=xxxxxx&callback=xxxxxx" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"mgtv_params": "多账号 请求参数填写,请参考上面" |
|
||||||
} |
|
||||||
], |
|
||||||
"PICACOMIC_ACCOUNT_LIST": [ |
|
||||||
{ |
|
||||||
"picacomic_email": "Sitoi", |
|
||||||
"picacomic_password": "xxxxxx" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"picacomic_email": "多账号 账号填写,请参考上面", |
|
||||||
"picacomic_password": "多账号 密码填写,请参考上面" |
|
||||||
} |
|
||||||
], |
|
||||||
"MEIZU_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"meizu_cookie": "aliyungf_tc=xxxxxx; logined_uid=xxxxxx; acw_tc=xxxxxx; LT=xxxxxx; MZBBS_2132_saltkey=xxxxxx; MZBBS_2132_lastvisit=xxxxxx; MZBBSUC_2132_auth=xxxxxx; MZBBSUC_2132_loginmember=xxxxxx; MZBBSUC_2132_ticket=xxxxxx; MZBBS_2132_sid=xxxxxx; MZBBS_2132_ulastactivity=xxxxxx; MZBBS_2132_auth=xxxxxx; MZBBS_2132_loginmember=xxxxxx; MZBBS_2132_lastcheckfeed=xxxxxx; MZBBS_2132_checkfollow=xxxxxx; MZBBS_2132_lastact=xxxxxx;", |
|
||||||
"draw_count": "1" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"meizu_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)", |
|
||||||
"draw_count": "多账号 抽奖次数设置" |
|
||||||
} |
|
||||||
], |
|
||||||
"ZHIYOO_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"zhiyoo_cookie": "ikdQ_9242_saltkey=xxxxxx; ikdQ_9242_lastvisit=xxxxxx; ikdQ_9242_onlineusernum=xxxxxx; ikdQ_9242_sendmail=1; ikdQ_9242_seccode=xxxxxx; ikdQ_9242_ulastactivity=xxxxxx; ikdQ_9242_auth=xxxxxx; ikdQ_9242_connect_is_bind=xxxxxx; ikdQ_9242_nofavfid=xxxxxx; ikdQ_9242_checkpm=xxxxxx; ikdQ_9242_noticeTitle=1; ikdQ_9242_sid=xxxxxx; ikdQ_9242_lip=xxxxxx; ikdQ_9242_lastact=xxxxxx" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"zhiyoo_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"WEIBO_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"weibo_show_url": "https://api.weibo.cn/2/users/show?wm=xxxxxx&launchid=xxxxxx&b=xxxxxx&from=xxxxxx&c=xxxxxx&networktype=xxxxxx&v_p=xxxxxx&skin=xxxxxx&v_f=xxxxxx&lang=xxxxxx&sflag=xxxxxx&ua=xxxxxx&ft=xxxxxx&aid=xxxxxx&has_extend=xxxxxx&uid=xxxxxx&gsid=xxxxxx&sourcetype=&get_teenager=xxxxxx&s=xxxxxx&has_profile=xxxxxx" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"weibo_show_url": "多账号 show_url 填写,请参考上面,show_url 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"DUOKAN_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"duokan_cookie": "user_id=xxxxxx; token=xxxxxx; user_gender=xxxxxx; device_id=xxxxxx; app_id=xxxxxx; build=xxxxxx; short_version=xxxxxx" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"duokan_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"CSDN_COOKIE_LIST": [ |
|
||||||
{ |
|
||||||
"csdn_cookie": "uuid_tt_dd=xxxxxx; _ga=xxxxxx; UserName=xxxxxx; UserInfo=xxxxxx; UserToken=xxxxxx; UserNick=xxxxxx; AU=768; UN=xxxxxx; BT=xxxxxx; p_uid=xxxxxx; Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=xxxxxx; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=xxxxxx; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=xxxxxx dc_sid=xxxxxx; c_segment=xxxxxx; dc_session_id=xxxxxx; csrfToken=xxxxxx; c_first_ref=xxxxxx; c_first_page=xxxxxx; c_page_id=xxxxxx; announcement-new=xxxxxx; log_Id_click=xxxxxx; c_pref=xxxxxx; c_ref=xxxxxx; dc_tos=xxxxxx; log_Id_pv=xxxxxx; log_Id_view=xxxxxx" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"csdn_cookie": "多账号 cookie 填写,请参考上面,cookie 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"WZYD_DATA_LIST": [ |
|
||||||
{ |
|
||||||
"wzyd_data": "areaId=xxxxxx&roleId=xxxxxx&gameId=xxxxxx&serverId=xxxxxx&gameOpenid=xxxxxx&userId=xxxxxx&appVersion=xxxxxx&cClientVersionName=xxxxxx&platid=xxxxxx&source=xxxxxx&algorithm=xxxxxx&version=xxxxxx×tamp=xxxxxx&appid=xxxxxx&openid=xxxxxx&sig=xxxxxx&encode=2&msdkEncodeParam=xxxxxx&cSystem=xxxxxx&h5Get=xxxxxx&msdkToken=&appOpenid=xxxxxx" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"wzyd_data": "多账号 data 填写,请参考上面,data 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"WOMAIL_URL_LIST": [ |
|
||||||
{ |
|
||||||
"womail_url": "https://nyan.mail.wo.cn/cn/sign/index/index?mobile=xxxxxx&userName=&openId=xxxxxx" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"womail_url": "多账号 url 填写,请参考上面,url 以实际获取为准(遇到特殊字符如双引号\" 请加反斜杠转义)" |
|
||||||
} |
|
||||||
], |
|
||||||
"HLX": |
|
||||||
{ |
|
||||||
"user": "", |
|
||||||
"password": "" |
|
||||||
}, |
|
||||||
"163game": |
|
||||||
{ |
|
||||||
"Authorization": "" |
|
||||||
} |
|
||||||
} |
|
@ -1,18 +0,0 @@ |
|||||||
import os |
|
||||||
|
|
||||||
|
|
||||||
def getENv(): |
|
||||||
ql_new = '/ql/config/env.sh' |
|
||||||
config_file = '/ql/config/check.json' |
|
||||||
print('尝试检查环境\n') |
|
||||||
if os.path.exists(ql_new): |
|
||||||
print('成功 当前环境为青龙面板继续执行') |
|
||||||
if os.path.exists(config_file): |
|
||||||
print('已找到配置文件') |
|
||||||
else: |
|
||||||
print('未找到配置文件\n') |
|
||||||
print('请添加/ql/config/check.json') |
|
||||||
exit(1) |
|
||||||
else: |
|
||||||
print('失败 请检查环境') |
|
||||||
exit(0) |
|
@ -0,0 +1,245 @@ |
|||||||
|
import json |
||||||
|
import os |
||||||
|
import random |
||||||
|
import re |
||||||
|
import time |
||||||
|
import traceback |
||||||
|
# import tomli_w |
||||||
|
from functools import wraps |
||||||
|
|
||||||
|
import tomli |
||||||
|
|
||||||
|
from checksendNotify import send |
||||||
|
|
||||||
|
|
||||||
|
def toml_to_json(toml_path, to_json_path): |
||||||
|
""" |
||||||
|
:param toml_path: 需要转换的toml文件的路径 |
||||||
|
:param to_json_path: 需要输出的json文件路径 |
||||||
|
:return: NONE |
||||||
|
""" |
||||||
|
with open(toml_path, "rb") as f: |
||||||
|
toml_dict = tomli.load(f) |
||||||
|
json_date = json.dumps(toml_dict, indent=4, ensure_ascii=False) |
||||||
|
with open(to_json_path, 'w', encoding="utf8") as s: |
||||||
|
s.write(json_date) |
||||||
|
|
||||||
|
|
||||||
|
# def json_to_toml(json_path, to_toml_path): |
||||||
|
# with open(json_path, "r", encoding="utf8") as f: |
||||||
|
# json_dict = json.load(f) |
||||||
|
# with open(to_toml_path, "wb") as f: |
||||||
|
# tomli_w.dump(json_dict, f) |
||||||
|
|
||||||
|
class config_get(object): |
||||||
|
def __init__(self, config_path=None): |
||||||
|
""" |
||||||
|
config_path: 自定义配置文件路径 |
||||||
|
config_file: 实际使用的配置文件路径 |
||||||
|
config_format: 实际使用的配置文件格式 |
||||||
|
""" |
||||||
|
self.config_path = config_path |
||||||
|
self.config_file = self.get_config_file() |
||||||
|
self.config_format = self.get_config_format() |
||||||
|
|
||||||
|
def get_config_format(self): |
||||||
|
if self.config_file.endswith('.toml'): |
||||||
|
return "toml" |
||||||
|
else: |
||||||
|
return "json" |
||||||
|
|
||||||
|
def get_config_file(self): |
||||||
|
ql_new = '/ql/config/env.sh' |
||||||
|
json_config_file = '/ql/config/check.json' |
||||||
|
toml_config_file = '/ql/config/check.toml' |
||||||
|
print('开始检查环境\n') |
||||||
|
if os.path.exists(ql_new): |
||||||
|
print('成功 当前环境为青龙面板继续执行\n') |
||||||
|
if self.config_path is not None: |
||||||
|
print("使用了自定义路径的配置文件") |
||||||
|
return self.config_path |
||||||
|
elif os.path.exists(toml_config_file): |
||||||
|
print("未使用自定义配置文件,开始从ql/config中检测") |
||||||
|
print("检测到toml格式配置文件\n") |
||||||
|
return toml_config_file |
||||||
|
elif os.path.exists(json_config_file): |
||||||
|
print("检测到json格式配置文件\n") |
||||||
|
return json_config_file |
||||||
|
else: |
||||||
|
print("未检测到配置文件,程序退出") |
||||||
|
exit(1) |
||||||
|
else: |
||||||
|
print('失败 请检查环境') |
||||||
|
exit(0) |
||||||
|
return 0 |
||||||
|
|
||||||
|
def get_real_key(self, expression): |
||||||
|
""" |
||||||
|
从配置文件中获取,re表达式想要的KEY |
||||||
|
:return: |
||||||
|
""" |
||||||
|
pattern = re.compile(expression, re.I) |
||||||
|
real_key = '' |
||||||
|
if self.config_format == "toml": |
||||||
|
for key in self.get_key_for_toml(self.config_file): |
||||||
|
if pattern.match(key) is not None: |
||||||
|
real_key = key |
||||||
|
else: |
||||||
|
for key in self.get_key_for_json(self.config_file): |
||||||
|
if pattern.match(key) is not None: |
||||||
|
real_key = key |
||||||
|
if real_key is not '': |
||||||
|
return real_key |
||||||
|
else: |
||||||
|
print("啊哦没有找到") |
||||||
|
exit(1) |
||||||
|
|
||||||
|
def get_value(self, expression): |
||||||
|
real_key = self.get_real_key(expression) |
||||||
|
if self.config_format == "toml": |
||||||
|
return self.get_value_for_toml(self.config_file, real_key) |
||||||
|
else: |
||||||
|
return self.get_value_for_json(self.config_file, real_key) |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def get_value_for_toml(toml_path, key): |
||||||
|
with open(toml_path, "rb") as f: |
||||||
|
try: |
||||||
|
toml_dict = tomli.load(f) |
||||||
|
return toml_dict.get(key) |
||||||
|
except tomli.TOMLDecodeError: |
||||||
|
print( |
||||||
|
f"错误:配置文件 {toml_path} 格式不对,请学习 https://toml.io/cn/v1.0.0\n错误信息:\n{traceback.format_exc()}" |
||||||
|
) |
||||||
|
exit(1) |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def get_value_for_json(json_path, key): |
||||||
|
with open(json_path, "r", encoding="utf8") as f: |
||||||
|
try: |
||||||
|
json_dict = json.load(f) |
||||||
|
return json_dict.get(key) |
||||||
|
except json.decoder.JSONDecodeError: |
||||||
|
print(f"错误:配置文件 {json_path} 格式不对,错误信息{traceback.format_exc()}") |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def get_key_for_toml(toml_path): |
||||||
|
with open(toml_path, "rb") as f: |
||||||
|
try: |
||||||
|
toml_dict = tomli.load(f) |
||||||
|
return toml_dict.keys() |
||||||
|
except tomli.TOMLDecodeError: |
||||||
|
print( |
||||||
|
f"错误:配置文件 {toml_path} 格式不对,请学习 https://toml.io/cn/v1.0.0\n错误信息:\n{traceback.format_exc()}" |
||||||
|
) |
||||||
|
exit(1) |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def get_key_for_json(json_path): |
||||||
|
with open(json_path, "r", encoding="utf8") as f: |
||||||
|
try: |
||||||
|
json_dict = json.load(f) |
||||||
|
return json_dict.keys() |
||||||
|
except json.decoder.JSONDecodeError: |
||||||
|
print(f"错误:配置文件 {json_path} 格式不对,错误信息{traceback.format_exc()}") |
||||||
|
|
||||||
|
|
||||||
|
class check(object): |
||||||
|
def __init__(self, run_script_name, run_script_expression, Configuration_flag=False): |
||||||
|
""" |
||||||
|
:param run_script_name: 执行脚本的说明 |
||||||
|
:param run_script_expression: 需要获取的配置键的re表达式 |
||||||
|
:param Configuration_flag: 是否只检测True或False(默认为False) |
||||||
|
""" |
||||||
|
self.run_script_name = run_script_name |
||||||
|
self.run_script_expression = run_script_expression |
||||||
|
self.Configuration_flag = Configuration_flag |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def other_task(): |
||||||
|
change_db() |
||||||
|
|
||||||
|
def __call__(self, func): |
||||||
|
@wraps(func) |
||||||
|
def wrapper(*args, **kwargs): |
||||||
|
if not self.Configuration_flag: |
||||||
|
config = config_get() |
||||||
|
value_list = config.get_value(self.run_script_expression) |
||||||
|
Push_message = "" |
||||||
|
num = 1 |
||||||
|
for value in value_list: |
||||||
|
print(f"<----------------账号【{num}】---------------->") |
||||||
|
print(f"获取到的账号信息为:{value}\n") |
||||||
|
num += 1 |
||||||
|
try: |
||||||
|
result = func(value=value) |
||||||
|
print(f"执行结果:\n{result}") |
||||||
|
Push_message += result |
||||||
|
except IndexError: |
||||||
|
print("可能是示例格式被运行\n错误信息:") |
||||||
|
print(f"{traceback.format_exc()}") |
||||||
|
Push_message += '' |
||||||
|
except AttributeError: |
||||||
|
print("可能是配置文件的键名出现问题\n" |
||||||
|
"例如:在此次更新中什么值得买的键名从smzdm_cookie变成了cookie\n") |
||||||
|
print(f"{traceback.format_exc()}") |
||||||
|
Push_message += '' |
||||||
|
except TypeError: |
||||||
|
print(f"{traceback.format_exc()}") |
||||||
|
Push_message += '' |
||||||
|
send(self.run_script_name, Push_message) |
||||||
|
else: |
||||||
|
config = config_get() |
||||||
|
flag = config.get_value(self.run_script_expression) |
||||||
|
if flag is not None and flag: |
||||||
|
print(f"开始执行{self.run_script_name}") |
||||||
|
func() |
||||||
|
else: |
||||||
|
print(f"设置为不执行{self.run_script_name}") |
||||||
|
|
||||||
|
return wrapper |
||||||
|
|
||||||
|
|
||||||
|
@check(run_script_name="随机定时", run_script_expression="QL_RANDOM_TIME", Configuration_flag=True) |
||||||
|
def change_db(): |
||||||
|
lines = [] |
||||||
|
first = True |
||||||
|
with open("/ql/db/crontab.db", "r", encoding="UTF-8") as f: |
||||||
|
for i in f.readlines(): |
||||||
|
if ( |
||||||
|
i.find("yuxian158_check_master") != -1 |
||||||
|
and i.find("ran_time") == -1 |
||||||
|
): |
||||||
|
record = json.loads(i) |
||||||
|
if record.get("isDisabled") == 0: |
||||||
|
if ( |
||||||
|
i.find("motto") != -1 |
||||||
|
or i.find("leetcode") != -1 |
||||||
|
or i.find("weather") != -1 |
||||||
|
or i.find("news") != -1 |
||||||
|
): |
||||||
|
record["schedule"] = change_time(record["schedule"], True) |
||||||
|
else: |
||||||
|
record["schedule"] = change_time(record["schedule"], first) |
||||||
|
if first: |
||||||
|
first = False |
||||||
|
lines.append(json.dumps(record, ensure_ascii=False) + "\n") |
||||||
|
else: |
||||||
|
lines.append(i) |
||||||
|
|
||||||
|
time_str = time.strftime("%Y-%m-%d", time.localtime()) |
||||||
|
os.system(f"copy /ql/db/crontab.db /ql/db/crontab.db.{time_str}.back") |
||||||
|
|
||||||
|
with open("/ql/db/crontab.db", "w", encoding="UTF-8") as f: |
||||||
|
f.writelines(lines) |
||||||
|
|
||||||
|
|
||||||
|
def change_time(time_str: str, first: bool): |
||||||
|
words = re.sub("\\s+", " ", time_str).split() |
||||||
|
if first: |
||||||
|
words[0] = str(random.randrange(0, 60, step=5)) |
||||||
|
words[1] = str(random.randrange(8, 9)) |
||||||
|
else: |
||||||
|
words[0] = str(random.randrange(60)) |
||||||
|
words[1] = str(random.randrange(22)) |
||||||
|
return " ".join(words) |
Loading…
Reference in new issue