阿里云盘分享文件无会员保存方法

阿里云盘分享文件无会员保存方法

背景

阿里云盘分享一次保存大量文件是需要会员的,咱没有,又想节省8块钱成本,只好自己动手了,逻辑比较简单,代码如下

代码

# -*- coding: utf-8 -*-
#阿里云批量保存程序
import requests
import json
import time
authorization = ""
share_token = ''
device_id = ''

def get_file_list(share_id, parent_file_id, marker=None):
    url = "https://api.aliyundrive.com/adrive/v2/file/list_by_share"
    payload = {
        "share_id": share_id,
        "parent_file_id": parent_file_id,
        "limit": 40,
        "image_thumbnail_process": "image/resize,w_256/format,jpeg",
        "image_url_process": "image/resize,w_1920/format,jpeg/interlace,1",
        "video_thumbnail_process": "video/snapshot,t_1000,f_jpg,ar_auto,w_256",
        "order_by": "name",
        "order_direction": "DESC"
    }
    if marker:
        payload["marker"] = marker
    
    headers = {
        'accept': 'application/json, text/plain, */*',
        'content-type': 'application/json',
        'origin': 'https://www.aliyundrive.com',
        'referer': 'https://www.aliyundrive.com/',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36',
        'x-canary': 'client=web,app=share,version=v2.3.1',
        'x-device-id': device_id,
        'x-share-token': share_token
    }
    
    response = requests.post(url, headers=headers, json=payload)
    return json.loads(response.text)

def copy_file(file_id, share_id, to_parent_file_id, to_drive_id):
    url = "https://api.aliyundrive.com/adrive/v4/batch"
    payload = {
        "requests": [
            {
                "body": {
                    "file_id": file_id,
                    "share_id": share_id,
                    "auto_rename": True,
                    "to_parent_file_id": to_parent_file_id,
                    "to_drive_id": to_drive_id
                },
                "headers": {
                    "Content-Type": "application/json"
                },
                "id": "0",
                "method": "POST",
                "url": "/file/copy"
            }
        ],
        "resource": "file"
    }
    headers = {
        'accept': 'application/json, text/plain, */*',
        'authorization': authorization,
        'content-type': 'application/json',
        'origin': 'https://www.aliyundrive.com',
        'referer': 'https://www.aliyundrive.com/',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36',
        'x-canary': 'client=web,app=share,version=v2.3.1',
        'x-device-id': device_id,
        'x-share-token': share_token
    }
    
    response = requests.post(url, headers=headers, json=payload)
    return json.loads(response.text)

def main(share_id, parent_file_id, to_parent_file_id, to_drive_id):
    response_data = get_file_list(share_id, parent_file_id)
    
    if 'items' in response_data:
        for item in response_data['items']:
            file_id = item['file_id']
            print(f"处理文件: {file_id}")
    
            sub_files = get_file_list(share_id, file_id)
            
            for sub_item in sub_files.get('items', []):
                sub_file_id = sub_item['file_id']
                copy_result = copy_file(sub_file_id, share_id, to_parent_file_id, to_drive_id, authorization)
                print(f"复制文件结果: {copy_result}")
                time.sleep(2)
            
            time.sleep(5)
    else:
        print("未找到文件列表")

if __name__ == "__main__":
    #分享id
    share_id = ""
    #分享文件id
    parent_file_id = ""
    #保存路径
    to_parent_file_id = "" 
    #自己账号的device_id
    to_drive_id = ""
    main(share_id, parent_file_id, to_parent_file_id, to_drive_id)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大吉大利都吃鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值