toyobayashi / mishiro

CGSS desktop application
MIT License
159 stars 16 forks source link

关于自定义下载功能BUG说明和短期优化方案的建议 #16

Closed jpysina closed 5 years ago

jpysina commented 5 years ago

最近抓紧在学U3D,试图建模中。想到以前玩了CGSS的U3D模型,想弄个上去,最终想要实现的效果类似于如下的链接视频:

https://www.bilibili.com/video/av40528658

那么,利用mishiro来下载,是妥当的。然而CGSS开服到现在,究竟出了多少模型,这谁也不知道。但唯一可以清楚的是:所有的3D模,都是基于unity3D实现的。只要获取相应的资源包,就能进行应用处理。

依据去年9月的历史issue #8 (图),可以得出以下的结论: image 1.用mishiro做searcher和Downloader的方案是可行的; 2.搜索关键词是unity3d,以集中下载*.unity3d资源包,最后在unity中进行解包重构; 3.找个虚拟机下一个完整游戏数据库,用DB Browser for SQLite建立数据库结构,用mishiro按需下载。

在按照结论执行后,我发现了几个关键的bug使得我无法进行批量下载。在这里要说明一下: 首先,上图: 按照我的想法,大致操作是这样的:

111 你可以发现unity资源有6429页,进行下载的时候每次只能下载一页。全选的按钮只能控制当前页面。如果我要全部打包下载的话得一页一页翻过去。。。。。。。显然有些不现实。

============================================================= 就这一点,包括自定义搜索下载,请允许我提出一些建议,看看是否可以后续版本中慢慢考虑实现:

1.设置批量下载的功能,允许下载全部的自定义搜索结果文件;(不用一页一页的下,写个for循环?这个我比较急着用,应该好实现,增加一个“全部下载”按钮?) 2.设置全部数据的下载功能,完整数据直接全部下载到本地后,使用增量更新。由用户自行决定需要提取的数据。 (现在下载是:用户提出需求->mishiro去搜索、解包后呈现->用户确认下载->下载到本地) (建议是,增加一个新的下载策略,可供用户选择: i.经用户同意后,mishiro先无条件在后台下载当前完整数据包 ii.用户通过系统资源管理器浏览或提取他想要的东西,同时,mishiro也优先从本地解密资源 iii.mishiro默认工作模式还是现行的状态(在线浏览+本地缓存优先) iv.配合使用更新检测机制(数据包版本号校验)、增量更新机制 (这些配置要不要考虑做成一个config.json保存在本地?)

3.下载是否可以调取Aria2C操作?基于electron的实现方案请点击 4.翻页键做个按钮呗(下图红色标记处),还有......上一页拼错了应为 Previous (要不要考虑实现响应鼠标滚轮的翻页模式?)

image

大佬可否看看再考虑一下,对自定义下载的批量功能做个优化?

toyobayashi commented 5 years ago

@jpysina 一开始做的时候也没想到真的会有人拿这个当下载器用,也有考虑过做成批量下载全部,但是这样做其实是有风险的,一次性全部下载的话我怕被他们发现然后封掉,mishiro内部使用的账号也可能被封掉,之前不知道因为什么原因就被封过一次,影响所有用户的使用,所以我不敢这么弄。当初做这个东西我也就做出来玩玩提取音乐用,顺带应付了一下毕业设计

我记得 mishiro 的前身很久以前做的 CGSSAssetsDownloader 是可以全部下载 u3d 的,也许你可以用那个试一试

toyobayashi commented 5 years ago

封杀mishiro很简单,服务器通信加密实现改变一下或者给sqlite加密,mishiro几乎所有的功能都将瘫痪,之前封一下号都折腾了我很久才修好,主要还是我太菜。你想要这个功能的话,我建议你fork一下自己写,然后把内部使用的账号换掉,不需要编译出一个完整包来,npm run build完npm start就可以用

toyobayashi commented 5 years ago

至于3和4,
第3点想问一下为什么建议用aria2c呢?
第4点后面会改的

jpysina commented 5 years ago

这倒也是,如果功能做的太全面,反而是树大招风,容易挂掉,为了“可持续发展”或许现在的状态可能会更好?//aria2c主要是想把网络带宽都用完,感觉mishiro下载数据的更新速度有的时候还是太慢。 *我会去试试CGSSAssetsDownloader 的,这方面我也不算特别懂,有问题会私信哈

jpysina commented 5 years ago

对了,CGSSAssetsDownloader好像不能批量下载,貌似没有通配符功能...... CD就是exe,我缩写了 image 执行-u 的话只会下mainfast.db这个数据库,其他都不下载,-o -u的话会报错

toyobayashi commented 5 years ago

@jpysina

感谢建议,以后有时间的话这一块我会考虑用某种方式完善一下。

下载的话,确实有的时候快有的时候慢,停了重新下载断点续传速度又正常了,这个估计是梯子问题,我上游戏有时候也是没下载速度的。

如果用 aria2c 的话就要连不同平台的 aria2c 的可执行文件一起发布,而且下载会变得不那么的可控,编译成 node 原生模块学习成本和工程成本也会比较大,暂时先不考虑。

之前的几个提交中我改了一下内部下载功能所使用的包,把 request 换成了 got,而且是用 electron 内置的 net 模块发请求,感觉上是有所好转的

toyobayashi commented 5 years ago

那个说明我写错了,用 2.0.0 吧

jpysina commented 5 years ago

1.我好像没有找到批量下载的readme 2.我觉得调用第三方下载工具应该是optional的,自己造轮子毕竟很难,那么走可扩展的路线:要不要考虑在后期给个api接口,让那些超级大佬自行选择?我们只提供link的功能和基本的Downloader?

toyobayashi commented 5 years ago
  1. 不好意思啊我看了下代码,原来是有批量下载所有 u3d 的,后面我把这个功能给砍了,还是因为这个量太大了容易被万代搞

  2. 这样没多大意义其实,大佬完全可以不用mishiro,把sqlite里的u3d数据导出来,写个脚本随便用curl wget啥的批量下载更省事

jpysina commented 5 years ago

emmmm小心驶得万年船。我也自己研究研究,Downloader这个东西放出来确实影响不好哈哈哈。革命尚未成功,同志仍需努力.......

jpysina commented 5 years ago

不过隔壁崩崩崩有人专门解包的,还b站上放教程,实在是nb

toyobayashi commented 5 years ago

突然有想法做个2.0版本,把这个批量下载的功能用某种委婉的方式加上,还有自动生成账号的功能(这个有代码但是没敢实装,因为当时测试时直接就无法访问他们服务器了,有点怕),把gacha模拟那些没啥用的功能砍掉,再做一些性能优化,现在的mishiro吃内存太厉害了,我自己用着都膈应。。。