mirror of https://github.com/yuxian158/check.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.4 KiB
127 lines
4.4 KiB
3 years ago
|
# -*- coding: utf-8 -*-
|
||
|
"""
|
||
|
new Env('微博');
|
||
|
"""
|
||
|
from urllib import parse
|
||
|
|
||
|
import requests
|
||
|
import urllib3
|
||
|
|
||
|
from utils import check
|
||
|
|
||
|
urllib3.disable_warnings()
|
||
|
|
||
|
|
||
|
class WeiBo:
|
||
|
name = "微博"
|
||
|
|
||
|
def __init__(self, check_item):
|
||
|
self.check_item = check_item
|
||
|
|
||
|
@staticmethod
|
||
|
def sign(token):
|
||
|
headers = {"User-Agent": "Weibo/52588 (iPhone; iOS 14.5; Scale/3.00)"}
|
||
|
response = requests.get(
|
||
|
url=f"https://api.weibo.cn/2/checkin/add?c=iphone&{token}", headers=headers, verify=False
|
||
|
)
|
||
|
result = response.json()
|
||
|
if result.get("status") == 10000:
|
||
|
msg = [
|
||
|
{"name": "连续签到", "value": f'{result.get("data").get("continuous")}天'},
|
||
|
{"name": "本次收益", "value": result.get("data").get("desc")},
|
||
|
]
|
||
|
elif result.get("errno") == 30000:
|
||
|
msg = [
|
||
|
{"name": "每日签到", "value": "已签到"},
|
||
|
]
|
||
|
elif result.get("status") == 90005:
|
||
|
msg = [
|
||
|
{"name": "每日签到", "value": result.get("msg")},
|
||
|
]
|
||
|
else:
|
||
|
msg = [
|
||
|
{"name": "每日签到", "value": "签到失败"},
|
||
|
]
|
||
|
return msg
|
||
|
|
||
|
@staticmethod
|
||
|
def card(token):
|
||
|
headers = {"User-Agent": "Weibo/52588 (iPhone; iOS 14.5; Scale/3.00)"}
|
||
|
response = requests.get(
|
||
|
url=f"https://api.weibo.cn/2/!/ug/king_act_home?c=iphone&{token}", headers=headers, verify=False
|
||
|
)
|
||
|
result = response.json()
|
||
|
if result.get("status") == 10000:
|
||
|
nickname = result.get("data").get("user").get("nickname")
|
||
|
msg = [
|
||
|
{"name": "用户昵称", "value": nickname},
|
||
|
{"name": "每日打卡", "value": f'{result.get("data").get("signin").get("title").split("<")[0]}天'},
|
||
|
{"name": "积分总计", "value": result.get("data").get("user").get("energy")},
|
||
|
]
|
||
|
else:
|
||
|
msg = [
|
||
|
{"name": "每日打卡", "value": "活动过期或失效"},
|
||
|
]
|
||
|
return msg
|
||
|
|
||
|
@staticmethod
|
||
|
def pay(token):
|
||
|
headers = {
|
||
|
"Accept-Encoding": "gzip, deflate",
|
||
|
"Connection": "keep-alive",
|
||
|
"Content-Type": "application/x-www-form-urlencoded",
|
||
|
"Host": "pay.sc.weibo.com",
|
||
|
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Weibo (iPhone10,1__weibo__11.2.1__iphone__os14.5)",
|
||
|
}
|
||
|
data = token + "&lang=zh_CN&wm=3333_2001"
|
||
|
response = requests.post(
|
||
|
url=f"https://pay.sc.weibo.com/aj/mobile/home/welfare/signin/do", headers=headers, data=data, verify=False
|
||
|
)
|
||
|
try:
|
||
|
result = response.json()
|
||
|
if result.get("status") == 1:
|
||
|
msg = [
|
||
|
{"name": "微博钱包", "value": f'{result.get("score")} 积分'},
|
||
|
]
|
||
|
elif result.get("status") == 2:
|
||
|
msg = [
|
||
|
{"name": "微博钱包", "value": f"已签到"},
|
||
|
]
|
||
|
info_response = requests.post(
|
||
|
url="https://pay.sc.weibo.com/api/client/sdk/app/balance", headers=headers, data=data
|
||
|
)
|
||
|
info_result = info_response.json()
|
||
|
msg += [
|
||
|
{"name": "当前现金", "value": f"{info_result.get('data').get('balance')} 元"},
|
||
|
]
|
||
|
else:
|
||
|
msg = [
|
||
|
{"name": "微博钱包", "value": f"Cookie失效"},
|
||
|
]
|
||
|
return msg
|
||
|
except Exception as e:
|
||
|
msg = [
|
||
|
{"name": "微博钱包", "value": f"Cookie失效"},
|
||
|
]
|
||
|
return msg
|
||
|
|
||
|
def main(self):
|
||
|
url = self.check_item.get("url")
|
||
|
query_dict = dict(parse.parse_qsl(parse.urlsplit(url).query))
|
||
|
token = "&".join([f"{key}={value}" for key, value in query_dict.items() if key in ["from", "uid", "s", "gsid"]])
|
||
|
sign_msg = self.sign(token=token)
|
||
|
card_msg = self.card(token=token)
|
||
|
pay_msg = self.pay(token=token)
|
||
|
msg = sign_msg + card_msg + pay_msg
|
||
|
msg = "\n".join([f"{one.get('name')}: {one.get('value')}" for one in msg])
|
||
|
return msg
|
||
|
|
||
|
|
||
|
@check(run_script_name="微博", run_script_expression="WEIBO")
|
||
|
def main(*args, **kwargs):
|
||
|
return WeiBo(check_item=kwargs.get("value")).main()
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|