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

打印 上一主题 下一主题

主题 789|帖子 789|积分 2367

背景

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

初始化

阿里云盘API工具 aligo

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

  1. pip install aligo
复制代码
aligo教程

请读者自行浏览


  • wiki
  • 案例
实战

chrome抓包 获得refresh_token

  1. import aligo
  2. from aligo import Aligo
  3. refresh_token = "抓包拿到的refresh_token"
  4. ali = Aligo(refresh_token=refresh_token)
复制代码
查看你的用户信息,就知道是否登录成功了
  1. print(ali.get_user())
复制代码
parse.py

  1. import argparse
  2. import aligo
  3. from aligo import Aligo
  4. ali = Aligo()
  5. def down_file_or_folder(remote_path, local_folder, is_file=False):
  6.     file = (
  7.         ali.get_file_by_path(remote_path)
  8.         if is_file
  9.         else ali.get_folder_by_path(remote_path)
  10.     )
  11.     if is_file:
  12.         ali.download_file(file_id=file.file_id, local_folder=local_folder)
  13.     else:
  14.         ali.download_folder(folder_file_id=file.file_id, local_folder=local_folder)
  15. def upload_file_or_folder(local_file_folder, remote_folder, is_file=False):
  16.     remote_folder_id = ali.get_folder_by_path(remote_folder).file_id
  17.     if is_file:
  18.         ali.upload_file(file_path=local_file_folder, parent_file_id=remote_folder_id)
  19.     else:
  20.         ali.upload_folder(
  21.             folder_path=local_file_folder, parent_file_id=remote_folder_id
  22.         )
  23. def main():
  24.     parser = argparse.ArgumentParser(
  25.         description="Download file or folder from Aliyun Drive. 默认下载 & 文件夹"
  26.     )
  27.     parser.add_argument("-up", "--is_up", action="store_true", help="默认是下载模式")
  28.     parser.add_argument(
  29.         "-f", "--is_file", action="store_true", help="默认是上传和下载文件夹"
  30.     )
  31.     parser.add_argument(
  32.         "-r",
  33.         "--remote",
  34.         action="store",
  35.         required=True,
  36.         metavar="REMOTE_FOLDER_PATH",
  37.         help="specify the remote file or folder path to download or upload.",
  38.     )
  39.     parser.add_argument(
  40.         "-l",
  41.         "--local",
  42.         action="store",
  43.         required=True,
  44.         metavar="LOCAL_FOLDER_PATH",
  45.         help="specify the local file or folder path to download or upload.",
  46.     )
  47.     args = parser.parse_args()
  48.     print(args.__dict__)
  49.     is_upload, is_file, remote, local = (
  50.         args.is_up,
  51.         args.is_file,
  52.         args.remote,
  53.         args.local,
  54.     )
  55.     # 上传
  56.     if is_upload:
  57.         print("上传...")
  58.         upload_file_or_folder(
  59.             local_file_folder=local, remote_folder=remote, is_file=is_file
  60.         )
  61.     else:
  62.         print("下载...")
  63.         down_file_or_folder(remote_path=remote, local_folder=local, is_file=is_file)
  64. main()
复制代码
  1. Download file or folder from Aliyun Drive. 默认下载 & 文件夹
  2. options:
  3.   -h, --help            show this help message and exit
  4.   -up, --is_up          不填是下载,填是上传
  5.   -f, --is_file         不填默认是上传和下载文件夹,填了上传和下载文件
  6.   -r REMOTE_FOLDER_PATH, --remote REMOTE_FOLDER_PATH
  7.                         specify the remote file or folder path to download or
  8.                         upload.
  9.   -l LOCAL_FOLDER_PATH, --local LOCAL_FOLDER_PATH
  10.                         specify the local file or folder path to download or
  11.                         upload.
复制代码
演示

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

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

上传文件

  1. python parse.py -f -up -r tmp/parse -l upload_test/up.txt
复制代码
上述脚本实现将 当地 upload_test/up.txt 上传到阿里网盘的 tmp/parse 文件夹下;
如下图所示,文件上传成功:

上传文件夹

  1. python parse.py -up -r tmp/parse -l upload_test
复制代码
上述脚本实现,将 当地 upload_test 文件夹上传到阿里网盘的 tmp/parse 文件夹下;
如下图所示,文件夹上传成功:

下载文件

  1. python parse.py -f -r tmp/parse/up.txt -l down_test
复制代码
上述脚本实现,将 阿里网盘的 tmp/parse/up.txt文件下载到当地 down_test 文件下;
如下图所示,up.txt 文件下载成功:

下载文件夹

  1. python parse.py -r tmp/parse/upload_test -l down_test
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表