导出百度网盘共享文件库目录清单的脚本

此文写于两年前,是知乎上针对 如何爬取百度网盘分享文件库的文件列表? 这个问题的回答。

最近更新了代码,增加了功能,不料知乎竟然删除了问题。这个问题都存在两年了一直正常显示。而且,这种自动化脚本,也并不违规。

------------ 以下是原回答 ---------------

虽然百度网盘,自己的网盘文件,有导出目录的工具,但是很多分享的网盘数据,动辄10T 20T,不可能都存到自己的网盘中。而现在买网盘资源,基本都是这种分享方式,而不是卖账号。

搜索了一圈,没有现成的方案,大家都在关注如何加速下载等,github上虽然百度网盘相关项目有近百个,但是没有专门导出目录信息的项目。 而且主要都还是针对自己的网盘文件,这种在群中分享的网盘资源,没有现成的访问方法。

没办法,大佬们不关注这个需求,只能自己动手了。

在参考了github中的相关项目,比较了多种技术手段(python脚本,java程序,go语言,油猴脚本)后,本人计划使用油猴脚本方式来实现这个功能。

功能设计: 导出分享文件库的所有目录和文件内容清单,同时对文件夹内的文件数量和尺寸进行递归统计。

脚本发布在github上,有需要的可以下载

https://github.com/Avens666/BaidunNetDisk-script

chrome浏览器+油猴脚本测试通过

由于墙,chrome的插件国内不好装,不会翻墙弄的,用firefox浏览器+油猴插件也是可以使用的

最近美国搞技术脱钩,本人的开源项目在国内的开源库gitee也做了镜像,国内访问Gitee更快一些

https://gitee.com/avens666/BaidunNetDisk-script​

油猴脚本怎么用我就不写了,请自行百度。 下面写写脚本用法

  1. 油猴插件中启用本脚本

2 百度网盘PC程序,好友分享界面,点击要导出的共享会话,点击文件库. (如果chrome设为缺省浏览器,这时会在浏览器中显示文件库)

3 chrome浏览器中,百度网盘文件库界面,会多出一个”导出目录信息“的按钮。(油猴插件和本脚本都正确加载)

如图,先选择要导出的文件夹,可以单选,可以多选,可以全选,然后点击按钮开始生成清单

重要:要在文件库的根目录操作,不能进子目录选择文件夹导出。 这是百度网盘的通讯协议限制,我现在使用的方法还不能绕开这个限制。

这个限制已经在新版本解决,见后面说明.

4 接下来就是等待,不要关闭页面,清单生成速度同你要导出数据有多少个子目录有关。很多分享的网盘内部文件非常多,等待时间会比较长,大概8000个子目录,需要1个多小时。

清单生成完成后,会弹出文件保存对话框,你可以选择保存到本机目录

建议先找一个子文件夹少的目录,试用试用,可以很快出结果。免得等几个小时没结果认为我忽悠人。

如果想看到进度,按F12打开调试面板,选择Console面板,可以看到取清单的消息在运行。

5 保存的内容,是文本文件,按照tree命令的输出格式输出,大致如下的样子

文件夹,下面列出所有子文件及子文件夹,文件夹统计了其整体空间之和,文件单独输出了文件大小。

6 百度网盘的通讯协议还有些复杂,我也就弄了两天,第一次写js和油猴脚本,经验也不足,现在这个程序还有一些不完善之处

第一: 如果一个文件夹下面子文件超过100(不是文件夹包含的所有文件,是直接在该文件夹下面的文件),有可能超过100的文件列不出来。这个问题我还没有专门测试,我也没有这种极端情况,后面有需求时再说

第二:限于现在了解的JS特性,没有用异步请求,所以列表生成比较慢。能否有方法加速,如有js高手可以尝试一下,反正源码都公开了

 

------------ 2019.7.6 功能更新 ----

功能更新

1 解除一个文件夹只能导出100个子文件限制,可以输出子目录所有文件 (最多3000)

2 文件前面输出目录的层次信息,方便过滤 (后面写如何过滤)

3 文件信息增加输出全路径名

然后我补充一个对输出文件进行过滤的方法。

比如,只想输出目录,不想输出文件,只想看特定的格式文件,比如音频,图片,视频文件。

通过利用现在几个主流的增强型文件编辑软件的书签处理功能,可以很方便的对输出文件进行过滤处理。我这里以EmEditor这个编辑软件为例

只看文件夹

EmEditor打开导出的清单文件,Ctrl+F搜索”文件夹大小“关键字,点击全部设为书签

所有包含文件夹大小的行都被高亮显示

然后,选择编辑菜单->书签->提取已添加书签行至新文件中

新文件中就只包含目录的信息*

同理,你可以删除书签行,复制剪贴书签行。

如果想要过滤特定文件,查找文件后缀名".jpg" ".wav" 等等,同样操作即可。

------------- 2020.10.26 ----------

昨天导出一个目录等了4个小时都没结束,一怒之下,今天重新构思了提取策略,开发单独导出子目录的功能。

测试通过,通过在先在根目录获取ID信息后,再去选择子目录的方式,终于可以单独导出任意深度的子目录了

代码完善后再发布。

------------- 2020.10.27 ----------

子目录导出功能已经完善,代码已经更新。可以去github或者gitee下载

参考楼下的一些代码,简化了代码结构, 我js不太熟,之前的有些处理比较笨拙。

0.5版本增加了单独导出子目录的功能,增加了2个按钮, “ID” 和“子目录”。 在根目录下选择子文件夹所在目录,点击<ID按钮>获取主目录信息。然后可以进入子目录,选择要导出的子目录进行导出

虽然子目录按钮也能导出根目录的数据,但是不支持多选,所以还是保留了“导出目录按钮”,用于在根目录下一次性导出多个目录

  • 1
    点赞
  • 1
    评论
  • 8
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

cz666

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值