卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章1829本站已运行4109

阿里AirScript一键部署 阿里盘自动签到+serverchan微信通知

去年底整过一个,就是每二十几天要手动更新下阿里token,偶然逛论坛发现有 @侃遍天下无二人大佬整出来了自动刷新的
遂随手抄过来 改了下脚本,pushplus的推送似乎有每日上限,后来我弃用plusplus使用了 serverchan,推送挺稳定
具体用法可以参考 https://www.52pojie.cn/thread-1869673-1-1.html 模板都是一样的,因为他用的是copy我的模板,另有别的版本我都放 https://www.kdocs.cn/l/cj8tjHptRYdY 了,
最后推送部分根据自己实际情况填写
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; // 跳过当前行的后续操作()
            }//kaion7
      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;"""";//kaion7@163.com
      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, // 设置超时时间
       }
     )  
 
卓越飞翔博客
上一篇: Python 幕网格生成器
下一篇: python脚本,有道翻译,一丢丢js逆向加解密

相关推荐

留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏