133 lines
4.4 KiB
JavaScript
133 lines
4.4 KiB
JavaScript
// # Source: https://github.com/sudojia/AutoTaskScript/blob/script/src/web/sudojia_aliyundrive.js
|
||
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/web/sudojia_aliyundrive.js
|
||
// # Repo: sudojia/AutoTaskScript
|
||
// # Path: src/web/sudojia_aliyundrive.js
|
||
// # UploadedAt: 2025-04-28T19:26:13+08:00
|
||
// # SHA256: 75ec43e2a22bf9b15950ca462ac41bcfb78ba18983f400ec906670a29fd035c9
|
||
// # Category: APP版/账密
|
||
// # Evidence: username/password/mobile/login
|
||
//
|
||
|
||
/**
|
||
* 阿里云盘每日签到
|
||
*
|
||
* 移除了获取奖励, 目前仅支持签到
|
||
* export ALI_REFRESH_TOKEN = 'xxxxx'
|
||
* 多账号用 & 或换行
|
||
*
|
||
* @author Telegram@sudojia
|
||
* @site https://blog.imzjw.cn
|
||
* @date 2024/5/18
|
||
*
|
||
* const $ = new Env('阿里云盘签到')
|
||
* cron: 35 10 * * *
|
||
*/
|
||
const initScript = require('../utils/initScript')
|
||
const {$, notify, sudojia, checkUpdate} = initScript('阿里云盘签到');
|
||
// 环境变量
|
||
const refreshTokenList = process.env.ALI_REFRESH_TOKEN ? process.env.ALI_REFRESH_TOKEN.split(/[\n&]/) : [];
|
||
// 消息推送
|
||
let message = '';
|
||
// 阿里云盘 API 配置
|
||
const API_CONFIG = {
|
||
"SIGN_IN_API": "https://member.aliyundrive.com/v1/activity/sign_in_list",
|
||
"GET_REWARD_API": "https://member.aliyundrive.com/v1/activity/sign_in_reward?_rx-s=mobile",
|
||
"ACCESS_TOKEN_API": "https://auth.aliyundrive.com/v2/account/token"
|
||
}
|
||
|
||
!(async () => {
|
||
await checkUpdate($.name, refreshTokenList);
|
||
for (let i = 0; i < refreshTokenList.length; i++) {
|
||
const index = i + 1;
|
||
const refreshToken = refreshTokenList[i];
|
||
console.log(`\n*****第[${index}]个${$.name}账号*****`);
|
||
message += `📣====${$.name}账号[${index}]====📣\n`;
|
||
await main(refreshToken);
|
||
await $.wait(sudojia.getRandomWait(2300, 2800));
|
||
}
|
||
if (message) {
|
||
await notify.sendNotify(`「${$.name}」`, `${message}`);
|
||
}
|
||
})().catch((e) => $.logErr(e)).finally(() => $.done());
|
||
|
||
async function main(refreshToken) {
|
||
const accessToken = await getAccessToken(refreshToken);
|
||
if (!accessToken) {
|
||
console.log('获取access_token失败, refresh_token可能有误');
|
||
return;
|
||
}
|
||
await $.wait(sudojia.getRandomWait(1200, 2000));
|
||
const signInCount = await AliSignIn(refreshToken, accessToken);
|
||
// await $.wait(1000);
|
||
// await getReward(accessToken, signInCount);
|
||
}
|
||
|
||
/**
|
||
* 获取 access_token
|
||
*
|
||
* @returns {Promise<void>}
|
||
*/
|
||
async function getAccessToken(refreshToken) {
|
||
try {
|
||
const params = {
|
||
grant_type: 'refresh_token',
|
||
refresh_token: refreshToken
|
||
}
|
||
const data = await sudojia.sendRequest(API_CONFIG.ACCESS_TOKEN_API, 'post', {}, params);
|
||
if (!data.access_token) {
|
||
console.log('获取access_token失败, refresh_token可能有误');
|
||
process.exit(0);
|
||
}
|
||
message += `【用户昵称】${data.nick_name}(${data.user_name})\n`;
|
||
return data.access_token;
|
||
} catch (e) {
|
||
$.logErr('获取access_token接口异常:', e);
|
||
return null;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 签到
|
||
*
|
||
* @returns {Promise<void>}
|
||
*/
|
||
async function AliSignIn(refreshToken, accessToken) {
|
||
try {
|
||
const params = {
|
||
grant_type: 'refresh_token',
|
||
refresh_token: refreshToken
|
||
}
|
||
const headers = {
|
||
'Content-Type': 'application/json',
|
||
'Authorization': `Bearer ${accessToken}`
|
||
}
|
||
const data = await sudojia.sendRequest(API_CONFIG.SIGN_IN_API, 'post', headers, params);
|
||
console.log(data.success ? '签到成功\n' : '签到失败\n');
|
||
message += data.success ? '【签到状态】签到成功\n' : '【签到状态】签到失败\n'
|
||
message += `【签到统计】已累计签到${data.result.signInCount}天\n\n`;
|
||
// 返回签到天数
|
||
return data.result.signInCount;
|
||
} catch (e) {
|
||
$.logErr('请求签到接口异常:', e);
|
||
return null;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取签到奖励
|
||
*
|
||
* @returns {Promise<void>}
|
||
*/
|
||
async function getReward(accessToken, signInCount) {
|
||
const params = {
|
||
signInDay: signInCount
|
||
}
|
||
const headers = {
|
||
'Content-Type': 'application/json',
|
||
'Authorization': `Bearer ${accessToken}`
|
||
}
|
||
const data = await sudojia.sendRequest(API_CONFIG.GET_REWARD_API, 'post', headers, params);
|
||
console.log(`奖励: ${data.result.notice}\n`);
|
||
message += `【签到奖励】${data.result.notice}\n`
|
||
}
|