barbruh.22.07.28

这几天度盘一直在抽风,我的两个超会小号都403,我估计就算买一个新的号,它要么给我403,要么更糟糕,解析到一半403(恼🤔

所以,这几天我就不搞了,等我需要搞的最新文件再次积压到不得不搞了再说🤔

所以到今天,我大概把截图基本上全搞定了,照片的话,应该还剩8个小号,也就是大概15TB到16TB的玩意没搞完(悲🤔

guildedthonk

另外guilded drive实在是太寄吧好使了,甚至在我的aria2c完全不上梯子的情况下,它仍然能跑满带宽🤔那真滴牛批,我可能得考虑写一个discord drive转guilded drive的玩意了(确信🤔

另外有没有可能,这玩意在powershell里面跑起来?我就不信它非得装个bash环境才能用🤔假设aria2c.exe和tar.exe已经放进了system32目录,或者不放进去也行,毕竟我们永远可以用guilded drive将这两个可执行文件先下载下来🤔

barbruh

在我一番迫真折腾之后,我发现powershell的管道或者说数据流实现貌似有那么亿点点问题,比如将for循环输出到stdout里的东西要么重定向到文件要么管道到一个不依赖cygwin1.dll的tar实现(貌似叫做bsdtar)里时,它的速度会慢到难以忍受(悲🤔基本上只有十几MB/s,对比cygwin的tar在ramdisk里光速完成解包,可以说是龟速了(全恼🤔

所以,恐怕我只能接着像上次(?)那样,想办法撸一个cygwin最小环境出来了🤔在又一番迫真折腾后,这个powershell(迫真)脚本终于撸出来了,它会先尝试下载一个4MB的zip包,解压后里面是我整的cygwin最小环境,然后它会先将guilded drive的列表文件下到那个cygwin目录里,然后执行里面的bash.exe,参数是sh脚本的位置🤔接下来就非常熟悉了,就是那个原版bash脚本删去wget、rm等powershell自带的函数(确信🤔

但这个脚本它tar解包的速度也慢到难以忍受,经过我一番迫真排除后,最终确定就是那个bsdtar有问题(恼🤔将其替换成cygwin版的tar后(我cygwin1.dll都放进去了,不用白不用),它解包的速度基本上和完整版cygwin一样快了(确信🤔

现在,guilded drive终于普照到了win系统(大嘘🤔下一步是什么?bat?🤔

thonkeqing

又改了一顿脚本,这次将rm.exe也加了进去,所以它现在可以像一代discord drive那样,将guilded drive列表文件拖进bat文件就能自动下载并解压了(确信🤔而且这坨玩意也兼容之前那个powershell版脚本🤔

当然,除了拖文件外,它也可以做一个接受参数是列表文件链接的bat,下载列表文件可以接着用aria2c(确信🤔只不过此时就没法拖什么东西进去了🤔或者我们可以让这个bat来处理一个装满guilded drive列表文件链接的列表文件,此时就可以接着拖了,而且一次性可以处理一大堆(确信🤔

好,到此我已经完成了bash批处理powershell三修(确信🤔

luminethonk

所以我现在懂了,如何将单文件discord drive或者guilded drive的上传脚本普及到win系统?🤔只需要撸一个cygwin最小环境,只带什么curl、aria2c等程序,然后用一个bat作为bash脚本的入口,接下来就可以该怎么用怎么用(大嘘🤔https://s3-us-west-2.amazonaws.com/www.guilded.gg/ContentMediaGenericFiles/fb4b1f769bb8de2d93fc3242c593395f-Full.zip,请(吴慈悲🤔

考虑到本次魔改原脚本花了一大把时间,这还是个只有几行的脚本,这要是去魔改单文件discord drive这种庞然大物的话,我不得寄:barbruh:

thonkcord

最后我还是撸了一个单文件discord drive的cygwin最小系统版🤔前后改了11451.4秒,我也是闲得寄吧蛋疼(🤔

当然,和guilded的上传api一样,我给discord的上传api也整了一波cloudflare antics🤔但discord貌似也用的是cloudflare,而且禁止它的域名被设置成cname🤔所以,我只能用workers来整它的上传antics了(🤔

最后效果还行,不上梯子可以达到平均50Mbps上传🤔

既然上传都搞了,下载要不也来搞一搞🤔当然那个单文件discord drive下载函数已经充满了一系列对下载下来的脚本施加的后处理,而如果它想在这个cygwin最小环境里也跑起来的话,那么它还得再加一层后处理,比如至少把里面用到的那些命令全部改成绝对路径⑧🤔当然,函数本身也得改,反正又一个11451.4秒过去了,现在,它一个压缩包即可以上传discord drive,又可以下载discord drive了,好耶🤔

conclusions

现在来看,它相比原来的脚本,除了将命令的相对路径全部替换成绝对路径外,还是做了亿点点魔改的,比如原来我用file命令来获取文件的mimetype,但那个file.exe移植到cygwin最小环境时,它需要的依赖项多到离谱🤔最后和guilded类似,我上传个连扩展名都没有的文件分片整什么乱七八糟的mimetype,直接设成text/plain就vans了,我非常怀疑这个file玩意是曾经写的试验脚本的遗留🤔脚本某处还用了一下awk,但它也只是做了一个在ls的结果里提取文件大小的事情,其实cut就能搞定,这里用awk实在是太大材小用了🤔当然还不是因为awk移植过去需要的依赖项多的批爆🤔

但当我开始移植cygwin版curl时,那才叫一个蛋疼,前后复制了十几个dll,它还是缺这个缺那个🤔最后,我干脆下了一个win版的curl.exe,一个可执行文件搞定所有东西(恼🤔之前不用bsdtar是因为它太慢,但curl又没有这种问题(当然它在单文件discord drive的实现里也是通过管道传数据的,但至少我目前没有观测到明显的性能下降🤔但cygwin版tar又没多少依赖项,我记得它最多依赖一个cygwin1.dll,不像curl(🤔

当然,这个最小系统或者最小环境的概念,在github actions里面也是能用到的,毕竟它每一个runner只有128GB总空间,如果我能用什么申必玩意将其清理到系统只占几个GB,那我不是可以拿它挂100GB这个级别的种子了?🤔甚至,如果我想的话,还可以拿它挂u2,或者任何不限制客户端数量的pt,或者任意bt🤔