Skip to content

Commit

Permalink
克拉漫播新增时长挂机任务 kilamanbo/vdrama
Browse files Browse the repository at this point in the history
  • Loading branch information
Wenmoux committed Mar 22, 2024
1 parent 0a49286 commit 21fbdf9
Show file tree
Hide file tree
Showing 5 changed files with 308 additions and 128 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ ql repo https://github.com/Wenmoux/checkbox.git "checkbox|install" "old" "module
<details>
<summary>更新日志</summary>

- 2024-03-22 克拉漫播增加时长挂机任务
- 2024-03-02 克拉漫播增加更多任务
- 2024-02-15
- 新增[pdg2pdf](https://www.pdg2pdf.com/)每日签到
Expand Down
128 changes: 0 additions & 128 deletions scripts/kilamanbo.js

This file was deleted.

211 changes: 211 additions & 0 deletions scripts/kilamanbo/dailyTask.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
let klmsg = "【克拉漫播】:\n"
let uid = ""
let titles =[]
const {makeRequest,getSign} = require("./tool.js")
let sleep = ms => new Promise(resolve => setTimeout(resolve, ms));


const checkIn = async () => {
const endpoint = '/v424/user/checkIn';
const data = 'timeZoneStr=Asia%2FShanghai&uid=-1&sign=';
try {
const response = await makeRequest('post', endpoint, data);
const msg = response?.h?.msg;
// console.log(response);
return msg;
} catch (error) {
const msg = error.response ?.data?.h ?.msg || error.message;
console.error(msg);
return msg;
}
};



const queryBeanBalance = async () => {
const endpoint = '/v438/account/balance';
try {
const response = await makeRequest('get', endpoint); // 发送GET请求
if (response.h.code === 200) {
console.log('红豆余额查询成功:', response.b.gold);
return response.b.gold; // 返回红豆余额
} else {
console.log('红豆余额查询失败:', response.h.msg);
return response.h.msg;
}
} catch (error) {
console.error('红豆余额查询失败:', error);
throw error;
}
};



const ft = async (introduce) => {
const endpoint = '/v433/imgtxt/new/add';
const data = {
"groupActivityId": 0,
"imgList": [],
"introduce": introduce,
"source": 1
}
try {
const response = await makeRequest('post', endpoint, data, true);
// console.log(response)
msg = response ?.h ?.msg;
// console.log(JSON.stringify(response.b));
if (response.b) {
id = response.b.imgTxtResp.id
console.log(response.b.imgTxtResp)
console.log(`发帖 ${id} ${introduce}`)
// uid = response.b.imgTxtResp.userResp.id
await sleep(3000)
let data = `dynamicId=${id}&type=38`
let signedData = `${data}&sign=${getSign(data)}`;
let rss = await makeRequest('post', '/v435/dynamic/info/delete', signedData)
}
// return msg;
} catch (error) {
msg = error.response ?.data ?.h ?.msg || error.message;
console.error(msg);
// return msg;
}
};

const cx = async (r) => {
const endpoint = '/v433/user/level/info?uid=';
const data = 'uid=';
try {
const response = await makeRequest('get', endpoint);
// console.log(response)
const msg = response.b;
console.log("获取个人信息成功")
uid = msg.id
if(r)klmsg += ` 昵称:${msg.nickname}\n 等级:Lv${msg.level}(${msg.levelInfo.exp}/${msg.levelInfo.nextExp})\n`
// console.log(msg)
} catch (error) {
const msg = error.response ?.data ?.h ?.msg || error.message;
console.error("获取个人信息失败:" + msg);
if(r)klmsg += msg
// return "【克拉漫播】:" + msg;
}
};
const complete = async (bid, objectId) => {
const data = `missionBizId=${bid}&objectId=${objectId}&bizType=12&probe=0`;
const sign = getSign(data);
const signedData = `${data}&sign=${sign}`;
const endpoint = '/v424/user/daily/mission/complete';
const response = await makeRequest('post', endpoint, signedData);
console.log(response.h.msg);
};
const getVideo = async () => {
const endpoint = '/v433/small/video/plant/grass/timeline?pageNo=1&pageSize=10';
const response = await makeRequest('get', endpoint);
return response.b.data;
};
const getExp = async (id) => {
console.log("去领宝箱:", id)
const data = `giftPackType=${id}`
const endpoint = `/v435/user/gift/pack/get?giftPackType=${id}&sign=${getSign(data)}`;
const response = await makeRequest('get', endpoint);
console.log(response ?.h ?.msg);
};


const getLiveList = async () => {
const queryParams = 'type=0&genderType=0&pageNo=1&pageSize=20';
const signedParams = `${queryParams}&sign=${getSign(queryParams)}`;
const endpoint = `/v436/room/channel/adv/syndication/timeline?${signedParams}`;
try {
const response = await makeRequest('get', endpoint);
const rooms = response.b.data;
if (rooms && rooms.length > 0) {
console.log("获取成功,直播间id: " + rooms[0].roomResq.roomIdStr)
return rooms[0].roomResq.roomIdStr;
}
return null;
} catch (error) {
console.error('获取直播列表失败:', error);
throw error;
}
};

const getRedPacketId = async (roomId) => {
const queryParams = `roomId=${roomId}&sourceType=17009`;
const signedParams = `${queryParams}&sign=${getSign(queryParams)}`;
const endpoint = `/v436/red/packet/list/of/room?${signedParams}`;
// console.log(endpoint)
try {
const response = await makeRequest('get', endpoint);
// console.log(response)
const packets = response.b.sendRedPacketInfoList;
if (packets && packets.length > 0) {
console.log("获取成功,红包id: "+packets[0].id)
return "" + packets[0].id; // 返回第一个红包的ID
}else console.log("暂未查询到红包id")
return null;
} catch (error) {
console.error('获取红包ID失败:', error);
throw error;
}
}

const claimRedPacket = async (roomId, packetId, uid) => {
const data = `uid=${uid}&roomId=${roomId}&id=${packetId}&type=1`;
const signedData = `${data}&sign=${getSign(data)}`;
console.log(data)
const endpoint = '/v436/red/packet/get/lead/flow';
try {
const response = await makeRequest('post', endpoint, signedData);

console.log('领取红包结果:', response.h.msg);
return response.h.msg;
} catch (error) {
console.error('领取红包失败:', error);
throw error;
}
};

const claimDailyFoxGift = async () => {
const endpoint = '/v438/radio/drama/fox/gift/daily/mission/award';
try {
const response = await makeRequest('post', endpoint); // 注意这里不需要发送任何数据
if (response.h.code === 200) {
console.log('领取成功:', response.b.awardTips);
return response.b;
} else {
console.log('领取失败:', response.h.msg);
return response.h.msg;
}
} catch (error) {
console.error('留爪领取失败:', error);
throw error;
}
};


const task = async () => {
let checkinMsg = await checkIn();
let vList = await getVideo();
for (let i = 0; i < 5; i++) {
console.log(`看视频:${vList[i].videoResp.introduce}`)
titles[i] =vList[i].videoResp.introduce
await complete("21", vList[i].videoResp.idStr);
await complete("4", vList[i].videoResp.idStr);
}
for (k of [1, 2, 3]) {
await ft(titles[k])
}
await claimDailyFoxGift()
await cx()

let rid = await getLiveList()
let pid = await getRedPacketId(rid)
if(pid)await claimRedPacket(rid, pid, uid)
for (c of [1, 2, 3]) await getExp(c)
await cx(true)
let bean = await queryBeanBalance()
klmsg +=` 红豆:${bean}\n 签到:${checkinMsg}`
return klmsg
};
module.exports = task;
36 changes: 36 additions & 0 deletions scripts/kilamanbo/tool.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const axios = require('axios');
const md5 = require("crypto-js")
.MD5;
const BASE_URL = 'https://api.kilamanbo.com/api';
const headers = {
ua: config.kilamanbo.ua,
"_c": 20,
"x-auth-token": config.kilamanbo.authtoken
};

const makeRequest = async (method, endpoint, data = '', json = null) => {
const url = `${BASE_URL}${endpoint}`;
try {
if (json) headers["Content-Type"] = "application/json"
else headers["Content-Type"] = 'application/x-www-form-urlencoded'
const response = await axios({
method: method,
url: url,
data: data,
headers: headers
});
return response.data;
} catch (error) {
console.error(`Error with ${method.toUpperCase()} request to ${endpoint}`, error);
throw error;
}
};
const getSign = (data) => {
var str = data.split("&")
.sort()
.join("&");
return md5("nJi9o;/" + str)
.toString();
};

module.exports = {makeRequest,getSign};
Loading

0 comments on commit 21fbdf9

Please sign in to comment.