点击
搜索 / Search

最近光折腾小问题了。有关 Windows 10 ver 1607 的集中 bug 和 fix 方案可在这里找到:关于智障的 build 14393 一些 feature 的可能修复方案。这篇文章要描述的是另外一个困扰我两个月的问题。

毕竟四月番我主推了两大女性角色:一个芙蕾雅一个爱蜜丽娅。收集同人图也就成为工作重点。这几年基本没有非常好的此类工具供使用,要不自己写爬虫,或者去网站一张一张下。多年以前有这么一个软件,也是今天的主角——Moe Loader,这软件可以胜任几乎所有的收图工作,而且支持的图站也多。我日常还是扫 Pixiv 的,但是某一天突然去网站上下图,发现了一件非常尴尬的事情:Moe Loader 下载的并不是原图。这个就蛋疼了,对于强迫症患者来说这不能忍,所以我就开始搜索解决之道,但是似乎没人有办法……难道除了靠作者之外就没有别的办法了吗?有,自己写一个工具。不过对我来说这是不可能的辣,于是再次搜索,才发现 Moe Loader 已经开源了,所以干脆读读源代码,看能不能修正一下吧。

说明一下 fix 方案的配置环境:

OS:Windows 10 RS1 build 14393.51

编译: Visual Studio 2015 Community Update 3

Moe loader 版本:7.0.3.3/4

导入项目什么的都不提,开始我以为不好找对应的代码,但没想到相应的解析模块是独立的,这样就好办了。站点配置在SitePack/SitePixiv.cs里面,重要的代码块是从 252 行开始:

//URLS
//http://i2.pixiv.net/c/600x600/img-master/img/2014/10/08/06/13/30/46422743_p0_master1200.jpg
//http://i2.pixiv.net/img-original/img/2014/10/08/06/13/30/46422743_p0.png
i.SampleUrl = doc.DocumentNode.SelectSingleNode("//div[@class='works_display']").SelectSingleNode(".//img").Attributes["src"].Value;
i.OriginalUrl = i.SampleUrl.Replace("600x600", "1200x1200");
i.JpegUrl = i.OriginalUrl;

255 行是获取缩略图,256 行是获取原图。我们再去看看 p 站的网页结构,以 Pixiv ID 58393802 为例:
缩略图的部分:

<div class="works_display">
    <div class="_layout-thumbnail ui-modal-trigger">
        <img src="http://i3.pixiv.net/c/600x600/img-master/img/2016/08/12/00/01/17/58393802_p0_master1200.jpg" alt="爱蜜莉雅">
    </div>
</div>

原图:

<div class="_illust_modal ui-modal-close-box" style="z-index: 10001; display: block;">
    <div class="wrapper">
        <span class="close ui-modal-close">
            <i class="_icon-12 size-2x _icon-close"></i>
        </span>
        <img alt="爱蜜莉雅" data-src="http://i3.pixiv.net/img-original/img/2016/08/12/00/01/17/58393802_p0.jpg" class="original-image" src="http://i3.pixiv.net/img-original/img/2016/08/12/00/01/17/58393802_p0.jpg" height="2715" width="1920">
    </div>
</div>

原先的代码是抓到缩略图地址之后处理传给OriginalUrl,但是这样得到的地址依旧不是原图的。所以干脆直接处理原图地址算了:

i.OriginalUrl = doc.DocumentNode.SelectSingleNode("//div[@class='_illust_modal _hidden ui-modal-close-box']").SelectSingleNode(".//img").Attributes["data-src"].Value;

重新生成 dll,然后替换,测试:

2016-08-14_180614

这个大小就对了,因为懒我就不再贴文件属性验证结果,各位可以自行回去测试。

文件下载:SitePack.dll Sha-1:FDF1CFA3B54CC4FC105FE75911BE9AFEBBACD3BA

备份并替换文件夹里的同名文件即可。然后你就可以省去到网站上找原图的工夫了。

需要注意的是,目前只修复了单张图片的原图下载,对一次投稿多张(manga 类别)的作品还无法正确解析。之后有机会我再继续修改。另外请注意不要滥用

这是在 GitHub 上的项目地址:https://github.com/ershiwo/moe-loader/,欢迎 PR。

Update:目前已经解决漫画模式下的解析问题了,dll 这就更新。我之前绕远了。

声明: 本站所有图文遵循 署名-非商业性使用-相同方式共享 3.0 共享 协议.
转载请注明转自 ershiwo的私人研究所
标签:

Related Posts

7 Comments

  1. kurisu

    请问放了SitePack.dll后显示信息加载失败怎么解?
    http://image.prntscr.com/image/9380e250038449eca1765d62c411a4b3.jpeg

    2016.09.05 at 05:08
    #1  
    • 信息加载失败就是漫画类别图片没有正确解析。gayhub 上的代码有修正,可以获取漫画类的第一张图,如果晚上我还记得的话再重新生成一份 dll。

      2016.09.05 at 07:41
      #11
      • Hany

        喂喂喂 吓人了啊 gayhub什么鬼 你吓坏我了 :em07:

        2017.03.08 at 21:21
        #12
        • gayhub 就是 gayhub,好孩子不要点错就好了。

          2017.03.08 at 23:38
          #13
  2. 夜咲七海

    我想问一下, 最近几天遇到这情况
    不知道你有没有解决的方法,不然好工具要埋没了 ... Orz
    http://imgur.com/a/fBzD7

    2016.10.25 at 23:06
    #2  
    • 你是从 GitHub 拉下来的源码包自己编译的吗?最近考试比较多,周末我再看看。

      2016.10.25 at 23:12
      #21
      • 夜咲七海

        我是用原始版本(7.0.3.3),没有改过。
        好的 辛苦了 QWQ

        2016.10.25 at 23:17
        #22