2 Star 1 Fork 1

Charles/github_ClassmateLin_jd_scripts

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
jd_small_magic_cube.py 4.53 KB
一键复制 编辑 原始数据 按行查看 历史
ClassmateLin 提交于 2021-09-04 00:39 +08:00 . 修改一些内容
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
# @Time : 2021/8/26 9:13 上午
# @File : jd_small_magic_cube.py
# @Project : jd_scripts
# @Cron : 36 0 * * *
# @Desc : 京东小魔方
import asyncio
import json
import aiohttp
from config import USER_AGENT
from urllib.parse import urlencode
from utils.jd_init import jd_init
from utils.console import println
from utils.logger import logger
from utils.process import process_start
@jd_init
class JdSmallMagicCube:
"""
京东小魔方
"""
headers = {
'referer': 'https://h5.m.jd.com/babelDiy/AIIGSCTJLLOQCNCDZJHK/3ir78c82wkBTA4kwtuAUb3F1T5ej/index.html',
'user-agent': USER_AGENT,
}
@logger.catch
async def request(self, session, function_id, body=None, method='GET'):
"""
请求数据
:param function_id:
:param body:
:param method:
:param session:
:return:
"""
try:
if not body:
body = {}
params = {
'functionId': function_id,
'body': json.dumps(body),
'appid': 'content_ecology',
'client': 'wh5',
'clientVersion': '10.1.2',
'area': ''
}
url = 'https://api.m.jd.com/client.action?' + urlencode(params)
if method == 'GET':
response = await session.get(url=url)
else:
response = await session.post(url=url)
text = await response.text()
data = json.loads(text)
return data
except Exception as e:
println('{}, 请求服务器数据失败, {}'.format(self.account, e.args))
return None
@logger.catch
async def do_tasks(self, session):
"""
做任务
:return:
"""
data = await self.request(session, 'getInteractionInfo')
if not data:
println('{}, 获取任务列表失败!'.format(self.account))
return
interaction_id = data['result']['interactionId']
shop_info = data['result']['shopInfoList']
task_pool_info = data['result']['taskPoolInfo']
task_pool_id = task_pool_info['taskPoolId']
task_sku_list = data['result']['taskSkuInfo']
for task in task_pool_info['taskList']:
task_name = task['taskName']
if task['taskStatus'] == 1:
println('{}, 任务:{}已完成!'.format(self.account, task_name))
continue
if task['taskId'] == 7:
for shop in shop_info:
res = await self.request(session, 'executeNewInteractionTask',
{"interactionId": interaction_id, "shopId": shop['shopId'],
"taskPoolId": task_pool_id, "taskType": task['taskId']})
println('{}, {}, {}'.format(self.account, task_name, res['result']['toast']))
await asyncio.sleep(2)
elif task['taskId'] == 10:
res = await self.request(session, 'executeNewInteractionTask',
{"interactionId": interaction_id, "taskPoolId": task_pool_id,
"taskType": task['taskId']})
println('{}, {}, {}'.format(self.account, task_name, res['result']['toast']))
await asyncio.sleep(2)
elif task['taskId'] == 4:
for sku in task_sku_list:
res = await self.request(session, 'executeNewInteractionTask', {
"sku": sku['skuId'],
"interactionId": interaction_id,
"taskPoolId": task_pool_id,
"taskType": task['taskId']})
println('{}, {}, {}'.format(self.account, task_name, res['result']['toast']))
await asyncio.sleep(2)
for i in range(10):
res = await self.request(session, 'getNewLotteryInfo', {"interactionId": interaction_id})
println('{}, 抽奖结果:{}'.format(self.account, res))
if res['result']['lotteryNum'] < 1:
break
await asyncio.sleep(2)
@logger.catch
async def run(self):
"""
程序入口
:return:
"""
async with aiohttp.ClientSession(cookies=self.cookies, headers=self.headers) as session:
await self.do_tasks(session)
if __name__ == '__main__':
process_start(JdSmallMagicCube, '京东小魔方')
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ritaswc/ClassmateLin_jd_scripts.git
git@gitee.com:ritaswc/ClassmateLin_jd_scripts.git
ritaswc
ClassmateLin_jd_scripts
github_ClassmateLin_jd_scripts
develop

搜索帮助