futabruh script.20.05.11

至此我终于给它加上了yande.re,但我试着拖了几次n.g.的萌妹都以失败告终,因为现在的脚本每个文件需要启动一次rclone,导致每上传一个文件需要进行两到三次C类请求,直接爆掉了我两个账号的C类请求限额

所以我需要重新写rclone上传这部分,不过我以前搞过这种东西,那时我用rclone上传onedrive和google drive,尽管它们没有api限制,但每个文件都启动一次rclone仍然很慢,只有不到10MB/s,还要加上数秒的额外开销;所以我那时写了一个按照文件夹大小决定何时上传所有文件并删除它们的程序片段,用在这里刚刚好;而且我还可以对不同的site设置不同的参数,比如yandere设置成了超过256MB时上传文件,一次5个线程;apkpure是128MB(免得遇见大型apk包时下不下来),一次两个线程

实测新的脚本上传1700个文件只需消耗283次C类API(当然A类API是完全免费的),而且查看日志文件可以看出每次上传的时候速度能有5.976MB/s-17.112MB/s,爽的1b,这可是ibm cloud的白嫖云啊,我却看到了vultr一样的速度,所以内存给大点还是有点用的,多注册几个ibm cloud账号也是有点用的

和apkpure可能不一样,yande.re的特点是下载时能够允许的线程非常少,我猜测能同时下载的文件最多只有两个,再多了就会发现下载直接报错403,所以discord drive式的粗暴下载可能没法用了;这也确实更加强调了转存yande.re文件的重要性,无论是转存到discord还是backblaze

这是用新脚本跑完后的api使用情况:

另外附上搞完后的原始日志文件html化日志文件(旧档12传到了discord上)以供参考,另外那个html化也非常简单(迫真),只需要将处理彩色shell输出的字符替换成html标签即可,因为它通常来说也是成对出现的;当然这次还是出现了一个bug,如果设置了触发条件后才上传的功能,那么最后一波文件通常是满足不了触发条件的,所以需要在站点函数的循环结束后,我的意思是在postprocess函数里写一句强制上传才行

backblaze antics.20.05.10

我实在是太无聊了,还写了个php来实现哪怕出门没法访问ibm cloud管理界面或者装有ibm cloud cli的vps也能拖apkpure的功能;其实还是比较简单的,我把脚本放在app/htdocs目录,然后用一个无限循环来读取比如bruh.txt,如果这个文件是空的就输出ava的经典台词What you got, file? You got NOTHIN'!,否则读出参数并调用apkpure函数,处理完后清空文件(需要用到cat /dev/null,如果echo的话文件其实还包括一个回车,并不算清空);这样文件非空=正在处理(而且正在处理的东西完全可以被php读出来,生成预览链接之类的),文件空=处理完成;php那边也会读取文件,如果文件为空的话就将get传进去的参数写入文件,否则就读出文件里面的参数名称生成比如目前处理的链接文件、即将上传到backblaze的链接文件等东西,供用户参考进度

其实我还可以把脚本跑的东西输出到日志文件里,然后附上日志文件的链接,这样就更好地查看进度了(迫真

接下来肯定就像当时搞discord脚本那样给它加上别的站点支持,搞不好我可以把新脚本叫做futabruh.sh,来玩futabruh梗;我之所以一直坚持写shell脚本,就是为了在比如ibm cloud这样的小内存白嫖平台上跑,但如果把bash和php一块用,实测64MB内存有点小,会直接导致内存溢出,然后它就会停止运行,直到登进去ibm cloud管理界面才发现;所以如果想玩bash+php的话内存至少得128MB,最好创建一个新账号然后把256MB内存都给它

现在如果想玩这套白嫖玩意的话,从零开始的完整过程如下(我再迫真注册一遍试试:

ibm cloud注册链接,反正protonmail完全没法用,我试下买度盘账号送的163邮箱行不行163不行,所以我得找个别的邮箱了可还行

UPDATE:只有睾贵的gmail邮箱才能完成注册,好像microsoft和yahoo也可以,但它们三个极难注册小号,而且需要献祭一大串个人信息,哪怕买都不便宜,我自从15年之后就没有成功注册过任何gmail了,最近花十几块钱买了个带google voice的

还好不像backblaze,ibm cloud和度盘一样是可以用加点大法搞无限个邮箱地址的(当然度盘不会允许用gmail.com,但可以用googlemail.com啊

更有意思的是抓包发现ibm貌似用了一套迫真浏览器指纹检测系统,既然是gmail,我尝试用加点大法批量草,没错我是可以收到十个甚至⑨个邮箱地址的验证码,但每次只能同时创建两到三个,然后这一天就没法注册了;它肯定比backblaze弱爆了,话说回来我创建那么多ibm cloud干什么,难道是因为我的这个脚本必须要256MB实例才能跑?

用这个链接创建运行php的cloud foundry实例,内存给大点

然后有两种方法可以管理新建的实例:

  • 在“资源列表”里找到“Cloud Foundry 应用程序”,然后点进去创建的实例,然后在“运行时”里可以找到webshell
  • 使用ibm cloud cli,win版和linux版用起来差不多:
    • ibmcloud login登录,输入用户名和密码
    • ibmcloud target --cf来设置cloud foundry,接下来就可以用cf相关命令了
    • ibmcloud cf apps列举出所有的实例,记得复制下URL
    • ibmcloud cf ssh [appname]调出shell,用ibmcloud cf restart [appname]重启实例
    • 配合装有screen的vps可以实现迫真离线挂机脚本,只要内存不爆掉可以挂好几天;我反正有vps,至于你们准备怎么挂机我就不清楚了,反正webshell极其不稳定,而且它的小鸡鸡上面也没有装screen,不过话说回来它要是有个rc脚本啥的倒是可以把运行这个脚本的命令挂到rc上然后重启即可,但我觉得它八成没有这个功能,因为它只是一个shell access,连vps都不算

无论如何连上shell之后,输入cd ~/app/htdocs/进入它的web目录,之所以bash和php脚本都需要在这里运行,很明显,因为这个位置的所有东西都可以用上述的URL访问,哪怕手机也行哦

接下来wget https://github.com/die-Deutsche-Orthopaedie/shitty-arse-discord-bots/raw/master/futabruh.sh

话说回来我调试php和sh脚本时就是用wget从我的另外一台vps挪的,因为它上面连nano都没有可还行;这玩意其实用起来挺方便的,执行bash futabruh.sh -l "/home/vcap/app/htdocs/bruh.txt" "[backblaze id]" "[backblaze key]" "[backblaze bucket name]",它就会自动配置好所有的必需组件(其实就是rclone和aria2),甚至还会配置好php脚本,然后进入无限监听bruh.txt模式

接下来就可以比如找个手机用https://[URL]/backblazeapkpure.php?futabruh=[参数]来往里面塞参数了,参数要么是sitename|关键词要么是sitename|关键词|backblaze里创建的目录,如果没有设置后者的话默认以关键词命名;如果之前没有塞参数的话会塞进去,否则会显示正在运行并给出日志文件、results文件和即将上传到的backblaze位置的链接(我顺便把日志文件也最后上传了,供参考

TODO:使用多个backblaze账号,自动检测某个账号还剩多少空间,然后自动切换

我觉得这玩意就这样,没啥好说的了

random

在我挖掘以前留的音乐的时候,我发现了GTA Vice City的官方7CD音乐包,其实GTAVC不仅是我的启蒙游戏,也是我的80s音乐启蒙作,我12年前就是从搜寻GTAVC的电台音乐(那时我不知道官方出专辑也不知道verycd,我是一首一首地找着下的)得以知道toto乐团,接下来下到了toto discography,然后成了toto的迫真脑残粉的🤔神奇的是一年之后我才知道有种东西叫做无损音乐,还有种东西叫做ed2k(当然也许我用ed2k的历史还能更早,但至少我不记得之前用ed2k下过音乐

在我看来GTAVC选择的80s乐曲充满了梦幻气息,就是那种80s之前毫无趣味(比如mafia3的电台我就一点都不感兴趣),80s之后也没有什么新意的感觉,尤其是Wave 103电台里的歌曲,无论是开篇的Two Tribes,Kids In America还是我接触的第一首德语歌曲Neunundneunzig Luftballons,外加上我接触那些歌曲的时机————

08年的时候我只能一首一首地找GTAVC的电台音乐,外加上那时网速极慢,所以我并非一开始就找全了它们,每个月我在听的电台还是不一样的;我记得最先找得差不多的是Emotion电台,africa成了我接触的第一首toto歌曲,Broken Wings在当时天天沙尘暴的月份也挺应景的;然后是Flash和Fevor,接下来是V-Rock(我记得绝大多数的V-Rock歌曲都是五月份完成下载的),到Wave 103时已经是六月快结束了,所以在我的印象中夏天和new wave更加搭配,不像这两三年的夏天我基本上只能想到几首极其有限的perusonamusik,比如Specialist

但GTAVC还有两个电台,Wildstyle Pirate Radio和Espantoso,却被我彻底遗忘了,出于未知原因我压根就没尝试过找这两个电台的任何歌曲,如果后者压根就不是英语的话,那么前者是怎么回事我就说不清楚了;其实Wildstyle也是hiphop流派,但由于我到开始玩San Andreas时才知道hiphop是个什么东西,所以我没有太在意这个,直到今天我整理那些cue时看到了里面的标签

当然和充满粗鄙之语的SA风格hiphop还有略微压抑的GTA4风格hiphop相比,VC的hiphop听起来更有意思,尽管我在wiki上找到的歌曲有一半是类似SA的旧式hiphop(可能粗鄙之语会少些),但官方专辑里收录的部分更有意思,它既不是旧式hiphop也不是基本上离不开电音的新式hiphop,而是貌似在中间的那种类型,甚至还收录了一首叫做The Break的压根就不算什么hiphop的歌曲;那个拉丁电台恐怕我玩游戏的时候听的次数都非常少,但和GTA5的墨西哥口味拉丁电台不一样,这个电台更有加勒比风格,毕竟Vice City的原型迈阿密也是个热的1b的地方,也就是所谓的具有“梦幻气息”(当然也许是热得人精神失常的那种气息)的地方

关于GTAVC的迫真乐评差不多就到这儿了,总之我在通关SA之后才搞到VC的所有无损专辑,很快我就进入了80s之外的另一个大坑,那就是电音了;而我的电音口味也是由游戏启蒙的,这次是Need for Speed Shift(我甚至在玩起来游戏之前就把它的配乐听了十万甚至⑨万遍),还有接下来的所有NFS系列,怎么说呢,我接下来好几年的播放列表都是里面的配乐,还有相同艺术家的其他作品,除了索尼克曾经插入了大半年时间外;在找above and beyond无损专辑的时候我学会了使用rutracker和vps迫真seedbox,我记得曾经还往godaddy的虚拟主机上疯狂塞了一堆无损电音,直到14年godaddy突然给我发警告信,但那时我已经可以将其挪到我的存储vps上了

当然14年可没有discord drive或者无限下载的对象存储或者诸如此类的东西,那时我在存储vps上装的还是winserver(我到15年才决定在上面用linux主系统),我甚至到18年才知道onedrive车和rclone,不然可能会更有意思

其实13年我还是更喜欢trance,对于NFS里的其他电音不是那么感兴趣,但到15年的时候我开始迷恋上dubstep,可能和鬼畜文化有关系吧,另外saints row系列的电台也是个电音入门作(而且除了电音和古典乐外它收录的其他流派基本上没法听,远远不如GTA的水平);我这几天翻出来的旧硬盘上的音乐就主要来源于15年,所以我这几天也开始听dubstep了;之前做的bt挂机就是再找deadmau5的某首歌的instrumental版,我记得13还是14年的旧硬盘上有,但我懒得翻出旧硬盘,所以我干脆把它们全下了一遍

其实NFS完全就只收录某些乐队的歌,我觉得要是能下到它们的discography的话,那么连NFS都能flac化(手动滑稽

oldmusik.20.05.08

昨天我在找之前放旧硬盘上的neinundneinzig luffballons的midi文件,一不小心发现我以前的听歌风格比现在貌似多样化多了,现在我基本上除了极少数例外,都是perusona

而且我还发现deadmau5曾经也是我的最爱之一,赶紧上rutracker找找,果然我找到了它的所有专辑大合集,而且如果是rutracker的话至少我的vps是可以下的,尽管速度肯定没有seedbox快

一晚上之后终于下下来了,现在正在用discord音乐上传脚本上传中

另外我的24'显示器用的驱动板到了,话说回来200%缩放之后又不是不能用,只是感觉比较坑爹而已,为什么我要花600多买这玩意

另外加上缩放我们可以算下1080p等效屏幕尺寸,24寸2k相当于18寸1080p,24寸4k相当于12寸1080p(实测辣眼睛),150%缩放之后基本上可以认为是18寸1080p(也就是24寸2k的dpi),所以我现在基本上用的是150%缩放

那么可以显示的内容(按像素计,因为win系统都是按像素计的,哪怕加上缩放也是如此)呢?如果按照4k是1080p的四倍、200%缩放导致它又降回1080p算,应该是4/1.5/1.5=1.77倍,基本上相当于24寸2k屏幕和24寸1080p屏幕之间的比值

但和24寸2k屏不同,显示文字和窗口对象时是按照2k的文字大小显示的,但显示图像时是4k的dpi,这样尤其是看图或者看电子书时效果简直爽的1b,比1080p或者2k爽多了

同理也能用到索尼的某些4k机子(比如我用的xzp),当然Android系统又完全不按照像素显示文字,它用的是权衡dpi之后的dx,所以Android完全就是像素越高越好

现在宋体基本上只需要缩放150%就能按照印刷字体的方法渲染,而win10默认的雅黑字体基本上只适合100%缩放下的五号字号,只要比这个大,就会变得丑的1b;另外我还装了adobe的思源宋体,可能也就是手机版的wordpress默认字体

UPDATE:在折腾了一个下午加晚上后我终于把GTA5的gamerip上传了上去,连同deadmau5的全集上传到了onedrive和discord drive上,然后还顺便下了一些其他EDM乐队的合集;而且我发现GTA5的官方3CD专辑居然真™的有CD版,这可真是爽坏了,我14年听这些玩意的时候可只有apple music aac格式,我以为它只会上数字版

另外我发现之前传音乐用的递归上传脚本自带的记录文件链接功能完全就没有用,所有生成的文件都是空白行,所以我用discord备份脚本里的版本替换了,现在应该可以记录下来链接了,尽管并没有什么卵用;没错,这个函数的确是discord drive的基础,但我后面发现完全不需要递归列举出所有文件,一个find命令就能搞定这些事,再后来这个脚本完全不会被用来处理多层文件夹了,我用它时都是把要保存的文件打包成7.2MB的压缩包完事,所以这个递归上传函数永远从discord drive的代码里消失了,我用的时候都是从某处直接粘贴函数的

其实递归上传最大的好处是可以在discord消息里体现文件夹层级,就像tree命令那样,这样其他人看discord消息时就能一目了然(迫真)哪个文件属于哪个专辑

说到把discord变成音乐hub,我突然想到上次我还闲得蛋疼往futaba.sh(我估计现在差不多更像futabruh.sh)里加了拖apkpure的功能,比如当缺少翻墙软件的时候也许能用得到(迫真;问题是discord本身也需要翻墙,也许我要是能搞到那款discord低仿应用的api的话,可以搞下

对了,apkpure现在好像没法直接下apk了(悲

草,我发现apkpure仍然可以下apk,这可真™神奇,难道又是命令行antics?不对,准确点来说是有些应用可以,有些不行,xapk是apkpure专用的打包格式,用来将apk和数据包放一个文件里;但我测试的时候某些apk好像完全没法获取,我抓包跟踪了下发现是因为那些apk限定地区了,所以apkpure搞了一个用起来极其蛋疼的apk下载器,反正我估计bash无望了🤔

这个还是比较好整的,只需要找到apkpure函数,把里面futaba.sh相关的几个函数展开再写一遍即可,其实上传和发消息的函数我是从更先进的discord drive脚本上复制的,futaba.sh的那几个函数基本上废了🙃

hmmmm,那么下一个antics也许就成了往backblaze里面塞apkpure搜索结果了,其实不仅云存储可以白嫖,™云计算(迫真)也可以白嫖,至少这个antics完全可以用ibm cloud来搞,也许可以往上面跑个rclone也许我也不清楚🙃

UPDATE2:backblaze + ibmcloud的脚本也写好了,rclone至少在白嫖云计算的ibmcloud上单线程跑得非常流畅,毕竟是go语言写的,完爆需要py的backblaze官方cli客户端🤔除此之外还需要一个单文件没有任何库的aria2包,我也找到了,其实我倒是想自己编译一个,然后挂github或者discord上,就像我交叉编译过win版魔改aria2那样🤔这样就可以写一个函数来做初始化了,并用alias命令将那两个程序的路径变成单一命令(因为白嫖云不会让你设置环境变量或者ln到/usr/bin🤔

当然和discord一样,它可以把metadata也上传上去,这样哪怕白嫖云删了本地存储也不用担心找不到东西;这玩意可能还是有点卵用的,比如apkpure上有十万甚至⑨万个vpn应用,discord antics的问题是discord本身就需要vpn,但这个backblaze antics就不需要vpn,无论是apk文件还是metadata都能在墙内直接下🤔

其实嘛,还可以用来拖别的东西,只要把里面的部分东西改成通用函数,就能用backblaze搞各种hentai图站了,搞完可以直接当图床用,空间不够了可以再白嫖一个,爽的1b🤔

backblaze tutorial.20.05.06

ooooOOOOOOOO

草,我发现今天我居然迫真怀旧了一下午加晚上,我发现了一个叫做pokemon clover(clover当然就是4chan的那个clover)的romhack,它的某个boss theme居然是知名梗曲(又名美国版爱的供养)sandstorm,我赶紧解包了它的音乐,发现它的bgm简直是西方互联网梗大合集,里面除了这个sandstorm还有某首waitin' for a hero,某mlg音效,the next episode(其实这两个都是mlg梗,但这个不是mlg梗合集,毕竟是4chan的/vg/做的,而不是mlg社区),但我难以想象99 luftballons居然也在里面,卧槽,这也是4chan梗的一部分吗?🤔

当然更生草的是有人把3d custom girl这部压根就没几个人听说过的hentai游戏的主题曲也做了进去,这简直比99 luftballons还要诡异,什么口味

奇怪的是我只能解包gsf,但转midi却不行,太操蛋了吧,这romhack是不是搞进去了太多素材导致压根就没法转midi啊?🙃

好了,到了迫真backblaze教程时间了,在我看来越多人白嫖backblaze然后用我的链接,李志强被傻逼sjw给whois出道然后真人快打的概率就越大,这就是为什么我会闲的蛋疼写这玩意

I preparations

  • 科学上网用的东西,梯子,机场,什么都行,如果你需要注册多个backblaze帐号的话记得搞个机场

  • rclone(为啥不是backblaze官方命令行客户端?因为不好玩

  • proxifier(如果rclone没法正常上传的话,至于下载,反正我们不用rclone下载,因为每天只有1GB免费流量

II

先去注册个protonmail,为什么是protonmail,因为只有它注册时只需要填个辅助邮箱即可,不需要搞电话号码或者别的

然后用这个链接注册backblaze;填上你在protonmail上看到的邮箱地址,然后用firefox直接生成一个密码

接下来它需要你去电话验证,这里既可以用自己的电话验证,也可以从网上随便找个免费电话,反正它默认不支持用电话登录,最多作为2fa,再说了它的验证水平比lea chan的🍺还要松,所以随便搞了,自己google免费短信验证之类的玩意去

但用免费电话验证的时候注意看下别的消息的日期,如果是几分钟前的说明它还能收到短信,如果是几个小时甚至几天前的话它八成下线了;另外discord哪怕在线的手机都收不到短信,但backblaze只要在线不到一分钟就能收到,实在不成再等五分钟

顺便还有个邮箱验证可以随手做了,以免账号被橄榄

完成短信验证之后就可以创建buckets了,比如创建一个叫做obamarapeface的bucket(这是hrpc的梗),记得设置属性为public;private bucket也可以用cloudflare worker来提取,但极其麻烦,我估计它除了能定制URL外没啥用处,还要至少每周更新一次token

然后点app key,再点Add a New Application Key,取个名字然后给全部权限,因为这是接下来rclone用的

然后它会生成一个

Success! Your new application key has been created. It will only appear here once.
keyID:
[迫真打码]
keyName:
obamarapeface
S3 Endpoint:
s3.us-west-002.backblazeb2.com
applicationKey:
[迫真打码]

这样的东西,applicationKey只会显示一次,所以最好找个东西复制保存起来

接下来可以考虑关浏览器了(迫真),但先下载下来rcloneproxifier,至于proxifier如何破解可以自己去找,提示:一个序列号就可以完成激活,不需要注册机(也没有

rclone下载下来后可以放任何位置,然后在它放的位置的资源管理器窗口那里点击然后输cmd,这样cmd就直接cd到了这个目录,我反正用的是cygwin,当然你可以设定系统路径啥的,但最简单的还是迫真cmd

rclone理论上只有一个exe文件,如下设置即可

C:\Users\Administrator\Desktop\rclone-v1.51.0-windows-386\rclone-v1.51.0-windows-386>rclone.exe config
2020/05/07 03:12:12 NOTICE: Config file "C:\\Users\\Administrator\\.config\\rclone\\rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> obamarapeface
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / 1Fichier
\ "fichier"
2 / Alias for an existing remote
\ "alias"
3 / Amazon Drive
\ "amazon cloud drive"
4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
\ "s3"
5 / Backblaze B2
\ "b2"
6 / Box
\ "box"
7 / Cache a remote
\ "cache"
8 / Citrix Sharefile
\ "sharefile"
9 / Dropbox
\ "dropbox"
10 / Encrypt/Decrypt a remote
\ "crypt"
11 / FTP Connection
\ "ftp"
12 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
13 / Google Drive
\ "drive"
14 / Google Photos
\ "google photos"
15 / Hubic
\ "hubic"
16 / In memory object storage system.
\ "memory"
17 / JottaCloud
\ "jottacloud"
18 / Koofr
\ "koofr"
19 / Local Disk
\ "local"
20 / Mail.ru Cloud
\ "mailru"
21 / Mega
\ "mega"
22 / Microsoft Azure Blob Storage
\ "azureblob"
23 / Microsoft OneDrive
\ "onedrive"
24 / OpenDrive
\ "opendrive"
25 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
26 / Pcloud
\ "pcloud"
27 / Put.io
\ "putio"
28 / QingCloud Object Storage
\ "qingstor"
29 / SSH/SFTP Connection
\ "sftp"
30 / Sugarsync
\ "sugarsync"
31 / Transparently chunk/split large files
\ "chunker"
32 / Union merges the contents of several remotes
\ "union"
33 / Webdav
\ "webdav"
34 / Yandex Disk
\ "yandex"
35 / http Connection
\ "http"
36 / premiumize.me
\ "premiumizeme"
Storage> b2
** See help for b2 backend at: https://rclone.org/b2/ **

Account ID or Application Key ID
Enter a string value. Press Enter for the default ("").
account> [迫真打码]
Application Key
Enter a string value. Press Enter for the default ("").
key> [迫真打码]
Permanently delete files on remote removal, otherwise hide files.
Enter a boolean value (true or false). Press Enter for the default ("false").
hard_delete>
Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n
Remote config
--------------------
[obamarapeface]
type = b2
account = [迫真打码]
key = [迫真打码]
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name Type
==== ====
obamarapeface b2

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

C:\Users\Administrator\Desktop\rclone-v1.51.0-windows-386\rclone-v1.51.0-windows-386>

上传文件的时候,用rclone.exe copy -vv "[文件路径,无论cmd还是cygwin都填win格式路径]" [rclone remote名称]:[bucket名称]/[bucket内的路径](当然也可以上传文件夹,两边都写文件夹,它会将文件夹里的所有文件上传到远程位置的文件夹里,如果那个远程文件夹不存在的话会自动创建),然后用rclone.exe ls [rclone remote名称]:[bucket名称]来列举上传的文件(另外rclone.exe lsd [rclone remote名称]:来列举所有的buckets,别忘了加后面的冒号),然后就可以构造直链了:

https://kawaii.toiletchan.xyz/file/[bucket名称]/[文件在bucket里的相对路径]

如果你用的是cygwin的话,这里可以上点bash magic:

function backblazeantics() { # 1 = remote name,2 = bucket name
    OLD_IFS=IFS
    IFS='\n'
    for files in `rclone lsf -R --fast-list "1":"2"`
    do
        echo "https://kawaii.toiletchan.xyz/file/2/files"
        # echo "https://ueberkawaii.toiletchan.xyz/file/2/files"
    done
    IFS=$OLD_IFS
}

如果账号在EU区域的话(除非你在账号创建的时候刻意选,不然不会出现这种情况)把上述的kawaii.toiletchan.xyz替换成ueberkawaii.toiletchan.xyz即可

至于win批处理用户就™自求多福吧,因为批处理没有提供获取命令运行结果然后送进for的方式

如果rclone的上传和ls功能没法用的话,安装proxifier并将rclone.exe添加进proxy列表;但我在一台32位的win7屑虚拟机上测试的结果是完全可以上传和ls,只不过有点慢,但却比cloudflare在移动墙中墙里的表现好多了,至于电信的话我估计上传(backblaze)下载(cloudflare)都可以随便满速

III

我知道这儿漏了一大段内容,那就是kawaii.toiletchan.xyz是怎么实现免流量下载backblaze的文件的

这就涉及到cloudflare antics了,首先为了实现cloudflare antics,你需要一个顶级域名,而且由于freenom基本上被玩坏了,这个顶级域名只能买了

有个domcomp网站可以对比域名,还能快速搜出来域名可用性;我发现支持paypal的域名厂商非常少,除了死🐴奸商godaddy外还有个namesilo(自动扣费式,和discord一样)和dynadot;xyz域名应该是最便宜的,反正是玩票;长期用的话namesilo最便宜,至少续费和第一年价格一样

别忘了在填whois信息的时候填李志强和stancy chan的信息,为了方便各位toiletgangers橄榄带恶人,要么我™在这里再开示一次他们的信息?🤔

好吧,这是stancy chan的:

Registry Registrant ID: 
Registrant Name: STACY BLACKMON
Registrant Organization: 
Registrant Street: 7 COLERIDGE HOUSE
Registrant Street: 3 TAGORE CLOSE
Registrant City: HARROW
Registrant State/Province: HARROW
Registrant Postal Code: HA3 7FG
Registrant Country: GB
Registrant Phone: +44.2035925599
Registrant Phone Ext: 
Registrant Fax: 
Registrant Fax Ext:
Registrant Email: 

这是toilet chan的:

Registry Registrant ID: 
Registrant Name: Zhiqiang Li
Registrant Organization: "kawaii" Toilet "chan"'s pedosexual ring
Registrant Street: Lane 281, Xinzhong Street
Registrant City: Tainan
Registrant State/Province: TW
Registrant Postal Code: 85014
Registrant Country: TW
Registrant Phone: +886.0909317096
Registrant Fax: +886.0909317096
Registrant Email: 

我这个toiletchan.xyz就是玩票域名,接下来可以设个迫真A记录也可以用nameservers接到比如vestacp的网站上使其拥有迫真完整DNS记录(至少14条),接下来就可以去拿那个protonmail创建个cloudflare帐号了🤔

cloudflare帐号创建之后的第一件事就是输入域名,然后它会检查原来的dns记录,此时可以添加一个cname记录,值为你在backblaze上传文件后生成链接查看文件详情(不是在rclone里,而是在backblaze的web管理界面里)时显示的文件地址的域名(没错,添加cname后它就会从backblaze拖文件,不用写worker脚本,就是这么简单,这可是官方教程说的),也可以等设置好后再添加,比如现在创建的账号基本上都是f002.backblazeb2.com,我觉得也许有别的子域名,我去尝试创建个区域在EU的backblaze账号(手动滑稽

现在可以确定f003.backblazeb2.com就是EU区域的backblaze文件服务域名,而f002.backblazeb2.com可能是美西的,那么f001.backblazeb2.comf000.backblazeb2.com就是他们在美西的前两个数据中心咯?因为我记得他们在美东没有业务,反正有cloudflare,他们哪怕放冰岛都没有问题;除了EU有自己的一套处理数据的法律,他们才专门给EU设立了一个数据中心,给那些数据必须放在EU的客户用

最后一步是在域名管理商那里将nameserver替换成cloudflare的,这样就可以用设置的cname子域名访问backblaze数据了;官方教程里还有设置两条page rules屏蔽非自己bucket的步骤,但如果你需要开10个小号的话,你可以完全无视这个步骤

对于cloudflare获取backblaze文件的这个过程,还有一个需要注意的点,SSL/TLS需要设置成Full (strict),这样才能确保无论用户到cloudflare还是cloudflare到backblaze都走的是https,因为backblaze强制https,设成别的模式会导致无限请求

最后把剩下的A记录里的IP全部换成你最讨厌的网站的IP即可,甚至可以设置成直通,就像故意关掉现在基本上免费提供的whois保护一样🤔这样那些迫真黑客要出道你的时候,无论是whois出道还是IP出道都会被trolled🤔

IV limitations

我需要在此重申下免费账号的限制,免得用过度了被停用某些功能甚至被橄榄:

Daily Storage Caps
The first 10 GB are free.

Daily Download Bandwidth Caps
The first 1 GB are free.

Daily Class B Transactions Caps
Class B transactions are related to download. The first 2,500 are free.

Daily Class C Transactions Caps
The first 2,500 are free.

前两个好理解,第一个显而易见(需要注意的是它算一天内的平均值,换句话说一天的某个时间里面存了20GB东西都没关系,只要及时删掉即可,但我肯定不建议这么用),第二个只要不从backblaze直接下文件(无论是从rclone还是从web界面),那一项永远为0;剩下两个是什么意思?

和amazon s3一样,backblaze也对api调用计费,尽管它的计费比s3便宜得多;它将api调用分为3类,A类都和上传与删除相关,是完全免费的,都有:

Transactions Class A
Costs: Free

B2 Native API
S3 Compatible API
b2_cancel_large_file
Abort Multipart Upload
b2_delete_bucket
CreateMultipartUpload
b2_delete_file_version
CompleteMultipartUpload
b2_delete_key
DeleteBucket
b2_finish_large_file
DeleteObject
b2_get_upload_part_url
DeleteObjects
b2_get_upload_url
PutObject
b2_hide_file
UploadPart
b2_list_keys
UploadObject
b2_start_large_file
b2_upload_file
b2_upload_part

B类都是下载相关的,计费是每1000万次4美元:

Transactions Class B
Cost: The first 2,500 of these calls are free each day, then $0.004 per 10,000

B2 Native API
S3 Compatible API
b2_download_file_by_id
GetObject
b2_download_file_by_name
GetObjectACL
b2_get_file_info
HeadObject

C类是其他api,计费是每100万次4美元:

Transactions Class C
Cost: The first 2,500 of these calls are free each day, then $0.004 per 1,000

B2 Native API
S3 Compatible API
b2_authorize_account
CopyObject (Put Object Copy)
b2_copy_file
CreateBucket
b2_copy_part
GetBucketACL (List Objects)
b2_create_bucket
GetBucketLocation
b2_create_key
HeadBucket
b2_get_download_authorization
ListBuckets
b2_list_buckets
ListMultipartUploads
b2_list_file_names
ListObjectsv2
b2_list_file_versions
ListObjectVersions
b2_list_parts
ListParts
b2_list_unfinished_large_files
UploadPartCopy
b2_update_bucket

所以,尽管和cloudflare连接后下载带宽费用是免了,但api调用可不免啊,白嫖模式下每天只能下载目测1000到2000次,超出了之后我不清楚会发生什么,但很明显,如果需要提供像某神社那样的hentai内容下载服务,保险起见还是找个信用卡绑上比较好,毕竟我们都看到了,这价格简直是白菜价,外加存储也只需要5美元/TB,貌似只有墙内云的磁带存储的包月价格才能比backblaze的正常存储价格便宜

另外backblaze的官方宣传里面就说了“比磁带存储还要便宜”,无论是自建的磁带存储还是s3冰川;等等,s3冰川现在调价了,调到了4美元/TB,还有个叫做Deep Archive的居然只要0.99美元/TB;但问题是真的存1TB数据进去的话,取出它们不仅需要等好几天,还需要支付可能有90美元的流量费用,所以还是不如backblaze;s3貌似只对它自己的cdn免流量,但cloudflare明显用的人更多

ddOtube.20.05.05

我打算搞个视频网站了,因为我发现那个叫做BackBlaze的云存储服务商,它和cloudfare之间居然免流量!这样的话,哪怕存储1TB的视频我也只需要5美元的费用,而观众看视频导致的流量既不会从vultr或者别的什么vps厂商那里扣也不会从BackBlaze那里扣,而且我也不会觉得它能达到1TB

毕竟untergangers被屑tube天天copyrekt,我觉得我可以做点事情解救他们,或者在我看来,搞不好可以在我自己的视频网站上上传100Mbps的4k视频,这是屑cord做不到的(迫真

现在就差技术路线了,我到底用什么做视频网站?要不要重新买个vps?而且最重要的是,如何实现上传功能?我还想做点别的功能,比如供管理员命令行批量重新上传untergangers的视频?从其他网盘那里获取视频上传链接(比如untergangers喜欢用的mediafire或者我最喜欢用的discord drive)?

其实这些都好办,因为只有我是管理员,我可以直接用脚本上传任何视频并设置好参数,但别人怎么办?我还得看看BackBlaze的参考文档,还有和我选择的开源视频网站程序集成

另外这个视频网站也允许我做出那件我一直想做但做不到的事情:unterganger archive

因为unterganger圈子流行退圈删视频,比如fish chan的视频就被删过,我之前想过用discord drive做这件事情,但现在我有更好的办法了:BackBlaze + cloudflare

或者我也可以archive别的视频,比如某俄罗斯猫片up的喵酱视频

总之拥有自己的视频网站将是件非常有意思的事情,而且由于是cloudflare的cdn,搞不好我甚至都不用翻墙

至于费用,哪怕里面堆满我自己拖的视频也只需要5美元/TB,我觉得还能接受

至于视频网站程序,它至少得能实现下述功能:

  • 重定向上传到BackBlaze
  • 像屑tube那样设置播放列表,或者视频分类
  • 对视频分类设置权限,比如unterganger archive只对部分unterganger开放

剩下的东西我觉得可以直接命令行了

ps. 域名已经买了,ddotube.com,这次我用的是namesilo,接下来如果没啥问题的话我打算把godaddy上的域名全部转出

UPDATE:在我等那个虚拟信用卡卖家发货的时候,我™居然注册了10个BackBlaze账号可还行,它的电话验证比屑cord松多了,随便过,所以我顿时有了100GB白嫖空间;现在信用卡发了,而且也通过了验证,所以我的大号应该可以正常用了,然而我仍然没有确定用哪个开源视频网站🤔

我那个eDP转DP直驱也翻车了,只会不停RGBW四色显示,插台式机上还能显示出分辨率等参数,甚至设备管理器里都有型号,就是不显示;笔记本上压根连型号都识别不出,看来这10系N卡简直和diy有仇🙃

所以我只能去买驱动板了,™驱动板什么都带,甚至还内置背光驱动🤔也就是加130块钱的样子🤔另外我又买了个便宜域名,准备设置上cloudflare,结果它一直卡在nameserver那里,我记得明明在whois里面都改了啊,这可真🐔儿见鬼了

UPDATE2:在我折腾了将近一个小时后,第二套域名系统也折腾成功了,反正只要节点还是f002(我注册了十个也是如此),一个域名就可以对付一堆账号,只要把链接中间的bucket name改掉即可,所以嘛,我已经打算把那个0.⑨⑨美元的xyz域名当公共肉便器用了🤔基本上见人就推荐白嫖backblaze,直到某个傻逼准备橄榄我,whois出道然后出了李志强为止(我现在注册的所有域名都填的李志强的迫真信息🤔保险起见剩下的DNS记录全部改成了4chan的ip地址(八成也是cloudflare

我测试了下墙内的连接性,发现了一个非常诡异的现象,移动墙中墙的宽带连接起来速度极慢,但移动4G却能满速看视频,包括brcc系列,可能和成都移动恰好相反吧🙃

我看啥时候出个迫真白嫖教程,对了,出于橄榄李志强的原因(迫真),我鼓励所有人直接用https://kawaii.toiletchan.xyz取代自己注册个域名搞cloudflare🙃对,我并没有按照backblaze官方教程那样设置page rules,我搞的就是一个域名访问所有的backblaze public buckets,不服来肛李志强去啊🤔

wtf.20.05.01

mlgb我在逼乎上看到连根塞发明了“肛门文学爱好者”一词来嘲讽p5的明智腐女粉,所以我就便乘了一次,然后被某死🐴腐女举报了评论,然后逼乎就塞了我一天口球,我去,有种举报连根塞去啊,是他发明了这个词,又不是我🙄我通常不会露骨地用“肛门”这个词的(除非是gangnam style梗相关🙃

话说回来我在西方perusona圈子里的破事也是明智粉挑起来的,我现在对这个角色和他的粉丝都没什么好感🤔

我们来试试如何⑨评akechi🙃

ooooOOOOOOOO

我倾向于认为p5编剧能写出pancakechi这种人间之屑,其实是后现代主义的笔法;此人能够一边用perusona杀人一边嘲讽用perusona但没杀人的pt,一边要橄榄他那拔屌无情的亲爹一边给他亲爹当打手,我已经无法用任何常理来解释这种人物和写他的编剧了,那么更有可能的情况是pancakechi相关剧情其实是荒诞派艺术,他本身除了可能用来讽刺其他的东西(甚至atlus高层)之外没有任何意义🙃甚至有可能编剧团队里有人并不赞同搞两个wildcard角色,而上级非要这么干,所以他们就开始瞎鸡巴写,怎么荒诞怎么写

而更荒诞的是游戏之外的影响,这个压根就是瞎鸡巴搞的人物却意外地在日本火了起来,也许这个变态人物刚好戳到了很多人的G点,也许“哪怕一群猴子打字也有可能打出perusona faibu的pancakechi剧情来”,火到atlus在pq2和p5r里接着高强度pancakechi营业,当然新加剧情里这个角色还是荒诞派风格

I

也许atlus在原版p5里就在高强度媚宅,比如ann chan被击倒后撅屁股的样子(甚至p5s里面也有),但pancakechi的意外成功给了atlus又一个可以媚的群体,然而如果p5原版还不好看出来的话,p5r简直完全暴露了atlus媚宅也好媚腐也好的拙劣水平,作为后现代主义的迫真爱好者,我甚至从atlus的媚宅或者媚腐行为里嗅出了一丝非常明显简直懒得掩饰的刻意,刻意得快有点反讽的味道了

作为二次元萌妹游戏,旧perusona是没有这种东西的,它们不媚任何东西,没有任何刻意添加的违和玩意,所以perusona3能够几乎封神,哪怕它玩起来连perusona4都不如;而perusona4及其golden版其实也挺有意思的,比如主角的小镇像极了我待了不知多少年的小镇,我非常有既视感;至于perusona1和perusona2恐怕是更加纯粹的玩意,反正我是玩不下去,听听BGM还差不多🙃

但perusona faibu火了🙃所以我以迫真后现代主义的角度猜测perusona faibu立项的时候上级强行布置了吸引otaku的指标,而他们员工可能有别的想法,所以他们采用后现代主义的方式来完成上级任务,那就是怎么别扭怎么来,怎么荒诞怎么来

而且很不幸的是除了otaku文化外的人能注意到问题,otaku挺™吃这一套的(迫真,所以导致atlus高层或者sega高层觉得这样搞还™有利可图,除了设计kasumi这样的角色来媚宅外他们还想同时讨好腐女,然后我们都知道p5r新剧情会变成什么吉儿东西了

但难以想象的是他们居然会在一个媚宅角色里玩perusona faibu风格故作高深甚至尝试迫真戏仿perusona前作,我去,他们真以为每个perusona faibu玩家都玩过上古perusona系列?所以很多人觉得他们搞砸了新萌妹角色

而且,他们毫无意外地也搞砸了pancakechi

草,ddg现在基本上废了,因为我既搞不到moopan的共享会员,而且我发现官方购买会员的通道也没法用,这样的话除非我有什么神奇的方法爆破了moopan,不然我估计它的资源完全没法用了

而且更蛋疼的是76fengyun的共享会员也没得,好时代,结束了🙃

另外更草的是我之前打算买个迫真DIY显示器,这次是走eDP直连DP,结果别的配件都买上了,屏幕面板本身到3号才发货,不知什么时候到🤔这就很TM蛋疼了,我看那个1080p的笔记本屏幕能连不🤔另外屏幕的运费居然需要50,一点都不便宜🤔我倒是更感兴趣那个5.5寸2k的屏幕,只不过那家伙一直没理我可还行

UPDATE:eDP转DP的转接板到了,从电路板可以看出eDP和DP之间完全就是直连的,除了几个和供电相关的针脚,是这个电路板剩下80%的面积需要完成的事,供电转换和接另外一块供电驱动板驱动台式屏幕的背光电路

奇怪的是eDP既有30pin又有40pin,我的笔记本屏幕是30pin,而现在新出的笔记本4k屏幕是40pin,台式机4k是30pin(我买的是台式版本),那么问题来了,这多出的10pin是背光供电吗?还有4k台式屏幕的30pin和1080p笔记本屏幕的30pin一样吗?

当然如果是1080p60的话好像就用不着这种操蛋玩意,这一个破板子要70,加上外围电路还有运费啥的100过了,现在只要60就能买到1080p的薄款驱动板,这是真的带有芯片而且还能5V供电的驱动板哦🤔旧款1080p驱动板都是批发价了,我记得只要二三十一块

这种直连方案就是专门用来搞4k甚至更高规格屏幕的,只要DP线缆用1.4,接8k60p都没啥问题,或者接个4k144p也行,毕竟现在4k60p的驱动板要230,4k144p乃至5k的驱动板压根就没出

当然我买这个实在是因为我只有一个HDMI接口,还被我的主显示器占了🤔

我查了下,笔记本屏幕的eDP30pin和台式机屏幕的eDP30pin还真™不一样,这是笔记本eDP30pin定义图:

这是台式机的eDP30pin定义图:

可以看出笔记本的30pin里有一大半都和背光有关,导致lanes只有两条,而台式机的30pin里有一大半是四条lanes,这也说明40pin多出来的就是背光,也说明我这个转接板真的只能接不知什么时候才到的4k面板了🙃

另外这个板子也不是万能的,比如LG的那个5k面板http://panelook.cn/LM340RW1-SSA1_LG%20Display_34_LCM_overview_cn_38932.html,它有丧心病狂的2channel 4lanes和60pin的eDP口(我觉得更加惊奇的是这个规格的面板都用的什么V-by-One,它居然还是eDP),不仅屏幕本身需要2000,驱动板也要2000,而且如果没有原装驱动板的话据说需要两条DP线才能上10bit(所以原装驱动板到底有什么魔法在里面)🤔我估计如果是2ch的话哪怕专门给它做个直通板也得两条DP线了🙃

borderlands3.20.04.22

这几天连着玩了好几天borderlands3,和我玩的其他游戏一样,这游戏也玩到了玩游戏时间没迫真改游戏时间多的程度

目前bl3由于存档修改器没出,所以只能对武器进行内存修改,据说武器数据其实是在资源文件里的,随机只是在随机buff(那么buff肯定是在存档里面的,为什么我没法修改?),所以现在用CE修改的结果再次打开游戏会失效

但bl3迫真修改的另外一个领域挺有意思的,这游戏其实无论开箱子还是用那个“gun gun”直接刷武器,甚至任务结束领奖励都是在对一个叫做itempool的对象进行随机化操作,如果能找到比如gun gun的指针(CE脚本已经有了),修改其itempool参数,就能想刷什么就刷什么,比如将弹药的itempool放进去,gun gun就变成了ammo gun🤔或者刷10个橙色装备也行,我反正已经集齐了infinity枪🤔

问题是itempool的指针每次运行游戏后都会变,所以需要注入一个borderlands3.dll进去,它据说能实现console但我从来没调用成功过,但它至少能dump出各种对象的指针出来,然后grep一下就能获得itempool指针了🤔我看了下里面有意思的东西多得是,比如有些任务奖励的枪,甚至连gun gun本身都能刷出来(我猜测这个itempool的存在是为了主线后期的某个任务奖励,倒数第二个vault的神器就是这个,但和另外三个不一样,这个是个武器),而且由于gun gun刷出来的枪总是匹配当前等级,如果乐意的话可以一直使用某些装备,免得接着玩下去那些装备变得太弱🤔

另外我还发现了一些有意思的东西,比如dwClipToSpend和BulletsToFire这两个参数,前者如果设为0的话任何武器都能变成infinity(至少infinity是这么设置的),后者如果为0的话表示连发,如果为1或者其他数的话表示点一次鼠标发射的弹药数;gun gun和maliwan的武器一样需要蓄力,但坑爹的是蓄力之后只能发一次(10个武器),这样刷infinity的时候就极其蛋疼,所以我把这两个变量都改成0,fire rate改成2,然后我就可以刷一堆小手枪,然后做infinity hunter了(迫真

Lilith:这就是你迟迟不去寻宝的理由?(手动滑稽

UPDATE:最近bl3来了一波更新,那个临时改武器参数的脚本废了,但改itempool和找出武器指针的脚本还能用

新的event地图里面有新武器,其实只要开event就能在除了飞船外的任何地图刷新武器(因为有哪些可用的itempool其实和地图相关,但很神奇的是地图专属itempool其实还是比较少的),除了一把atlas的武器需要在那个地图的boss itempool里刷;那真的是bl3最神的神器,只需要一颗子弹就能召唤出一把悬空的自动炮塔,能一直射到时间限制结束为止,不像tediore的神器需要浪费一个弹夹而且还有子弹的限制,配合no reload可以刷出几十把炮塔,将任何视线内的敌人扫成筛子🤔像极了rage2里的无限无人机流🤔果然bl3有隐藏class,那就是:飞过来!飞过来!!飞过来!!!(wiebitte

接下来我研究了下更进阶的antics,直接改武器;分析武器指针可以发现武器的永久存储数据只有等级、blueprint和武器附件参数,别的数字形式数据都是由前者算出来的🤔理论上将一把武器的参数全部替换成另外一把武器的参数就能将它直接变成后者,比如我就这样lv1就拿到了gun gun🤔

但问题是lv1是没有什么机会得到eridium的,而这个游戏诡异的地方是如果eridium为0的话是怎么也修改不了的,所以真正可以使用gun gun的时候可能是lv4,第一个地图西北方向(也就是claptrap任务拆COV广播塔的地方再往前)有个隐藏boss,打它就有eridium🤔我记得我那次玩时拿到了eridium准备闪人,然后它一直跟着我到了COV的营地,然后和COV打起来了,接下来居然判断我TM赢了,草(中日双语

既然gun gun没法用,我就打算按照atlas武器的参数改一把那个神器,结果游戏崩了🙃但改另外一款atlas武器时却意外成功🙃我去bl3 moddin' discord上查东西,结果发现就这几天突然出了存档修改器,而且还是web端,爽的1b,直接从另外一个存档搞到了武器数据编码粘贴了过去,这样我终于可以拿神器在lv1时就biubiubiu过去了(手动滑稽🤔

话说回来现在既然已经可以直接粘贴武器进去了,甚至造出游戏中不存在的武器(比如在辐射枪里加上the leech的改良版taser造出辐射伤害的taser枪),我觉得gun gun好像没啥必要了,用claptrap的名言来说,就是“screw you borderlands 3, you can't hurt us anymore”(wiebitte🤔

b r u h s e t t e.20.04.16

我今天下午傻逼了,改频道备份脚本的时候把调试用的message id硬编码到了脚本里面而忘了打注释,导致后面拖的ucc绝大多数频道都没有拖完,更™哭笑不得的是我到拖那个没多少消息的science频道发现第一次返回的就是个空数组才发现这个问题,然后我发现我™把那串玩意还写到github里去了,吓得我赶紧先改了git,然后再接着搞

所谓改git就是先git clone到本地,然后git reset --hard [确认没有出错的commit],然后git push -f,输入github账号和密码,搞定,github那边再也看不到出错的代码了

本来今天晚上我就可以列举出实验数据的,但目前这样我只能先列举出(但愿)没出错部分的数据了

I what data

当然是ucc的数据了(手动滑稽

我用一台vultr最烂的机子(512MB内存,10GB固态,NY/NJ)搞这次实验,而且我利用起来了上次创建到一半就被橄榄的账号,所以只有⑨个webhook线程+1个nitro线程

下面是实验结果:

我们先写一个循环:

for bruh in `ls -tr | grep -Eo "ucc.[a-z\-]*" | uniq`
do
N=(cat "bruh.20.04.16.json" | wc -l)
[ (wc -c < "bruh.20.04.16.sedresults") -eq 0 ] && M=0 || M=(((cat "bruh.20.04.16.sedresults" | wc -l )/2))
echo "bruh(N=N,M=M)"
echo "\`\`\`"
cat "$bruh.20.04.16.timestat"
echo "\`\`\`"
echo
done

然后我们就可以列举结果了(其中N为消息条数,M为附件的数量):

ucc.rules(N=3,M=0)

>>>> time for stage 1:
real    0m0.598s
user    0m0.212s
sys 0m0.163s
>>>> time for stage 2 reupload phase:
real    0m0.069s
user    0m0.030s
sys 0m0.038s
>>>> time for stage 2 sedreplace phase:
real    0m0.008s
user    0m0.001s
sys 0m0.007s
>>>> time for stage 2:
real    0m0.259s
user    0m0.126s
sys 0m0.132s

ucc.general(N=178154,M=8917)

>>>> time for stage 1:
real    40m0.036s
user    15m3.618s
sys 15m59.694s
>>>> time for stage 2 analysis phase:
real    54m40.750s
user    15m8.014s
sys 38m53.228s
>>>> time for stage 2 reupload phase:
real    78m32.942s
user    35m29.197s
sys 24m38.265s
>>>> time for stage 2 sedreplace phase:
real    34m10.949s
user    16m32.306s
sys 16m57.830s
>>>> time for stage 2:
real    167m26.441s
user    67m10.152s
sys 80m30.151s

ucc.parodies(N=3836,M=83)

>>>> time for stage 1:
real    0m58.126s
user    0m24.488s
sys 0m20.151s
>>>> time for stage 2 analysis phase:
real    0m47.037s
user    0m17.923s
sys 0m28.172s
>>>> time for stage 2 reupload phase:
real    0m47.024s
user    0m20.175s
sys 0m11.811s
>>>> time for stage 2 sedreplace phase:
real    0m2.095s
user    0m0.862s
sys 0m1.194s
>>>> time for stage 2:
real    1m36.432s
user    0m39.057s
sys 0m41.348s

ucc.pictures(N=21194,M=3570)

>>>> time for stage 1:
real    4m53.799s
user    1m52.285s
sys 1m55.062s
>>>> time for stage 2 analysis phase:
real    6m52.144s
user    2m17.382s
sys 4m27.690s
>>>> time for stage 2 reupload phase:
real    34m38.977s
user    15m16.545s
sys 10m23.845s
>>>> time for stage 2 sedreplace phase:
real    2m44.607s
user    1m14.663s
sys 1m27.114s
>>>> time for stage 2:
real    44m16.138s
user    18m48.753s
sys 16m18.879s

ucc.games(N=4168,M=474)

>>>> time for stage 1:
real    1m3.273s
user    0m25.020s
sys 0m26.014s
>>>> time for stage 2 analysis phase:
real    1m3.392s
user    0m23.598s
sys 0m38.562s
>>>> time for stage 2 reupload phase:
real    5m11.379s
user    2m7.728s
sys 1m25.108s
>>>> time for stage 2 sedreplace phase:
real    0m11.912s
user    0m4.785s
sys 0m6.849s
>>>> time for stage 2:
real    6m26.957s
user    2m36.216s
sys 2m10.685s

ucc.music(N=3296,M=168)

>>>> time for stage 1:
real    0m57.296s
user    0m25.796s
sys 0m21.075s
>>>> time for stage 2 analysis phase:
real    0m43.922s
user    0m16.960s
sys 0m26.012s
>>>> time for stage 2 reupload phase:
real    10m18.591s
user    1m28.233s
sys 0m59.993s
>>>> time for stage 2 sedreplace phase:
real    0m8.526s
user    0m3.965s
sys 0m4.357s
>>>> time for stage 2:
real    11m11.394s
user    1m49.281s
sys 1m30.579s

ucc.youtube(N=3269,M=63)

>>>> time for stage 1:
real    0m54.414s
user    0m23.364s
sys 0m20.059s
>>>> time for stage 2 analysis phase:
real    0m40.292s
user    0m15.551s
sys 0m23.910s
>>>> time for stage 2 reupload phase:
real    0m46.225s
user    0m15.342s
sys 0m10.395s
>>>> time for stage 2 sedreplace phase:
real    0m1.605s
user    0m0.648s
sys 0m0.894s
>>>> time for stage 2:
real    1m28.441s
user    0m31.681s
sys 0m35.376s

ucc.bots(N=178784,M=15950)

>>>> time for stage 1:
real    43m44.499s
user    18m2.452s
sys 17m22.506s
>>>> time for stage 2 analysis phase:
real    73m5.382s
user    19m30.763s
sys 52m51.512s
>>>> time for stage 2 reupload phase:
real    155m11.269s
user    67m43.191s
sys 46m36.591s
>>>> time for stage 2 sedreplace phase:
real    65m31.364s
user    32m56.373s
sys 31m18.920s
>>>> time for stage 2:
real    293m50.687s
user    120m11.196s
sys 130m48.238s

ucc.spam(N=22191,M=1554)

>>>> time for stage 1:
real    5m8.796s
user    2m9.658s
sys 1m55.477s
>>>> time for stage 2 analysis phase:
real    4m42.811s
user    1m50.327s
sys 2m49.128s
>>>> time for stage 2 reupload phase:
real    35m51.530s
user    9m23.487s
sys 5m36.858s
>>>> time for stage 2 sedreplace phase:
real    2m54.117s
user    1m27.707s
sys 1m23.897s
>>>> time for stage 2:
real    43m29.036s
user    12m41.749s
sys 9m50.207s

ucc.announcements(N=1128,M=56)

>>>> time for stage 1:
real    0m21.185s
user    0m6.881s
sys 0m6.430s
>>>> time for stage 2 analysis phase:
real    0m11.996s
user    0m5.183s
sys 0m6.553s
>>>> time for stage 2 reupload phase:
real    0m46.831s
user    0m14.504s
sys 0m7.984s
>>>> time for stage 2 sedreplace phase:
real    0m1.020s
user    0m0.407s
sys 0m0.594s
>>>> time for stage 2:
real    1m0.074s
user    0m20.181s
sys 0m15.265s

ucc.roleplaying(N=13394,M=202)

>>>> time for stage 1:
real    3m8.108s
user    1m15.497s
sys 1m9.103s
>>>> time for stage 2 analysis phase:
real    2m30.225s
user    0m57.706s
sys 1m29.795s
>>>> time for stage 2 reupload phase:
real    2m19.907s
user    0m54.710s
sys 0m29.106s
>>>> time for stage 2 sedreplace phase:
real    0m6.245s
user    0m2.795s
sys 0m3.315s
>>>> time for stage 2:
real    4m56.968s
user    1m55.423s
sys 2m2.564s

ucc.nsfw(N=67477,M=6063)

>>>> time for stage 1:
real    15m55.261s
user    6m25.597s
sys 6m19.178s
>>>> time for stage 2 analysis phase:
real    17m38.283s
user    5m46.530s
sys 11m41.315s
>>>> time for stage 2 reupload phase:
real    53m7.474s
user    25m51.804s
sys 15m48.258s
>>>> time for stage 2 sedreplace phase:
real    11m18.488s
user    5m36.071s
sys 5m32.812s
>>>> time for stage 2:
real    82m5.272s
user    37m14.776s
sys 33m2.907s

ucc.parody-of-the-month(N=230,M=1)

>>>> time for stage 1:
real    0m4.866s
user    0m1.773s
sys 0m1.734s
>>>> time for stage 2 analysis phase:
real    0m2.490s
user    0m1.095s
sys 0m1.379s
>>>> time for stage 2 reupload phase:
real    0m2.902s
user    0m0.272s
sys 0m0.212s
>>>> time for stage 2 sedreplace phase:
real    0m0.113s
user    0m0.032s
sys 0m0.080s
>>>> time for stage 2:
real    0m5.878s
user    0m1.532s
sys 0m1.907s

ucc.unterganger-of-the-month(N=356,M=4)

>>>> time for stage 1:
real    0m5.512s
user    0m2.075s
sys 0m1.818s
>>>> time for stage 2 analysis phase:
real    0m3.346s
user    0m1.517s
sys 0m1.805s
>>>> time for stage 2 reupload phase:
real    0m3.691s
user    0m0.976s
sys 0m0.576s
>>>> time for stage 2 sedreplace phase:
real    0m0.263s
user    0m0.081s
sys 0m0.180s
>>>> time for stage 2:
real    0m7.569s
user    0m2.674s
sys 0m2.730s

ucc.politics-issues-news(N=39138,M=902)

>>>> time for stage 1:
real    9m52.465s
user    4m1.586s
sys 3m49.775s
>>>> time for stage 2 analysis phase:
real    11m59.082s
user    2m56.054s
sys 5m24.818s
>>>> time for stage 2 reupload phase:
real    7m53.525s
user    3m55.623s
sys 2m11.564s
>>>> time for stage 2 sedreplace phase:
real    1m11.090s
user    0m32.826s
sys 0m37.067s
>>>> time for stage 2:
real    21m4.250s
user    7m24.727s
sys 8m13.773s

ucc.personal-venting(N=63703,M=1814)

>>>> time for stage 1:
real    15m24.444s
user    5m45.986s
sys 6m9.725s
>>>> time for stage 2 analysis phase:
real    17m28.200s
user    5m28.831s
sys 11m35.278s
>>>> time for stage 2 reupload phase:
real    19m5.728s
user    7m44.789s
sys 4m42.570s
>>>> time for stage 2 sedreplace phase:
real    2m53.872s
user    1m22.623s
sys 1m28.695s
>>>> time for stage 2:
real    39m28.740s
user    14m36.596s
sys 17m47.007s

ucc.welcome-goodbye(N=12510,M=154)

>>>> time for stage 1:
real    2m57.746s
user    1m8.830s
sys 1m7.993s
>>>> time for stage 2 analysis phase:
real    2m48.142s
user    1m1.245s
sys 1m42.571s
>>>> time for stage 2 reupload phase:
real    1m30.062s
user    0m38.672s
sys 0m22.933s
>>>> time for stage 2 sedreplace phase:
real    0m5.497s
user    0m2.299s
sys 0m3.066s
>>>> time for stage 2:
real    4m24.047s
user    1m42.358s
sys 2m8.766s

ucc.feedback-support(N=4354,M=74)

>>>> time for stage 1:
real    1m3.929s
user    0m24.427s
sys 0m24.672s
>>>> time for stage 2 analysis phase:
real    0m54.821s
user    0m21.481s
sys 0m31.699s
>>>> time for stage 2 reupload phase:
real    1m0.924s
user    0m19.385s
sys 0m12.476s
>>>> time for stage 2 sedreplace phase:
real    0m1.948s
user    0m0.762s
sys 0m1.088s
>>>> time for stage 2:
real    1m57.993s
user    0m41.722s
sys 0m45.465s

ucc.pokemon-bots(N=69043,M=83)

>>>> time for stage 1:
real    17m31.568s
user    6m41.507s
sys 6m54.745s
>>>> time for stage 2 analysis phase:
real    18m10.107s
user    5m35.012s
sys 12m10.210s
>>>> time for stage 2 reupload phase:
real    1m28.991s
user    0m22.092s
sys 0m13.200s
>>>> time for stage 2 sedreplace phase:
real    0m10.733s
user    0m5.372s
sys 0m5.145s
>>>> time for stage 2:
real    19m50.917s
user    6m2.850s
sys 12m29.112s

ucc.rules-dca(N=1,M=0)

>>>> time for stage 1:
real    0m0.557s
user    0m0.190s
sys 0m0.133s
>>>> time for stage 2 reupload phase:
real    0m0.084s
user    0m0.026s
sys 0m0.058s
>>>> time for stage 2 sedreplace phase:
real    0m0.011s
user    0m0.002s
sys 0m0.006s
>>>> time for stage 2:
real    0m0.337s
user    0m0.123s
sys 0m0.208s

ucc.best-audio-based(N=163,M=1)

>>>> time for stage 1:
real    0m3.159s
user    0m1.041s
sys 0m1.114s
>>>> time for stage 2 analysis phase:
real    0m1.884s
user    0m0.770s
sys 0m1.057s
>>>> time for stage 2 reupload phase:
real    0m2.829s
user    0m0.264s
sys 0m0.222s
>>>> time for stage 2 sedreplace phase:
real    0m0.103s
user    0m0.040s
sys 0m0.061s
>>>> time for stage 2:
real    0m5.074s
user    0m1.158s
sys 0m1.512s

ucc.best-current-events(N=363,M=3)

>>>> time for stage 1:
real    0m6.164s
user    0m2.346s
sys 0m2.096s
>>>> time for stage 2 analysis phase:
real    0m4.232s
user    0m1.737s
sys 0m2.326s
>>>> time for stage 2 reupload phase:
real    0m6.055s
user    0m0.773s
sys 0m0.582s
>>>> time for stage 2 sedreplace phase:
real    0m0.261s
user    0m0.083s
sys 0m0.174s
>>>> time for stage 2:
real    0m10.846s
user    0m2.692s
sys 0m3.281s

ucc.best-dpmv(N=309,M=4)

>>>> time for stage 1:
real    0m5.095s
user    0m1.803s
sys 0m1.815s
>>>> time for stage 2 analysis phase:
real    0m3.480s
user    0m1.484s
sys 0m1.923s
>>>> time for stage 2 reupload phase:
real    0m3.917s
user    0m1.032s
sys 0m0.654s
>>>> time for stage 2 sedreplace phase:
real    0m0.155s
user    0m0.070s
sys 0m0.083s
>>>> time for stage 2:
real    0m7.845s
user    0m2.697s
sys 0m2.840s

ucc.best-fx(N=188,M=1)

>>>> time for stage 1:
real    0m3.332s
user    0m1.147s
sys 0m1.165s
>>>> time for stage 2 analysis phase:
real    0m2.353s
user    0m0.907s
sys 0m1.393s
>>>> time for stage 2 reupload phase:
real    0m2.776s
user    0m0.270s
sys 0m0.224s
>>>> time for stage 2 sedreplace phase:
real    0m0.122s
user    0m0.047s
sys 0m0.064s
>>>> time for stage 2:
real    0m5.521s
user    0m1.310s
sys 0m1.864s

ucc.best-parody-by-a-newcomer(N=216,M=3)

>>>> time for stage 1:
real    0m3.999s
user    0m1.389s
sys 0m1.331s
>>>> time for stage 2 analysis phase:
real    0m2.521s
user    0m1.012s
sys 0m1.441s
>>>> time for stage 2 reupload phase:
real    0m3.483s
user    0m0.758s
sys 0m0.503s
>>>> time for stage 2 sedreplace phase:
real    0m0.140s
user    0m0.057s
sys 0m0.081s
>>>> time for stage 2:
real    0m6.394s
user    0m1.929s
sys 0m2.172s

ucc.best-series(N=128,M=2)

>>>> time for stage 1:
real    0m2.613s
user    0m0.861s
sys 0m0.850s
>>>> time for stage 2 analysis phase:
real    0m1.715s
user    0m0.664s
sys 0m0.970s
>>>> time for stage 2 reupload phase:
real    0m3.172s
user    0m0.541s
sys 0m0.386s
>>>> time for stage 2 sedreplace phase:
real    0m0.134s
user    0m0.052s
sys 0m0.076s
>>>> time for stage 2:
real    0m5.286s
user    0m1.355s
sys 0m1.598s

ucc.best-story-based(N=172,M=1)

>>>> time for stage 1:
real    0m3.167s
user    0m1.073s
sys 0m1.060s
>>>> time for stage 2 analysis phase:
real    0m2.035s
user    0m0.823s
sys 0m1.147s
>>>> time for stage 2 reupload phase:
real    0m2.768s
user    0m0.270s
sys 0m0.222s
>>>> time for stage 2 sedreplace phase:
real    0m0.101s
user    0m0.037s
sys 0m0.063s
>>>> time for stage 2:
real    0m5.181s
user    0m1.240s
sys 0m1.593s

ucc.best-video-game-based(N=235,M=1)

>>>> time for stage 1:
real    0m4.384s
user    0m1.519s
sys 0m1.389s
>>>> time for stage 2 analysis phase:
real    0m2.803s
user    0m1.136s
sys 0m1.567s
>>>> time for stage 2 reupload phase:
real    0m2.997s
user    0m0.278s
sys 0m0.221s
>>>> time for stage 2 sedreplace phase:
real    0m0.101s
user    0m0.036s
sys 0m0.061s
>>>> time for stage 2:
real    0m6.175s
user    0m1.567s
sys 0m2.003s

ucc.most-humorous(N=367,M=3)

>>>> time for stage 1:
real    0m6.181s
user    0m2.235s
sys 0m2.249s
>>>> time for stage 2 analysis phase:
real    0m4.521s
user    0m1.864s
sys 0m2.551s
>>>> time for stage 2 reupload phase:
real    0m5.886s
user    0m0.728s
sys 0m0.563s
>>>> time for stage 2 sedreplace phase:
real    0m0.147s
user    0m0.042s
sys 0m0.103s
>>>> time for stage 2:
real    0m10.803s
user    0m2.733s
sys 0m3.365s

ucc.most-innovative(N=226,M=2)

>>>> time for stage 1:
real    0m3.829s
user    0m1.382s
sys 0m1.431s
>>>> time for stage 2 analysis phase:
real    0m2.671s
user    0m1.087s
sys 0m1.521s
>>>> time for stage 2 reupload phase:
real    0m3.847s
user    0m0.485s
sys 0m0.372s
>>>> time for stage 2 sedreplace phase:
real    0m0.116s
user    0m0.047s
sys 0m0.068s
>>>> time for stage 2:
real    0m6.876s
user    0m1.696s
sys 0m2.123s

ucc.transportation(N=8875,M=907)

>>>> time for stage 1:
real    2m17.521s
user    0m52.525s
sys 0m52.450s
>>>> time for stage 2 analysis phase:
real    2m27.892s
user    0m54.824s
sys 1m29.327s
>>>> time for stage 2 reupload phase:
real    13m57.523s
user    4m3.844s
sys 2m44.045s
>>>> time for stage 2 sedreplace phase:
real    0m28.523s
user    0m12.060s
sys 0m15.827s
>>>> time for stage 2:
real    16m54.303s
user    5m10.847s
sys 4m29.437s

ucc.pokemon(N=1571,M=207)

>>>> time for stage 1:
real    0m25.140s
user    0m9.312s
sys 0m9.405s
>>>> time for stage 2 analysis phase:
real    0m24.955s
user    0m9.937s
sys 0m14.716s
>>>> time for stage 2 reupload phase:
real    2m21.297s
user    0m56.130s
sys 0m36.807s
>>>> time for stage 2 sedreplace phase:
real    0m4.689s
user    0m1.801s
sys 0m2.762s
>>>> time for stage 2:
real    2m51.213s
user    1m7.955s
sys 0m54.467s

ucc.technology(N=1473,M=72)

>>>> time for stage 1:
real    0m22.791s
user    0m8.519s
sys 0m8.911s
>>>> time for stage 2 analysis phase:
real    0m19.449s
user    0m8.012s
sys 0m11.196s
>>>> time for stage 2 reupload phase:
real    0m55.958s
user    0m18.453s
sys 0m12.080s
>>>> time for stage 2 sedreplace phase:
real    0m1.580s
user    0m0.642s
sys 0m0.901s
>>>> time for stage 2:
real    1m17.286s
user    0m27.224s
sys 0m24.354s

ucc.film-tv(N=2543,M=105)

>>>> time for stage 1:
real    0m37.866s
user    0m14.915s
sys 0m14.765s
>>>> time for stage 2 analysis phase:
real    0m32.578s
user    0m13.279s
sys 0m18.702s
>>>> time for stage 2 reupload phase:
real    0m57.283s
user    0m26.494s
sys 0m17.257s
>>>> time for stage 2 sedreplace phase:
real    0m2.512s
user    0m1.010s
sys 0m1.461s
>>>> time for stage 2:
real    1m32.695s
user    0m40.901s
sys 0m37.623s

ucc.sports(N=1192,M=81)

>>>> time for stage 1:
real    0m18.639s
user    0m7.179s
sys 0m7.196s
>>>> time for stage 2 analysis phase:
real    0m15.726s
user    0m6.550s
sys 0m9.009s
>>>> time for stage 2 reupload phase:
real    1m10.613s
user    0m20.647s
sys 0m14.061s
>>>> time for stage 2 sedreplace phase:
real    0m1.777s
user    0m0.727s
sys 0m1.034s
>>>> time for stage 2:
real    1m28.410s
user    0m28.021s
sys 0m24.299s

ucc.ums-general(N=3190,M=95)

>>>> time for stage 1:
real    0m46.793s
user    0m18.700s
sys 0m18.251s
>>>> time for stage 2 analysis phase:
real    0m40.276s
user    0m16.657s
sys 0m22.902s
>>>> time for stage 2 reupload phase:
real    1m8.613s
user    0m24.517s
sys 0m16.028s
>>>> time for stage 2 sedreplace phase:
real    0m2.369s
user    0m0.947s
sys 0m1.326s
>>>> time for stage 2:
real    1m51.528s
user    0m42.216s
sys 0m40.431s

ucc.ums-pictures(N=1066,M=266)

>>>> time for stage 1:
real    0m15.732s
user    0m6.127s
sys 0m6.069s
>>>> time for stage 2 analysis phase:
real    0m21.324s
user    0m8.216s
sys 0m12.682s
>>>> time for stage 2 reupload phase:
real    2m38.321s
user    1m7.286s
sys 0m45.061s
>>>> time for stage 2 sedreplace phase:
real    0m5.464s
user    0m2.027s
sys 0m3.331s
>>>> time for stage 2:
real    3m5.341s
user    1m17.608s
sys 1m1.226s

ucc.untercast(N=6845,M=530)

>>>> time for stage 1:
real    1m48.483s
user    0m40.838s
sys 0m40.556s
>>>> time for stage 2 analysis phase:
real    1m48.122s
user    0m41.829s
sys 1m4.776s
>>>> time for stage 2 reupload phase:
real    7m49.343s
user    2m16.626s
sys 1m35.477s
>>>> time for stage 2 sedreplace phase:
real    0m15.732s
user    0m6.441s
sys 0m8.818s
>>>> time for stage 2:
real    9m53.504s
user    3m5.025s
sys 2m49.246s

ucc.server-invite-link(N=2,M=0)

>>>> time for stage 1:
real    0m0.641s
user    0m0.182s
sys 0m0.208s
>>>> time for stage 2 reupload phase:
real    0m0.106s
user    0m0.028s
sys 0m0.056s
>>>> time for stage 2 sedreplace phase:
real    0m0.012s
user    0m0.004s
sys 0m0.006s
>>>> time for stage 2:
real    0m0.324s
user    0m0.106s
sys 0m0.192s

ucc.anime-manga(N=15302,M=2867)

>>>> time for stage 1:
real    3m53.946s
user    1m30.287s
sys 1m31.074s
>>>> time for stage 2 analysis phase:
real    5m38.263s
user    1m56.936s
sys 3m35.981s
>>>> time for stage 2 reupload phase:
real    24m42.708s
user    12m0.428s
sys 7m48.289s
>>>> time for stage 2 sedreplace phase:
real    2m0.582s
user    0m52.916s
sys 1m6.151s
>>>> time for stage 2:
real    32m22.060s
user    14m50.442s
sys 12m30.715s

ucc.memes(N=5054,M=1186)

>>>> time for stage 1:
real    1m16.949s
user    0m29.395s
sys 0m31.031s
>>>> time for stage 2 analysis phase:
real    1m44.958s
user    0m39.258s
sys 1m4.518s
>>>> time for stage 2 reupload phase:
real    50m14.584s
user    4m41.889s
sys 3m12.321s
>>>> time for stage 2 sedreplace phase:
real    0m30.521s
user    0m12.461s
sys 0m17.750s
>>>> time for stage 2:
real    52m30.390s
user    5m33.754s
sys 4m34.770s

ucc.food(N=4161,M=433)

>>>> time for stage 1:
real    1m6.912s
user    0m25.735s
sys 0m25.955s
>>>> time for stage 2 analysis phase:
real    1m7.046s
user    0m25.823s
sys 0m40.645s
>>>> time for stage 2 reupload phase:
real    3m58.520s
user    1m54.117s
sys 1m18.193s
>>>> time for stage 2 sedreplace phase:
real    0m11.407s
user    0m4.454s
sys 0m6.843s
>>>> time for stage 2:
real    5m17.242s
user    2m24.494s
sys 2m5.848s

ucc.duckhunt(N=118065,M=70)

>>>> time for stage 1:
real    30m25.377s
user    12m42.342s
sys 12m4.405s
>>>> time for stage 2 analysis phase:
real    33m8.739s
user    10m41.799s
sys 22m4.306s
>>>> time for stage 2 reupload phase:
real    1m14.276s
user    0m20.465s
sys 0m11.595s
>>>> time for stage 2 sedreplace phase:
real    0m11.667s
user    0m5.498s
sys 0m5.977s
>>>> time for stage 2:
real    34m35.979s
user    11m8.231s
sys 22m22.559s

ucc.lego(N=334,M=48)

>>>> time for stage 1:
real    0m5.580s
user    0m2.334s
sys 0m1.999s
>>>> time for stage 2 analysis phase:
real    0m5.424s
user    0m2.339s
sys 0m3.005s
>>>> time for stage 2 reupload phase:
real    0m32.945s
user    0m12.547s
sys 0m7.392s
>>>> time for stage 2 sedreplace phase:
real    0m0.933s
user    0m0.386s
sys 0m0.538s
>>>> time for stage 2:
real    0m39.560s
user    0m15.371s
sys 0m11.090s

ucc.my-little-pony(N=1524,M=379)

>>>> time for stage 1:
real    0m22.741s
user    0m9.399s
sys 0m8.386s
>>>> time for stage 2 analysis phase:
real    0m29.876s
user    0m12.084s
sys 0m17.392s
>>>> time for stage 2 reupload phase:
real    4m12.570s
user    1m36.639s
sys 0m59.956s
>>>> time for stage 2 sedreplace phase:
real    0m7.781s
user    0m3.143s
sys 0m4.565s
>>>> time for stage 2:
real    4m50.525s
user    1m51.987s
sys 1m22.078s

ucc.boxbot(N=3755,M=291)

>>>> time for stage 1:
real    0m59.068s
user    0m24.940s
sys 0m22.502s
>>>> time for stage 2 analysis phase:
real    0m55.921s
user    0m23.047s
sys 0m32.131s
>>>> time for stage 2 reupload phase:
real    3m29.539s
user    1m13.747s
sys 0m47.713s
>>>> time for stage 2 sedreplace phase:
real    0m7.230s
user    0m2.781s
sys 0m4.310s
>>>> time for stage 2:
real    4m33.102s
user    1m39.705s
sys 1m24.432s

ucc.ucc-news(N=907,M=40)

>>>> time for stage 1:
real    0m14.899s
user    0m5.605s
sys 0m5.452s
>>>> time for stage 2 analysis phase:
real    0m11.960s
user    0m5.109s
sys 0m6.550s
>>>> time for stage 2 reupload phase:
real    0m28.593s
user    0m10.179s
sys 0m6.545s
>>>> time for stage 2 sedreplace phase:
real    0m1.175s
user    0m0.410s
sys 0m0.728s
>>>> time for stage 2:
real    0m42.098s
user    0m15.825s
sys 0m14.060s

ucc.science(N=249,M=2)

>>>> time for stage 1:
real    0m4.172s
user    0m1.664s
sys 0m1.641s
>>>> time for stage 2 analysis phase:
real    0m3.094s
user    0m1.279s
sys 0m1.789s
>>>> time for stage 2 reupload phase:
real    0m3.610s
user    0m0.527s
sys 0m0.422s
>>>> time for stage 2 sedreplace phase:
real    0m0.140s
user    0m0.042s
sys 0m0.097s
>>>> time for stage 2:
real    0m7.111s
user    0m1.939s
sys 0m2.483s

ucc.newcomer-of-the-year(N=24,M=0)

>>>> time for stage 1:
real    0m0.900s
user    0m0.355s
sys 0m0.298s
>>>> time for stage 2 reupload phase:
real    0m0.079s
user    0m0.022s
sys 0m0.055s
>>>> time for stage 2 sedreplace phase:
real    0m0.011s
user    0m0.003s
sys 0m0.006s
>>>> time for stage 2:
real    0m0.305s
user    0m0.104s
sys 0m0.196s

可以去迫真拟合一下sedreplace的时间复杂度是不是O(NM),至于其他阶段,第一阶段只有O(N),第二阶段分析时也只有O(N),上传时只有O(M),由于线程数是常量无论除以线程数还是除以线程数的平方还是除以别的什么都无关紧要

II what next

等我在ucc上测试成功后,我打算拿它去测试church of pancakechi,然后看下有没有心情开示它的整个消息记录;好了,我现在可以去写hakushinsona或者打完borderlands3了

bruhbitte.20.04.16

草,我这几天突然写不动fanfic了🤔所以我在搞些别的玩意,比如完成了从discord的guild元数据中找到能拖的频道(检查一下是不是missing access即可)并生成备份频道脚本可以接受的参数sh文件的脚本(这名字真™长🤔

然后在频道备份脚本里加了个迫真profiler,可以迫真统计每个阶段所花的时间🤔这样我就可以去尝试一次性备份整个ucc了,尽管看起来并没有什么卵用🤔由于肯定需要向discord发送十万甚至九万个请求,我搞了台vultr的🐣跑🤔

话说回来我觉得kamoganger chat central已经是个巨型乐子了,但接下来我肯定要拿这个脚本dump下church of akechi,搞不好还可以找个地方开示dump,那才是最大的乐子🤔

jonobitte.20.04.12

jono chan今天突然表现出了大脑降级的症状,比如认为我在unterganger频道里的迫真unterganger猫讨论(其实我还是在花式乳ucc,比如贵频道实在是太™水了,一只猫都能做5个视频获得unterganger role)是冻鳗相关,让我转移到anime频道去;我在解释我只是在讨论VHQ家的猫,结果这个憨批直接开始对我入狱威胁了,草(中日双语)的1b🤔🤣

所以我就在anime频道迫真讨论VHQ的猫,来讽刺jono的大脑降级行为😂我不清楚我这算不算钓鱼,但如果一个喵酱都能触发jono的冻鳗PTSD症状并使其大脑降级的话,我觉得jono的冻鳗PTSD已经到晚期了🤔此人乐子已经变得无限大了🤔难怪前段时间raymond chan会突然拿他取乐🤔搞不好我们可以找个他不是管理的聊天室来乐他🤔

ps. 开示jono chan的暴论(给我自己和VHQ迫真打码,反正恁已经上unterganger hall of arseholes了,就不用在意本野爹再挂恁几条笑话了

{"jono jokes location": "unterganger channel", "jokes": [
{"id": "698883720769306654", "type": 0, "content": "<@!XXXXXXXXXXXXXXXXXX> <@!XXXXXXXXXXXXXXXXXX> take your weeby shit to <#538811593111371797>", "channel_id": "406930921007087616", "author": {"id": "223865652463534091", "username": "Jono(JSalty254)(CTzen)", "avatar": "6967c71ceccc1184bc518cef2bd638f9", "discriminator": "8331", "public_flags": 0}, "attachments": [], "embeds": [], "mentions": [{"id": "XXXXXXXXXXXXXXXXXX", "username": "Dark Slash X", "avatar": "203365e0c282b76b2e1096b4ce46db31", "discriminator": "XXXX", "public_flags": 64}, {"id": "XXXXXXXXXXXXXXXXXX", "username": "ddOs", "avatar": "a_ddacbc7c5af5bbda7640bd2ff835582b", "discriminator": "XXXX", "public_flags": 0}], "mention_roles": [], "pinned": false, "mention_everyone": false, "tts": false, "timestamp": "2020-04-12T13:14:23.663000+00:00", "edited_timestamp": null, "flags": 0},
{"id": "698883798418587668", "type": 0, "content": "Especially you ddOs", "channel_id": "406930921007087616", "author": {"id": "223865652463534091", "username": "Jono(JSalty254)(CTzen)", "avatar": "6967c71ceccc1184bc518cef2bd638f9", "discriminator": "8331", "public_flags": 0}, "attachments": [], "embeds": [], "mentions": [], "mention_roles": [], "pinned": false, "mention_everyone": false, "tts": false, "timestamp": "2020-04-12T13:14:42.176000+00:00", "edited_timestamp": null, "flags": 0},
{"id": "XXXXXXXXXXXXXXXXXX", "type": 0, "content": "weebitte? it's only his cat max", "channel_id": "406930921007087616", "author": {"id": "XXXXXXXXXXXXXXXXXX", "username": "ddOs", "avatar": "a_ddacbc7c5af5bbda7640bd2ff835582b", "discriminator": "XXXX", "public_flags": 0}, "attachments": [], "embeds": [], "mentions": [], "mention_roles": [], "pinned": false, "mention_everyone": false, "tts": false, "timestamp": "2020-04-12T13:15:02.756000+00:00", "edited_timestamp": null, "flags": 0},
{"id": "698889801113272331", "type": 0, "content": "ddOs, you're already on thin ice", "channel_id": "406930921007087616", "author": {"id": "223865652463534091", "username": "Jono(JSalty254)(CTzen)", "avatar": "6967c71ceccc1184bc518cef2bd638f9", "discriminator": "8331", "public_flags": 0}, "attachments": [], "embeds": [], "mentions": [], "mention_roles": [], "pinned": false, "mention_everyone": false, "tts": false, "timestamp": "2020-04-12T13:38:33.330000+00:00", "edited_timestamp": null, "flags": 0}]}

bruh