ubuntu 利用阿里网盘API实现文件的上传和下载

文章目录

背景

最近在用ubuntu系统做实验,而ubuntu 系统的文件上传和下载操作很麻烦;

于是便打算使用阿里网盘的API 进行文件下载与上传;

脚本

初始化

阿里云盘API工具 aligo

点击查看Aligo github

方便在linux服务器上使用,只需要填入一个刷新的token就可以了。

安装aligo

shell 复制代码
pip install aligo

aligo教程

请读者自行浏览

实战

chrome抓包 获得refresh_token

python 复制代码
import aligo
from aligo import Aligo
refresh_token = "抓包拿到的refresh_token"
ali = Aligo(refresh_token=refresh_token)

查看你的用户信息,就知道是否登录成功了

python 复制代码
print(ali.get_user())

parse.py

python 复制代码
import argparse

import aligo
from aligo import Aligo

ali = Aligo()


def down_file_or_folder(remote_path, local_folder, is_file=False):
    file = (
        ali.get_file_by_path(remote_path)
        if is_file
        else ali.get_folder_by_path(remote_path)
    )

    if is_file:
        ali.download_file(file_id=file.file_id, local_folder=local_folder)
    else:
        ali.download_folder(folder_file_id=file.file_id, local_folder=local_folder)


def upload_file_or_folder(local_file_folder, remote_folder, is_file=False):
    remote_folder_id = ali.get_folder_by_path(remote_folder).file_id

    if is_file:
        ali.upload_file(file_path=local_file_folder, parent_file_id=remote_folder_id)
    else:
        ali.upload_folder(
            folder_path=local_file_folder, parent_file_id=remote_folder_id
        )


def main():
    parser = argparse.ArgumentParser(
        description="Download file or folder from Aliyun Drive. 默认下载 & 文件夹"
    )
    parser.add_argument("-up", "--is_up", action="store_true", help="默认是下载模式")
    parser.add_argument(
        "-f", "--is_file", action="store_true", help="默认是上传和下载文件夹"
    )

    parser.add_argument(
        "-r",
        "--remote",
        action="store",
        required=True,
        metavar="REMOTE_FOLDER_PATH",
        help="specify the remote file or folder path to download or upload.",
    )
    parser.add_argument(
        "-l",
        "--local",
        action="store",
        required=True,
        metavar="LOCAL_FOLDER_PATH",
        help="specify the local file or folder path to download or upload.",
    )
    args = parser.parse_args()

    print(args.__dict__)

    is_upload, is_file, remote, local = (
        args.is_up,
        args.is_file,
        args.remote,
        args.local,
    )

    # 上传
    if is_upload:
        print("上传...")
        upload_file_or_folder(
            local_file_folder=local, remote_folder=remote, is_file=is_file
        )
    else:
        print("下载...")
        down_file_or_folder(remote_path=remote, local_folder=local, is_file=is_file)


main()
bash 复制代码
Download file or folder from Aliyun Drive. 默认下载 & 文件夹

options:
  -h, --help            show this help message and exit
  -up, --is_up          不填是下载,填是上传
  -f, --is_file         不填默认是上传和下载文件夹,填了上传和下载文件
  -r REMOTE_FOLDER_PATH, --remote REMOTE_FOLDER_PATH
                        specify the remote file or folder path to download or
                        upload.
  -l LOCAL_FOLDER_PATH, --local LOCAL_FOLDER_PATH
                        specify the local file or folder path to download or
                        upload.

演示

在upload_test文件夹下,有up.txt文件;

在阿里云盘,创建 tmp 文件夹,再在其下创建 parse文件夹

上传文件

bash 复制代码
python parse.py -f -up -r tmp/parse -l upload_test/up.txt

上述脚本实现将 本地 upload_test/up.txt 上传到阿里网盘的 tmp/parse 文件夹下;

如下图所示,文件上传成功:

上传文件夹

bash 复制代码
python parse.py -up -r tmp/parse -l upload_test

上述脚本实现,将 本地 upload_test 文件夹上传到阿里网盘的 tmp/parse 文件夹下;

如下图所示,文件夹上传成功:

下载文件

bash 复制代码
python parse.py -f -r tmp/parse/up.txt -l down_test

上述脚本实现,将 阿里网盘的 tmp/parse/up.txt文件下载到本地 down_test 文件下;

如下图所示,up.txt 文件下载成功:

下载文件夹

bash 复制代码
python parse.py -r tmp/parse/upload_test -l down_test
相关推荐
分布式存储与RustFS7 小时前
给 RustFS 桶加一层内存缓存:用 Alluxio 让热数据少跑一遍网络
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
Oiiouui8 小时前
linux服务器部署Logto后端与对应前端的实现
linux·服务器·前端·后端
ITKEY_8 小时前
用 Emacs Dired 实现 em:退出文件管理器后,让终端自动切换目录
linux·服务器·emacs
wt95278 小时前
VMware 虚拟机磁盘扩容实战文档(Ubuntu 22.04 + LVM)
linux·后端
就像楞次定律9 小时前
【Linux 学习记之二】C++ 构建体系与底层链接机制的深度透视(2)
linux·后端
Decay__9 小时前
22_MySQL 运维自动化平台 —— 部署编排 + 监控 + 巡检 + 告警 + 工单闭环一体化
运维·数据库·sql·mysql·架构
无足鸟ICT9 小时前
【RHCA+】slabtop命令(查看slab缓存)
linux
且从容.9 小时前
Ubuntu 安装 Docker
linux·ubuntu·docker
青梅味猪大肠10 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
迪康coolmu10 小时前
企业U盘管控落地实战:基于迪康端点安全一体化管理系统的移动存储安全实践
运维·人工智能·经验分享·笔记·安全·电脑