diff --git a/团币.py b/团币.py deleted file mode 100644 index 24ee402..0000000 --- a/团币.py +++ /dev/null @@ -1,288 +0,0 @@ -""" - -time:2023.10.24 -定时:一天至少3-5次 -正常是每天700+币 -new Env('美团小团币游戏中心'); -抓包小程序或者app或者网页的token=Agxxxx 只要token后面的值 -环境变量: 名称:bd_mttoken 值:Agxxxxxxxxxx -多账号新建变量或者用 & 分开 -并发变量: bd_xtbbf = 1 默认不设置为1 - -更新日志: -10.24: 关闭授权,开源 -9.26: 优化报错,并发变量 -9.24: 新增账号并发运行 -9.23: 新增每日获取小团币,异常重试 - -""" -import random -import base64 -import os -import requests -import time -import string -from functools import partial -from user_agent import generate_user_agent -import threading - - -class Mttb: - def __init__(self, ck, num): - self.num = num - self.ck = ck - self.name = None - self.name = None - self.usid = None - self.actoken = None - self.xtb = None - self.wcxtb = None - self.ids = [] - self.ids1 = [] - self.id = None - self.tid = None - self.ua = generate_user_agent(os='android') - self.t_h = None - self.msg = '' - self.start = '' - self.end = '' - - def main(self): - if self.login(): - self.act() - self.cxtb() - if self.get_ids(): - self.get_id() - - def login(self): - try: - url = "https://open.meituan.com/user/v1/info/auditting?fields=auditAvatarUrl%2CauditUsername" - h = { - 'Connection': 'keep-alive', - 'Origin': 'https://mtaccount.meituan.com', - 'User-Agent': self.ua, - 'token': self.ck, - 'Referer': 'https://mtaccount.meituan.com/user/', - 'Accept-Encoding': 'gzip, deflate', - 'Accept-Language': 'zh-CN,en-US;q=0.9', - 'X-Requested-With': 'com.sankuai.meituan', - } - r = requests.get(url, headers=h) - - if 'username' in r.text: - rj = r.json() - self.name = rj["user"]["username"] - self.usid = rj["user"]["id"] - xx = f'😶账号{self.num}\n🆔{self.name}\n' - self.start += xx - return True - else: - print(r.json()) - except Exception as e: - print(f'登录异常:{e}') - exit(0) - - def act(self): - try: - url = 'https://game.meituan.com/mgc/gamecenter/front/api/v1/login' - h = { - 'Accept': 'application/json, text/plain, */*', - 'Content-Length': '307', - 'x-requested-with': 'XMLHttpRequest', - 'User-Agent': self.ua, - 'Content-Type': 'application/json;charset=UTF-8', - 'cookie': f'token={self.ck}' - } - sing = ''.join(random.choices(string.ascii_letters + string.digits, k=16)) - data = { - "mtToken": self.ck, - "deviceUUID": '0000000000000A3467823460D436CAB51202F336236F6A167191373531985811', - "mtUserId": self.usid, - "idempotentString": sing - } - r = requests.post(url, headers=h, json=data) - if r.json()['data']['loginInfo']['accessToken'] is not None: - self.actoken = r.json()['data']['loginInfo']['accessToken'] - else: - print(r.json()) - except Exception as e: - print(f'获取token异常:{e}') - exit(0) - - def cxtb(self): - try: - url = 'https://game.meituan.com/mgc/gamecenter/skuExchange/resource/counts?sceneId=3&gameId=10102' - self.t_h = { - 'Accept': 'application/json, text/plain, */*', - 'x-requested-with': 'XMLHttpRequest', - 'User-Agent': self.ua, - 'Content-Type': 'application/json;charset=UTF-8', - 'mtgsig': '', - 'actoken': self.actoken, - 'mtoken': self.ck, - 'cookie': f'token={self.ck}' - } - r = requests.get(url, headers=self.t_h) - rj = r.json() - if rj['msg'] == 'ok': - data = rj['data'] - for d in data: - if self.xtb is not None: - self.wcxtb = d['count'] - xx = f'💰当前小团币: {int(self.wcxtb)}({int(self.wcxtb) / 1000}元)\n' - self.end += xx - else: - self.xtb = d['count'] - xx = f'💰小团币: {int(self.xtb)}({int(self.xtb) / 1000}元)\n' - self.start += xx - print(self.start) - except Exception as e: - print(f'🆔{self.name}>>>⚠️查询团币异常:{e}') - - def get_ids(self): - try: - url = 'https://game.meituan.com/mgc/gamecenter/front/api/v1/mgcUser/task/queryMgcTaskInfo' - data = { - "externalStr": "", - "riskParams": {} - } - r = requests.post(url, headers=self.t_h, json=data) - rj = r.json() - if rj['msg'] == 'ok': - data_list = r.json()['data']['taskList'] - for i in data_list: - self.ids.append(i['id']) - if self.ids: - random.shuffle(self.ids) - # print(self.ids) - return True - else: - print(f'{self.name}>>>获取任务失败!') - except Exception as e: - print(f'获取任务异常:{e}') - exit(0) - - def get_id(self): - for idd in self.ids: - self.id = idd - if self.get_game(): - self.post_id() - xx = f'😊账号{self.num}\n🆔{self.name}>>>🎉运行完成!\n' - self.end += xx - self.cxtb() - bchd = int(self.wcxtb) - int(self.xtb) - xx = f'🔔获取小团币: {bchd}\n' - self.end += xx - print(self.end) - - def b64(self): - y_bytes = base64.b64encode(self.tid.encode('utf-8')) - y_bytes = y_bytes.decode('utf-8') - return y_bytes - - def get_game(self): - try: - self.tid = f'mgc-gamecenter{self.id}' - self.tid = self.b64() - url = f'https://game.meituan.com/mgc/gamecenter/common/mtUser/mgcUser/task/finishV2?taskId={self.tid}' - r = requests.get(url, headers=self.t_h) - if r.status_code == 200: - if r.json()['msg'] == 'ok': - # print(f'{self.name}>>>{self.id} 领取任务成功!') - time.sleep(1) - return True - elif '完成过' in r.text: - # print(f'{self.name}>>>{self.id} 完成过领取任务成功!') - time.sleep(1) - return True - else: - print(f'🆔{self.name}>>>🌚任务状态: {r.text}') - else: - print(f'🆔{self.name}>>>请求错误: ', r.status_code) - except Exception as e: - print(f'🆔{self.name}>>>⚠️获取任务异常:{e}') - - def post_id(self): - try: - url = 'https://game.meituan.com/mgc/gamecenter/front/api/v1/mgcUser/task/receiveMgcTaskReward?yodaReady=h5&csecplatform=4&csecversion=2.1.0&mtgsig={}' - data = { - "taskId": self.id, - "externalStr": "", - "riskParams": {} - } - r = requests.post(url, headers=self.t_h, json=data) - if r.status_code == 200: - if r.json()['msg'] == 'ok': - # print(f'{self.name}>>>{self.id},完成任务!\n') - time.sleep(1) - elif '异常' in r.text: - # print(f'{self.name}>>>{self.id},状态异常,任务不可领奖!\n') - time.sleep(1) - else: - print(f'{self.name}>>>{self.id},{r.text}\n') - time.sleep(1) - else: - print('请求错误!') - except Exception as e: - print(f'🆔{self.name}>>>⚠️完成任务异常:{e}') - - -if __name__ == '__main__': - print = partial(print, flush=True) - print('🔔当前版本V10.24\n🔔tg频道:https://t.me/dzr_byg') - - token = os.environ.get("bd_mttoken") - if token is None: - print(f'⛔️未获取到ck变量:请检查变量是否填写') - exit(0) - if '&' in token: - tokens = token.split('&') - else: - tokens = [token] - - bf = os.environ.get("bd_xtbbf") - if bf is None: - print(f'⛔️为设置并发变量,默认1') - bf = 2 - - print(f'✅获取到{len(tokens)}个账号') - print(f'🔔设置并发数: {bf}') - - - def run_account(tk, n): - run = Mttb(tk, n) - run.main() - - - threads = [] - s_e = [] - for i in range(len(tokens)): - a = i + 1 - s_e.append(a) - t = threading.Thread(target=run_account, args=(tokens[i], a,)) - threads.append(t) - if str(len(threads)) == str(bf): - print(f'==================⏳账号{s_e[0]}-{s_e[-1]}==================') - for t in threads: - t.start() - time.sleep(5) - print(f'⏳账号{s_e[0]}-{s_e[-1]}任务运行中!') - for t in threads: - t.join() - threads = [] - s_e = [] - time.sleep(5) - if threads == [] and s_e == []: - print(f'🔔全部账号运行完成!!!') - else: - print(f'==================账号{s_e[0]}-{s_e[-1]}==================') - for t in threads: - t.start() - time.sleep(3) - print(f'⏳账号{s_e[0]}-{s_e[-1]}任务运行中!') - for t in threads: - t.join() - threads = [] - s_e = [] - time.sleep(5) - print(f'🔔全部账号运行完成!!!')