guilded drive.22.06.30

最近知道了另外一款有webhook功能的聊天软件,叫做guilded🤔所以按照惯例(迫真),我挖掘下它做drive的可能性🤔

它的webhook尽管号称是和discord webhook格式完全兼容,但我的单文件discord drive也好,旧discord drive也好,它完全驱动不起来(恼🤔再仔细一看,它并没有完全实现discord webhook api,缺失很多功能,比如attachment字段它就没有,而且其实webhook上传文件它就完全不支持🤔

既然如此,看来基于webhook的guilded drive是基本上别想了(悲🤔那么账号上传呢?照例准备了两个文件拖进去上传,然后我有了新发现:

它并不像discord那样将两个文件添加进待上传列表,按下发送消息才开始实际的上传过程,它是先用另外一个api上传了文件,拖一个上传一个,然后将这个api返回的文件链接带进了消息里,然后消息开始包括这几个文件(确信🤔

那么它将带来两个问题:

  • 我是不是可以不用考虑这些上传了的文件放哪里,直接高强度雷普它的上传api就vans了?反正无论如何它也能返回我们要用的链接(确信🤔

  • 如果我给它的消息api发送了不是它的amazonaws源的文件,是不是也可以塞进消息里?比如discord源?🤔

对于后者我懒得关心,但对于前者,我的测试结果是JAJAJAJAJA🤔我用单文件discord drive同款方式构造了一个上传请求,然后成功地上传了一个叫做aqua.txt的文本文件,内容是AquaCriUGUU,和本地一毛一样(确信🤔

它这个文件上传api甚至支持最大200MB,比discord nitro还要大一倍可还行🤔它唯一的问题是支持的扩展名极其有限,貌似txt它是支持的,rar它就不支持了(恼🤔而且它返回的链接里也保存不了文件名,它貌似响应头里也没有file-disposition项🤔

所以我只能在上传请求时改扩展名了,而且貌似扩展名和content type都要改一遍🤔所以我只能通过生成一条带--out参数的aria2命令行来保存(迫真)文件名,当然生成powershell格式的命令行也是可以的,反正它们都可以带文件名参数(确信🤔

thonk

保存文件肯定是没问题了,将其适配到旧discord drive还是单文件discord drive脚本其实都不会有什么大问题,因为它们本来就是靠aria2c的链接文件等来保存文件名和目录结构(仅限旧脚本)的,discord或者guilded那边保存成了什么文件名根本没什么关系,我甚至在单文件discord drive里将上传的文件名便乘了checksum🤔

但我现在比较好奇的是,discord drive的某些应用是不是会依赖扩展名,比如discord tube的m3u8列表里,该填ts文件的地方填一个txt文件进去,它还能不能播放了?🤔或者在img标签的src里面填个txt文件,它还能不能显示图像了?🤔(当然如果是后者的话,直接content type设成图片就vans了,因为为什么不,它没什么理由不支持上传图片文件🤔

wiebitte

在进一步迫真探索guilded的上传api的过程中,我发现了一件极其生草的事:

它这个api完全可以删掉包括cookies的所有headers,删到原来的headers只剩下一个content-type都能正常上传🤔换句话说,如果我没有改扩展名的需求的话,就算我用curl -F "file=@$filepath",它都能完成上传🤔

我到此已经不清楚guilded的开发者写这个api的时候摄入了多少四氢大麻酚了(恼🤔就算是discord webhook,好歹还是带点验证信息的🤔就算是搜书盘的上传api,好歹也得指定个用户id来将上传的文件归于某个用户🤔但这玩意,只要用最传统的http文件上传方式上传个文件就能获取个链接,而且还是直链,梦回25年前了属于是(大嘘🤔

无论如何,现在,我们可以用各种方法雷普它了(确信🤔既然它什么headers都不需要,我这就找个html5上传模板,然后直接用它这个url来搞(确信🤔或者就用我那个极其简陋的discord image hosting罢(🤔

话说它更生草的是居然有两个文件上传api,有一个文档api,还有一个媒体api(这玩意其实可以拿来做图床,上传点对discord图床来说太大的图片,就是不清楚为啥它上传什么图片都会转格式为webp🤔我寻思它的开发者也许的确有点大脑降级,所以要不我们大力雷普它的这两个文件上传api,雷普到它的开发者被迫加班改版吼不吼啊(吴慈悲🤔

用它的webapp也能看到所有支持的文件类型,反正图片啥的都支持,mp3、flac和mp4也支持(也许我可以将m3u8里该填ts的地方填mp4),但文档部分就极其生草了,它支持上传zip却不支持上传rar,wiebitte?🤔问题是我怎么可能知道哪些文件需要哪些api来上传,媒体还是一般文件?我要不在我那个js脚本里面写下,看文件的content type,如果它是图片或者视频就转前者,如果它是txt或者zip就转后者,如果是其他扩展名(比如rar)就将扩展名改成zip然后转后者🤔

发表评论