阿里云盘自动签到-python

参考https://zhuanlan.zhihu.com/p/629476969 , 每月要更新一次refresh_token
把代码放到阿里/华为/腾讯云上定时运行函数流就行了

 

# -*- coding:utf-8 -*-
import datetime
import requests
import typing as t
from dateutil.relativedelta import relativedelta

def get_token(refresh_token: str) -> t.Tuple[t.Any, t.Any]:
    """获取access_token和用户名"""
    resj = requests.post(
        'https://auth.aliyundrive.com/v2/account/token',
        json={
            'grant_type': 'refresh_token',
            'refresh_token': refresh_token
        }
    ).json()
    return resj.get('access_token'), resj.get('user_name')

def get_sign_in_count(access_token: str) -> str:
    """获取签到次数"""
    resj = requests.post(
        'https://member.aliyundrive.com/v1/activity/sign_in_list',
        json={'_rx-s': 'mobile'},
        headers={
            'Authorization': f'Bearer {access_token}'
        }
    ).json()

    return resj['result']['signInCount']

def get_sign_in_reward(access_token: str, sign_in_count: str) -> str:
    """获取签到奖励"""
    resj = requests.post(
        'https://member.aliyundrive.com/v1/activity/sign_in_reward?_rx-s=mobile',
        json={'signInDay': sign_in_count},
        headers={
            'Authorization': f'Bearer {access_token}'
        }
    ).json()
    return ' *** '.join([resj["result"]["name"], resj["result"]["description"], resj["result"]["notice"]])

def alisignin():
    refresh_token = '你的refresh_token'

    access_token, user_name = get_token(refresh_token)

    if access_token:
        sign_in_count = get_sign_in_count(access_token)
        print(f'用户名:{user_name} 签到成功,本月累计签到{sign_in_count}次')
        info = get_sign_in_reward(access_token, sign_in_count)
        print(f'用户名:{user_name} 领取奖励成功,获得 {info}')

        today = datetime.datetime.today()
        last_day = (relativedelta(months=1) + today).replace(day=1) - relativedelta(days=1)
        if today == last_day:
            print('已到月底')
            for _ in range(1, int(last_day.strftime('%d')) + 1):
                info = get_sign_in_reward(access_token, str(_))
                print(f'用户名:{user_name} 领取第{_}天奖励成功,获得 {info}')
    else:
        print('refresh_token异常,获取access_token失败')

if __name__ == '__main__':        alisignin()

原创文章,作者:geeklinux.cn,如若转载,请注明出处:https://www.geeklinux.cn/jsjc/906.html

(0)
geeklinux.cn的头像geeklinux.cn
上一篇 2023 年 12 月 12 日
下一篇 2023 年 12 月 17 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注