温锦文欧普厨电及净水器总代理 发表于 2024-7-20 11:26:39

linux 服务器利用阿里网盘API实现文件的上传和下载

背景

近来在用ubuntu系统做实验,而ubuntu 系统的文件上传和下载操作很贫困;
于是便打算使用阿里网盘的API 进行文件下载与上传;
实在更重要的是想 备份当地文件到网盘和从网盘下载文件;
脚本

初始化

阿里云盘API工具 aligo

点击查看Aligo github
方便在linux服务器上使用,只需要填入一个刷新的token就可以了。
安装aligo

pip install aligo
aligo教程

请读者自行浏览


[*]wiki
[*]案例
实战

chrome抓包 获得refresh_token
https://img-blog.csdnimg.cn/9129a5c93989433caa9cb4d4eb02ea38.png
import aligo
from aligo import Aligo
refresh_token = "抓包拿到的refresh_token"
ali = Aligo(refresh_token=refresh_token)
查看你的用户信息,就知道是否登录成功了
print(ali.get_user())
parse.py

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()

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文件;
https://img-blog.csdnimg.cn/direct/cc56ea6863004ce0945fa532d4de7eb9.png
在阿里云盘,创建 tmp 文件夹,再在其下创建 parse文件夹
https://img-blog.csdnimg.cn/direct/58764e2a39044435a78fc81d901c99b6.png
上传文件

python parse.py -f -up -r tmp/parse -l upload_test/up.txt
上述脚本实现将 当地 upload_test/up.txt 上传到阿里网盘的 tmp/parse 文件夹下;
如下图所示,文件上传成功:
https://img-blog.csdnimg.cn/direct/199a1bb9e73141b5b97b74e39bdd5341.png
上传文件夹

python parse.py -up -r tmp/parse -l upload_test
上述脚本实现,将 当地 upload_test 文件夹上传到阿里网盘的 tmp/parse 文件夹下;
如下图所示,文件夹上传成功:
https://img-blog.csdnimg.cn/direct/a6cbf40fcb274a4aae0369cd16ed94cb.png
下载文件

python parse.py -f -r tmp/parse/up.txt -l down_test
上述脚本实现,将 阿里网盘的 tmp/parse/up.txt文件下载到当地 down_test 文件下;
如下图所示,up.txt 文件下载成功:
https://img-blog.csdnimg.cn/direct/8ae9ab581a4a42929c0bd2f706c6281a.png
下载文件夹

python parse.py -r tmp/parse/upload_test -l down_test
https://img-blog.csdnimg.cn/direct/df3ed56cb768496984c4197cc8cf3558.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: linux 服务器利用阿里网盘API实现文件的上传和下载