轻小说机翻站体验改善脚本
为什么要写这个脚本
轻小说机翻站非常方便,但是稍微还有点不够方便,而且还存在一些一直没有修复的bug。
为了解决这些问题,花了一点时间写了这个userscript。作者的水平也是不上不下卡在这里了,因为不愿意研究网站代码提issue,才作此权衡之计。
功能一览
脚本的功能基本都放在OnMutate()
这个函数里面了,一目了然。
ReplaceBrElement()
和 InsertStyleSheet(css)
实现了网络小说阅读界面双栏显示,效果如下图所示:
然而因为偷懒并没有检测当前阅读模式是中日混合还是纯日文,所以如果没有中文翻译时依然会是双栏显示。
AdvancedSearch()
搜索网络小说的时候,要查看某个条目的pt数、浏览人数、字数、简介等信息,就必须要点进小说条目。
这在大量扫描式搜索小说的时候,相当浪费时间,因为不能并行加载小说详细信息。
因此这个函数会在搜索页面的每个条目底下加一个「显示详情」的按钮,点击后即可在搜索页面展示小说详细信息,效果如下:
这样只需要依次点一遍显示详情的按钮,稍微等一段时间以后就可以一次性浏览整一页小说的详细信息了,相当地方便。
AddWenkuCheckerButton()
没什么用的功能,会在文库小说页面添加一个样式有问题的「检查未翻译条目」按钮,点击以后会将所有不存在GPT或Sakura翻译的当前分级文库小说加入Sakura工作区,可能耗费很长时间(需要彻底遍历),可以打开F12的网络栏查看进度。
AddJobQueuer()
我不好说拼写是不是没问题。
对于某个有几百章节的网络小说,想要尽快地从头开始翻译,应该怎么做?
在「均分X个任务」的输入框里填入最大值10,然后交给多线程翻译器吗?
如果这样做,剩下的9个任务只是分别从相对没那么远的地方、两倍没那么远的地方……处开始翻译,远水解不了近渴。
实际上我们会希望10个翻译任务分别翻译1、2、3,直到10话,这样才算是真正意义上的10倍速。
也就是说,要实现最快最紧凑的翻译,必须将所有章节分为一个个孤立的任务,每个任务只含有一个章节,而目前的网站禁止了这种操作。
于是这个脚本就是为了解决这个问题设计的,点击以后,会自动获取还没有Sakura翻译的章节,将之一个个添加至Sakura工作区。
ExtendWorkerItem()
RunStalledWorker()
RetryFailedTasks()
RemoveFinishedTasks()
Sakura工作区四件套,是这个脚本最为重要的功能(对我来说):
- 让Sakura工作区的翻译器,即使因为各种原因出现错误,也不会就此停止翻译,而是立即重新启动。
- 让Sakura工作区的任务,即使因为各种原因失败,也不会离开任务队列,而是立刻重新排队,并且回到队头。
- 让Sakura工作区的任务,在实际上已经完成的时候,自动离开任务队列,避免翻译器卡在几个已完成的任务上。
当然实际上bug也是多多,看情况修吧。