吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3533|回复: 34
收起左侧

[Java 转载] 【1-22更新】金山AirScript部署 阿里盘签到+token自动刷新+serverchan微信通知

  [复制链接]
kaion 发表于 2024-1-17 14:27
本帖最后由 kaion 于 2024-1-22 12:54 编辑

写在最前
去年底整过一个 知乎https://zhuanlan.zhihu.com/p/665002908传送门(fork小小猪),就是每二十几天要手动更新下阿里token,偶然逛论坛发现有 @侃遍天下无二人大佬整出来了自动刷新的
遂随手抄过来 改了下脚本,pushplus的推送似乎有每日上限,后来我弃用plusplus使用了 serverchan,推送挺稳定

具体用法可以参考 https://www.52pojie.cn/thread-1869673-1-1.html 模板都是一样的,因为他用的是copy我的模板,另有别的版本我都放 https://www.kdocs.cn/l/cj8tjHptRYdY 了,
最后推送部分根据自己实际情况填写
6517f771-e7c8-4988-890b-85624dc355cb_看图王.web.jpg 1e917c9b86d5de1e0ed0fb033189f99.jpg

闲话少叙 直接开搞
[JavaScript] 纯文本查看 复制代码
var tokenColumn = "A"; // 设置列号变量为 "A"
var qiandaoColumn = "B"; // 设置列号变量为 "B"
var serverchanColumn = "C"; // 设置列号变量为 "C"
var pushplusColumn = "D"; // 设置列号变量为 "D"
var pushColumn = "E"; // 设置列号变量为 "E"
var refreshdateColumn = "G"; // 设置列号变量为 "G"
var userIDColumn = "F"; // 设置列号变量为 "F"
var phoneColumn = "I"; // 设置列号变量为 "I"
var pushtotal = [];
  
for (let row = 1; row <= 10; row++) { // 循环遍历从第 1 行到第 10 行的数据
  var refresh_token = Application.Range(tokenColumn + row).Text; // 获取指定单元格的值
  var qiandao = Application.Range(qiandaoColumn + row).Text; // 获取指定单元格的值
  var servertoken = Application.Range(serverchanColumn + row).Text; // 获取指定单元格的值
  var pushtoken = Application.Range(pushplusColumn + row).Text; // 获取指定单元格的值
  var push = Application.Range(pushColumn + row).Text; // 获取指定单元格的值
  var rfdate = Application.Range(refreshdateColumn + row).Text; // 获取指定单元格的值
  var userID = Application.Range(userIDColumn + row).Text; // 获取指定单元格的值
  var userIDn = Application.Range(userIDColumn + (row +1)).Text; // 获取指定单元格的值  
  var phoneinfo =  Application.Range(phoneColumn + row).Text; // 获取指定单元格的值
  var errorinfo =  ""
  if (row ==1){
  pushtotal.push("【"+userID+"|用户】"); //首行写入第一个用户栏
    }
  else { //第二行开始执行检查是否同一user
    var userIDp = Application.Range(userIDColumn + (row -1)).Text; // 获取指定单元格的值  
    if (userID !== userIDp&qiandao == "是"){ //新user才加入新一行用户栏
    pushtotal.push("\n\n");
    pushtotal.push("【"+userID+"】"); 
    }
    }

if (refresh_token != "") { // 如果刷新令牌不为空
   if (qiandao == "是") {//签到&领奖开关
      //获取Bearer-token
      let data = HTTP.post("https://auth.aliyundrive.com/v2/account/token",
      JSON.stringify({
      "grant_type": "refresh_token",
      "refresh_token":refresh_token
      })
      )
      data = data.json()
      var access_token = data['access_token']
      var phone = data["user_name"]
      if (access_token !== undefined) {
       var phonef = phone.substring(0, 3)+"···"+phone.substring(6, 10);
       Application.Range(phoneColumn+row).Value = phonef //成功会写入账号到I列
      }
      else { // 如果报错
            var errorinfo = phoneinfo + "|token执行出错"
            console.log("单元格【" + tokenColumn + row + "】"+phoneinfo+"|token执行出错");
            pushtotal.push(errorinfo);
            continue; // 跳过当前行的后续操作()
            }
      Time.sleep(1000)      
      try {
         // 签到
        var access_token2 = 'Bearer ' + access_token; // 构建包含访问令牌的请求头
        let data2 = HTTP.post("https://member.aliyundrive.com/v1/activity/sign_in_list",
        JSON.stringify({ "_rx-s": "mobile" }),
        { headers: { "Authorization": access_token2 } }
        );
        data2 = data2.json(); // 将响应数据解析为 JSON 格式
        var signin_count = data2['result']['signInCount']; // 获取签到次数
        var result1 = phonef + " &#127383;,本月 "+ signin_count + "天" ;
        console.log(result1)
      }catch (error) {
      console.log("单元格【" + tokenColumn + row + "】签到出错,请检查API接口");
      var errorinfo = phoneinfo + "|签到出错,检查API接口"
      pushtotal.push(errorinfo);
      continue; // 跳过当前行的后续操作()
      }
      Time.sleep(1000) 
           try {
               // 领取奖励
              let data3 = HTTP.post(
              "https://member.aliyundrive.com/v1/activity/sign_in_reward?_rx-s=mobile",
               JSON.stringify({ "signInDay": signin_count }),
               { headers: { "Authorization": access_token2 } }
              );
              data3 = data3.json(); // 将响应数据解析为 JSON 格式
              var result2 = data3["result"]["notice"]; // 获取奖励描述
              }catch (error) {
               console.log("单元格【" + tokenColumn + row + "】领奖出错,请手动确认");
               var errorinfo = phoneinfo + "|领奖出错,请手动确认"
               pushtotal.push(errorinfo);
               continue; // 跳过当前行的后续操作()
              }

var loginnotice ="" //25天自动刷新token
var rfdate = Application.Range(refreshdateColumn + row).Text; // 获取指定单元格的值
if (rfdate !== '') {
  Application.Range(refreshdateColumn + row).NumberFormat = 'yyyy-mm-dd;@'
  var formatlogindate = Application.Range(refreshdateColumn + row).Text
function formatDateTime(date) {
  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  return `${year}-${pad(month)}-${pad(day)} `;
}
function pad(num) {
  return num.toString().padStart(2, '0');
}
const currentDate = new Date();
var formacurrentdate=formatDateTime(currentDate); 
function getDate(strDate){
    if(strDate==null||strDate===undefined) return null;
    var date = new Date();
    try{
      if(strDate == undefined){ 
        date= null;
      }else if(typeof strDate == 'string'){
        strDate = strDate.replace(/:/g,'-');
        strDate = strDate.replace(/ /g,'-');
        var dtArr = strDate.split("-");
        if(dtArr.length>=3&&dtArr.length<6){
          date=new Date(dtArr[0], dtArr[1], dtArr[2]);
        }else if(date.length>8){
          date=new Date(Date.UTC(dtArr[0],dtArr[1]-1,dtArr[2],dtArr[3]-8,dtArr[4],dtArr[5]));
        }
      }else{
        date = null;
      }
      return date;
    }catch(e){ 
      alert('格式化日期出现异常:' + e.message); 
    } 
}
var timeslong = getDate(formacurrentdate).getTime()-getDate(formatlogindate).getTime();
    if (timeslong >2160000000){//时间差单位毫秒(如果25天执行)
        let new_token = HTTP.post("https://auth.aliyundrive.com/v2/account/token", //刷新token
            JSON.stringify({
            "grant_type": "refresh_token",
            "refresh_token": refresh_token
              }));
              new_token = new_token.json()["refresh_token"]
        if (new_token) {
          Application.Range(tokenColumn + row).Value = new_token //重写新token
          Application.Range(refreshdateColumn + row).Value = formacurrentdate //刷新token后 更新当日时间
          console.log(new_token)
          console.log("token刷新成功");
          }
      var loginnotice = "&#9851;&#65039;阿里token成功刷新&#9851;&#65039;";
      pushtotal.push(result1,result2,loginnotice);
    }
    else{
    pushtotal.push(result1,result2);
    }
}
}
}
}
//以上遍历得到所有反馈到数组 pushtotal



var totalresult = String(pushtotal.join("\n"))
console.log(totalresult) //准备推送的内容,如果看到这个输出说明上面没问题
 const date = new Date();
 const formattedDate = `${date.getDate()}-${date.getMonth() + 1}-${date.getFullYear()}`;
 
//push post 推送部分
var totalpushtoken = Application.Range("C15").Text
   const urls = "https://sctapi.ftqq.com/"+totalpushtoken+".send"
     let response = HTTP.post(
       urls,
       {
         title: formattedDate+" 阿里盘签到",
         desp:totalresult,
       },
       {
         headers: {
           "Content-Type": "application/json",
         },
         timeout: 60000, // 设置超时时间
       }
     )     


-----------------------------
2022-1-22上面代码已更新,之前由于某些编辑器的原因复制粘贴出来的格式有变化导致Airscript报错
说明
25天自动刷新重写阿里token(首次部署需手动按照格式写入时间在G列,以后是基于此时间计算,25天会重新获取token并覆写老的,同时G列时间会更新。且推送通知)
页面上的代码 对应https://www.kdocs.cn/l/cj8tjHptRYdY 的最后一个表
整合推送全部用户 结果在一条信息中

免费评分

参与人数 7吾爱币 +7 热心值 +6 收起 理由
abc7940 + 1 + 1 谢谢@Thanks!
ddddx + 1 我很赞同!
depp73 + 1 + 1 谢谢@Thanks!
ppz800 + 1 我很赞同!
19955563626 + 1 + 1 我很赞同!
fzhhn + 2 + 1 我很赞同!
勤快的懒虫 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

schm168 发表于 2024-1-18 08:37
08:33:20.279    通知      脚本环境初始化...       <system>
08:33:21.451    错误      SyntaxError:Unexpected token (1:20)
                                     at 阿里云盘签到240118.js:1:20

运行日志中出现这个提示是哪里不对?
网络霸气家族 发表于 2024-1-17 18:04
大佬,我用的还是知乎上面的第一版,发邮件提醒的,能否出和知乎上面一样,出个详细的步骤呀,看到你们能自动更新token 真是羡慕,可惜不怎么怎么搞
lovemybird 发表于 2024-1-17 16:51
不错,挺有用的,希望未来阿里云盘成为主流(不限速的情况下)
深蓝的海 发表于 2024-1-17 19:07

感谢分享哦
小屁屁 发表于 2024-1-17 19:44
大佬牛逼,能不能做一个网易云自动登录签到的
52bulesky 发表于 2024-1-17 20:09
大佬牛逼,看不懂,感觉会火
头像被屏蔽
moruye 发表于 2024-1-17 20:47
提示: 作者被禁止或删除 内容自动屏蔽
sxs139 发表于 2024-1-17 20:51
感谢分享,学习了
lgdobo 发表于 2024-1-17 21:07
感谢分享   好好学习
wuai4444 发表于 2024-1-17 21:43
感谢分享哦
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 20:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表