dongyazhuo / imaotai

i茅台预约脚本
Apache License 2.0
29 stars 7 forks source link

是否可以整合一下小茅运 #19

Open yirenyishi opened 1 year ago

yirenyishi commented 1 year ago

我有小茅运的代码,可以分享,但是我试了,用登陆完的token做MT-Token-Wap,好像不行,有没有可能和MT-Device-ID有关系

yuban10703 commented 1 year ago

111 (2).zip 我照着这个写了个能酿酒的,不过token得自己抓包

yazhuo-wyze commented 1 year ago

可以提交一个PR试试.

Liujishou commented 1 year ago

https://github.com/mrabit/xmtravel 这个是旅行的

DavidNi666 commented 1 year ago

111 (2).zip 我照着这个写了个能酿酒的,不过token得自己抓包

可以改一版只做酿造的么?不定时运行, 这个貌似运行老报错

cjumna commented 1 year ago

期待整合版本..

yirenyishi commented 1 year ago

可以提交一个PR试试.

imaotai_api.zip

` import time import uuid

import requests

class IMaotaiApi: '''注意header里的device-id''' def init(self, ck, accname="default"): self.cookie = ck self.accname = accname self.headers = { "X-Requested-With": 'XMLHttpRequest', "Accept-Language": 'zh-cn', "MT-Request-ID": '', "User-Agent": "Mozilla/5.0 (Linux; Android 12; Redmi K30 5G Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/96.0.4664.104 Mobile Safari/537.36 moutaiapp/1.4.1 device-id/4dd0bc97c51b090ad3dd36abf3f34d27", "Referer": "https://h5.moutai519.com.cn/gux/game/main?appConfig=2_1_2", "Cookie": ck, "Accept": "application/json, text/javascript, /; q=0.01", "Content-Type": "application/json", "MT-APP-Version": "1.4.1", "Origin": "https://h5.moutai519.com.cn", } self.IMAOTAI_URL = 'https://h5.moutai519.com.cn/game/'

def getUserIsolationPageData(self):
    self.log('查询小茅运信息')
    url = self.IMAOTAI_URL + 'isolationPage/getUserIsolationPageData'
    self.headers['MT-Request-ID'] = str(uuid.uuid1())
    session = requests.session()
    resp = session.get(url=url, params={"__timestamp": int(time.time() * 1000)}, headers=self.headers)
    if resp.status_code == 200:
        data = resp.json().get("data")
        # energy: 耐力值
        # xmy: 小茅运值
        energy = data.get("energy")
        energyReward = data.get("energyReward")
        xmy = data.get("xmy")
        self.log("当前耐力值:%s" % energy)
        self.log("当前小茅运值:%s" % xmy)
        # status: 1.未开始 2.进行中 3.已完成
        # remainChance: 今日剩余旅行次数
        # travelEndTime: 旅行结束时间
        xmTravel = data.get("xmTravel")
        status = xmTravel.get("status")
        remainChance = xmTravel.get("remainChance")
        travelEndTime = xmTravel.get("travelEndTime")
        endTime = travelEndTime

        # 可领取申购耐力值奖励
        value = energyReward.get("value")
        if value != 0:
            self.getUserEnergyAward()
            energy = energy + value

        currentPeriodCanConvertXmyNum = self.getExchangeRateInfo()
        self.log("本月剩余旅行奖励:%s" % currentPeriodCanConvertXmyNum)

        if currentPeriodCanConvertXmyNum <= 0:
            return

        if status == 1:
            if energy < 100:
                self.log("耐力不足, 当前耐力值:%s" % energy)
                return
        if status == 2:
            self.log("旅行暂未结束")
            endTimeStr = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(endTime))
            self.log("本次旅行结束时间:%s" % endTimeStr)
            self.log('本次旅行剩余时间:%s 秒' % (int(endTime) - int(time.time())))
            return

        if status == 3:
            travelRewardXmy = self.getXmTravelReward()
            self.receiveReward(travelRewardXmy)
            self.shareReward()
            # 本次旅行奖励领取后, 当月实际剩余旅行奖励
            if currentPeriodCanConvertXmyNum - travelRewardXmy <= 0:
                self.log("当月无可领取奖励")

        self.log("当日剩余旅行次数:%s" % remainChance)
        if remainChance != 0:
            self.startTravel()
    else:
        self.log("登录过期 %s" % resp.status_code)
        url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=341cc576-617f-432b-9ea9-30a46091867d'

def getUserEnergyAward(self):
    """获取申购耐力值"""
    url = self.IMAOTAI_URL + 'isolationPage/getUserEnergyAward'
    self.headers['MT-Request-ID'] = str(uuid.uuid1())
    session = requests.session()
    resp = session.post(url=url, headers=self.headers)
    if resp.json().get("code") == 200:
        self.log("耐力值领取成功")
    else:
        self.log("耐力值领取失败")

def getExchangeRateInfo(self):
    """获取本月剩余奖励耐力值"""
    url = self.IMAOTAI_URL + 'synthesize/exchangeRateInfo'
    self.headers['MT-Request-ID'] = str(uuid.uuid1())
    session = requests.session()
    resp = session.get(url=url, headers=self.headers, params={"__timestamp": int(time.time() * 1000)})
    return resp.json().get("data").get("currentPeriodCanConvertXmyNum")

def getXmTravelReward(self):
    """查询旅行奖励"""
    url = self.IMAOTAI_URL + 'xmTravel/getXmTravelReward'
    self.headers['MT-Request-ID'] = str(uuid.uuid1())
    session = requests.session()
    resp = session.get(url=url, headers=self.headers, params={"__timestamp": int(time.time() * 1000)})
    if resp.json().get("code") == 2000:
        self.log("可获取小茅运: %s" % resp.json().get("data").get("travelRewardXmy"))
        return resp.json().get("data").get("travelRewardXmy")

def receiveReward(self, travelRewardXmy):
    """领取旅行奖励"""
    url = self.IMAOTAI_URL + 'xmTravel/receiveReward'
    self.headers['MT-Request-ID'] = str(uuid.uuid1())
    session = requests.session()
    resp = session.post(url=url, headers=self.headers)
    if resp.json().get("code") == 2000:
        self.log("成功领取旅行奖励小茅运:%s" % travelRewardXmy)

def shareReward(self):
    """每日首次分享可领取耐力"""
    self.log("每日首次分享")
    url = self.IMAOTAI_URL + 'xmTravel/shareReward'
    self.headers['MT-Request-ID'] = str(uuid.uuid1())
    session = requests.session()
    resp = session.post(url=url, headers=self.headers)
    if resp.json().get("code") == 2000:
        self.log("分享成功")
    else:
        self.log("分享失败:%s" % resp.json().get("message"))

def startTravel(self):
    """开始旅行"""
    url = self.IMAOTAI_URL + 'xmTravel/startTravel'
    self.headers['MT-Request-ID'] = str(uuid.uuid1())
    session = requests.session()
    resp = session.post(url=url, headers=self.headers)
    if resp.json().get("code") == 2000:
        self.log("开始旅行成功")
    else:
        self.log("开始旅行失败:%s" % resp.json().get("message"))

def log(self, strp):
    print(strp)
    # logger.info("账户:%s,%s" % (self.accname, strp))

`