onedrive批量下载功能,这里分享个手动方案
OneDrive公开分享页面批量下载整个文件夹的需求目测从七八年前就有人需求了吗,这里随便从github拿个脚本给有需要的mjj介绍下使用方法吧:
https://github.com/HenryzhaoH/sharepoint-batch-download-listgen
一、实现逻辑和原理
首先,网络上分享的OneDrive链接,和我们自己的微软账号基本上不会是同一个域,因此许多官方手段,同域转移,mover之类,或者rclone配置授权等,是不能直接采用的,当然,大佬们也没空一个个拉你邮箱进去当来宾什么的;
那么解决方案只能从公开分享的页面爬取完整的文件目录结构,并且通过网页cookie授权拿到FedAuth来拼接完整的下载请求,通过脚本的整理加工,这里可以批量生成aria2下载请求链接,存入完整下载任务列表到txt文档,就可以使用aria2开启指定下载任务了
二、工具部署
1.Aria2c下载器部署
这玩意儿相信各大松鼠党都早有耳闻或者轻车熟路了,直接下载官方zip包解压到合适地方即可,此工具需要python3环境,我们都依次安装,顺便将aira2c下载器所在路径加入系统path环境,这里都略过,很简单,百度谷歌也有很多
2.SharePoint下载列表生成器部署
SharePoint Download List Generator
直接下载上述项目中的requirements.txt和sharepoint_gen_aria2_download_list.py脚本即可,解压到自己喜欢的目录,当然你也可以顺手加入系统环境变量;
在此生成器目录内,资源管理器地址栏输入cmd直接在此位置快速开启cmd窗口,按项目提示,依次安装所需组件,并运行脚本:
pip install -r requirements.txt
python sharepoint_gen_aria2_download_list.py
接下来按着提示,需要我们输入资源网址,这里演示为各位asmr爱好者喜欢的小北方网址,随便找个OneDrive分享地址,点进去
获取到公开分享地址
根据说明,我们需要获取到两个小玩意:
完整网址路径;
FedAuth授权cookies.
对于完整分享网址,一般来说,和公开的网址基本一致,流程简单说下:
1、SharePoint分享页面按下F12打开开发者工具(chrome浏览器),找到Network标签,F5重新载入页面后,搜索RenderListDataAsStream请求查看response返回栏,在此栏目里ctrl+F打开搜索,输入listUrl进行查询,获得地址为/personal/ztxdjj_ztxdjj_me/Documents,
与主域拼接获得:
https://ztxdjj-my.sharepoint.com/personal/ztxdjj_ztxdjj_me/Documents/
这就是该网站的根目录
配置过rclone应该熟悉,这是OneDrive默认分配的网站地址(SharePoint,OneDrive在微软管理后台都按着网站来进行部署的)
2、然后就是提示输入FedAuth认证信息了,类似的方法,F12打开开发者控制台,选择network标签,刷新页面,搜索fedAuth,在第一个出现的位置就是了,选择后右侧查看Headers信息里面的set-cookies:FedAuth信息
将FedAuth=之后所有内容复制,直到第一个分号结束,如下图,就是你需要粘贴进去的授权信息了:
3、接下来就是输入你指定的下载路径,这里搭配之前提到的计划任务rclone move监控路径
C:\Users\Administrator\Downloads\Baidudisk\同人音声
稍等片刻,提示你获取完整下载列表成功,已保存到当前目录下aria2-links.txt文档中
你可以简单复制清单txt文档到你的aria2c目录下,执行cmd下载任务指令即可:
aria2c --header="Cookie:FedAuth=xxxxxxxxxxxxxxxxxxx;" --input-file=aria2-links.txt --max-concurrent-downloads=2 --max-connection-per-server=5 --save-session=session.txt --save-session-interval=30
连接数,速度限制参数自行调整
接下来就可以看到aria2c开始欢快地跑起来了
搭配我之前帖子windows vps搬运百度盘文件到OneDrive的简单配置
提到的rclone/gclone move脚本,即可实现小盘鸡自动上传到OneDrive/Google drive了
当然了,这里这里演示的是使用gclone上传到Google drive,参考指令略有不同,参看如下:
gclone move "C:/Users/Administrator/Downloads/Baidudisk/同人音声" "GdriveSA:{xxxxxxxyyyyyyyyyzzzzzzzz}" -v --stats 15s --transfers 2 --bwlimit 50M --cache-chunk-size 5M --local-encoding=None --exclude "*.{downloading,aria2}" --log-file=C:\Software\rclone-v1.56.2-windows-amd64\log_asmr.txt --delete-empty-src-dirs --retries 1
如果你不考虑之后将google drive文件传到OneDrive的话, --local-encoding=None参数可以去掉
好了,这样你只需要丢给vps,躺着睡一觉回来,1.5TB文件就成功地从大佬们分享的OneDrive公开页面,自动存入你的Google drive了