dudiskbitte.24.06.11

上篇文章里,我探讨了给度盘加上流式上传下载功能的可能性(迫真🤔在我对着guilded drive上传下载脚本一顿哼哼魔改后,度盘现在也可以流式上传下载力(确信🤔

具体来说,现在上传的函数需要至少三个参数,一个和guilded drive一样是本地文件或者目录的路径(也就是输进tar的参数),一个是度盘里tar所在的目录,另外一个是tar文件的名字(最后成品以后面加.tar.xxx的形式存在🤔当然我也可以将后两个合并成一个参数,然后用bash内置函数来拆(确信🤔

和guilded drive一样,tar数据流先以分卷大小*线程数大小那么大的包暂存在/tmp,但和guilded drive可以直接从里面提取出某个部分直接流式上传不同,度盘没法这么干或者度盘这么干撅对没有guilded drive上传速度快,我在这里需要再次将其分成线程数个小文件,然后使用pcs-go的批量上传功能一次性上传力🤔当然这个分片的过程还是得多线程,因为算checksum的过程在这里面🤔

至少现在它不会上传1GB数据流占用1GB内存力(至于pcs-go上传需要吃多少内存我怎么知道),反倒是硬盘会多占一倍空间,不过没关系,实在不成临时目录不设在/tmp而是设在大硬盘分区里(确信🤔

当所有分片上传完后,metadata.txt记录了分片文件名和checksum,这个文件最后也会被上传到度盘的相同目录🤔下载的过程刚好反过来,先提取这个metadata.txt,然后将它以一次若干行塞进数据流,在里面提取文件名和checksum,以文件名调用pcs-go下载(注意这里是一个文件开启一个pcs-go进程,其实这完全可行),下载后对比checksum,match后将这一部分tar分片合并cat然后管道到tar里流式解压,mismatch的话重试下载🤔

而且现在这坨玩意也比较(迫真)兼容一般通过win系统用户,我发现将分卷命名为xxx.tar.001和002等,就可以用winrar双击.001,尽管没法像7z.001一样直接解压,它还需要先解压一遍完整tar,再用tar解压具体文件,多占用一倍空间,但它至少省去了使用powershell合并文件的操作,或者说省去了我在某论坛里单独说明(确信🤔至于分卷如果超过了1000个后会发生什么,那我就不知道力,反正以一个分卷1GB算,这种事情要是发生的话恐怕得一次性上传1TB资源?度盘最多也就给个位数到十位数TB,这又不是guilded drive(全恼🤔

当然和guilded drive一样它也可以整加密版,但这样的话恐怕就不兼容不装cygwin那套玩意的一般通过win用户力(悲🤔

另外尽管上传还是用pcs-go方便,下载的话就不那么拘泥于pcs-go,用alist也不是⑧行,但alist的话恐怕得额外调一调才能实现全自动下载(恼🤔我自用的话就懒得折腾力🤔

thonk

最后我还是折腾了一遍alist版下载脚本🤔还是用的牢一套,对alist进行抓包,发现它有一个post请求可以将度盘路径输进去,如果需要的话还可以通过替换部分关键词来建立度盘路径到alist路径(它也和度盘一样使用某种类linux的根文件系统)的映射,然后就可以写一个函数,输进去的是度盘路径,输出的是度盘直链,然后加个ua塞进aria2c就可以平替上个版本的pcs-go(确信🤔这在某些场合(比如分享给别人的同时不怕度盘会员号被炸)可能有点用,但本地的话反正多线程下载模式吴论pcs-go还是解析出来的链接高低都能跑满带宽(确信🤔另外alist还有一个度盘分享链接玩法,用的是某高三学生整的php度盘链接解析(那玩意我甚至还做过bash适配,很不幸的是它现在早就失效力),也可以导进去用,如果它还能用的话(全恼🤔进一步讲用alist解析terabox然后搞流式下载理论上也是可行的,但上传就不好说力(悲🤔

AAAA

和guilded drive一样,度盘流式上传下载也可以中途加密,只需要在写入小文件的过程中插入一句gpg即可(确信🤔由于我的一个分片文件高达2GB,这个过程实在是慢的批爆,我还加了一句不压缩(-z 0),但它还是慢的批爆(全恼🤔

下载时倒是和guilded drive没啥区别,毕竟guilded drive也是用的aria2c,然后还是得需要一倍空间来存放解密结果,只不过由于分片大小是guilded drive的八倍显得占用空间多了不少而已(迫真🤔

我寻思现在的guilded drive需要用cf中转,早就是单线程力,也许guilded drive的解密下载脚本可以实现curl管道gpg从而省下一倍空间?🤔但我懒得关心,因为guilded drive我不怎么需要下载加密后的东西(半恼🤔

现在度盘总算是折腾完力,很不幸的是我不是什么牢王论坛的作者,手头也没有那么多原创片子,所以whatever(吴慈悲🤔

发表评论