在排除类型里增加了“排除已收藏作品”的功能
0 在内页处理 √
1 在内页处理 √
2 列表页-列表页1 √
3 tag页-列表页1 √
4 收藏页-列表页1 √
5 tag搜索页-列表页2 √
6 地区排行榜-列表页3 √
7 其他排行榜-列表页4 √
8 pixivision-不处理 √
9 bookmark_add-在内页处理 √
10 大家的新作品-列表页1 √
11 发现-不处理 √
12 showcase 特辑-不处理 √
13 响应关联作品-不处理 √
- “关注的新作品”(/bookmark_new_illust.php)改版了,列表页规则和tag搜索页一样了。
tag搜索页的模式目前有3个页面在使用:
- tag搜索页
- 发现 discovery
- 关注的新作品
-
“为你推荐”(/recommended.php)合并到发现(/discovery)功能了,但是代码里仍然先保存相关内容。
-
另外tag搜索页新版刚出的时候是新旧版混合,代码里也对此作了判断。现在看来应该全部换成新版,没有旧版了。但是代码也先保留吧。
chrome浏览器进行下载时,会把图片的blob对象在当前标签页打开,不清楚具体原因。给用于下载的a标签添加了 target="_blank"属性解决了。之前没有target属性也可以直接下载的,现在挺奇怪。
增加了multiple_down_number参数,可以设置多图作品只下载前几张。默认未限制。
修改后需要刷新页面才会生效,不需要使用时可以改回0。
有时候这是很有用的,有很多的多图作品,只有第一张图是彩色的,后面的图都是黑白的。把multiple_down_number设置为1就可以只下载第一张彩图了。
另外,最近我发现地区排行榜(/ranking_area.php)已经不在首页出现了。
一个已知的问题:
在每日排行榜,有可能出现最后一张图没抓取完的时候,就提示抓取。这个问题不会影响实际下载的文件数量。
增加对pixiv特辑(showcase)的适配;
bug修复。
其他情况:
pixivision在首页原来有4个插画特辑,现在被pixiv自己的特辑(showcase)取代了。在首页只剩下两个推荐特辑的位置,这种类型(推荐)没有做适配。
pixiv特辑(showcase)有插画和漫画等分类,本工具只下载插画。漫画的话可以点击进入插画页自行下载。
此外,pixiv特辑滚动到底部时,会加载相似的其他特辑,页面url也会发生改变。本工具下载时会下载当前查看的特辑。
修正的问题:
1.大家的新作品里,有按类型分类的页面,之前都是按“综合”处理的,现在可以正确按当前类型获取了。
2.之前无法正常下载关注的新作品的r18分类,现在已经修复。
原本想给排行榜增加手动删除按钮,但是做了之后又去掉了。因为排行榜是分多个部分的,所以获取的时候要通过ajax抓取,在页面上删除没有意义。
修复了在tag搜索页里,搜索中断之后,下载时图片网址可能数量异常的问题。
-
tag搜索页的快速搜索功能可以保持当前搜索模式(全部/普通/R-18)和排序模式
-
优化下载排行榜作品的代码
-
适应pixivision改版
-
增加了对“响应关联作品”的适配
ps0:pixivision改版后,插画页面的头图不是单独的图片了,所以不用单独获取了。
ps1:响应关联作品大部分都比较少,我还没看到超过一页的。目前按作品列表页进行处理,默认下载所有页面。如果有发现分页的话可以告诉我。
ps2:其他排行榜里获取页面时,之前的代码是通过分析dom获得作品数据的。最近发现可以直接获取到json数据了,但是缺少扩展名信息。所以现在只是从json里取得作品页url,其他信息仍然去抓取作品页。
[json示例]https://www.pixiv.net/ranking.php?mode=monthly&content=illust&p=1&format=json
普通的有7种排行榜
-
(受男性欢迎:10页)[https://www.pixiv.net/ranking.php?mode=male]
-
(受女性欢迎:10页)[https://www.pixiv.net/ranking.php?mode=female]
R-18有4种排行榜
-
(今日r18:2页)[https://www.pixiv.net/ranking.php?mode=daily_r18]
-
(本周r18:2页)[https://www.pixiv.net/ranking.php?mode=weekly_r18]
-
(受男性欢迎r18:6页)[https://www.pixiv.net/ranking.php?mode=male_r18]
-
(受女性欢迎r18:6页)[https://www.pixiv.net/ranking.php?mode=female_r18]
R-18G只有一种排行榜
- (r18g:1页)[https://www.pixiv.net/ranking.php?mode=r18g]
bug修复和代码优化。
ps1:模板字符串虽然好用,但如果原来的语句里的运算步骤复杂的话,这部分还是用加号拼接比较好。用模板字符串层层嵌套,连在一起之后使代码变得很难读。而且编辑器对于模板字符串里面代码的着色也很差。
ps2:箭头函数也建议只对简单函数使用。如果要处理动态this和使用arguments的话,要使用传统函数。
在4.5.5版本里,原本下载链接没加target="_blank",下载时却会打开新页面,后来加上之后反倒不打开了。然而现在chrome更新到65之后,加了target="_blank"的开始出现新页面了,我只好再去掉。很奇怪。
- tag搜索页下载时按照收藏数从高到低下载。
tag搜索页有时图片太多,比如筛选某个tag,条件是最低收藏数3000,有两千来张。下载花了很久,下载的时候我就想,早知道就只下载4000以上的了,低于4000的就不要了。但是由于之前的下载顺序是从低到高,3000 → 4000 → 5000…… 后悔的时候已经晚了。
现在改成了从高到低下载,10000 → 9000 → 8000…… 这样,当你感觉“到这里已经够了”的时候,就可以立即停止下载了。那些收藏数低的不想要就不要了。
2018/4/12,最近有不少人遇到有漏下的情况,但是以前一直没这个问题。而且tampermonkey里确实是每个图片都下载到了,下载请求也发送到chrome了,但是漏下的这些任务失败了,并且没有显示在Chrome的下载列表里。最可能的原因是在短时间内点击了多次下载按钮,导致发送了多次下载请求。但是以前一直没问题,推测可能是chrome新版有什么改动导致的问题。
目前有两个思路解决这个漏下的问题,方法1是把并发下载线程 download_thread_deauflt 改成1,单线程下载,不会漏下。方法2是保证每两次点击下载按钮之间有足够的时间间隔,这样既可以多线程下载,也不会漏下。目前采用第二种方法。
1.任务流程改为在title上提醒,不再使用弹窗。(但可设置use_alert参数继续使用弹窗)
提示字符的含义:
0 复原
↑ 抓取中
→ 等待下一步操作(tag搜索页)
▶ 准备下载
↓ 下载中
║ 下载暂停
■ 下载停止
√ 下载完毕
2.可以保存用户的命名规则。
3.修复pixivision上cosplay图片的下载
4.GM_xmlhttpRequest可以把responseType设置为blob了,不用再手动转换为blob了。这应该会提升运行效率……
另外,极少数情况下,下载面板上的总数量会漏掉一个作品的图片数量,导致已下载数量超过总数量,如295/265。这里只是显示问题,以已下载数量为准。目前对此问题还没有什么头绪。
2018年4月份开始,p站陆续对作品页进行改版。不仅页面结构全变了,而且作品也内也不使用jQuery了。
此版本先修复在作品页外下载的问题。
在作品页内下载还不行,先在 _无权访问1 里添加提示。下个版本再修改。
另外,新版直接显示收藏数了,等以后统一是新版了,可以更新到命名规则里。
后续还要添加下载相关作品的功能。
更改了获取语言设置的方法。
在作品引入了jQuery,并修复了作品页的下载功能。
在作品页修改了css样式,以保持统一。
新增功能:
- 支持下载相关作品(作品页下方的相关作品)
相关作品里出现的作品其实和添加收藏后的相似作品是一致的。但是相关作品有个自己的api,如:
https://www.pixiv.net/ajax/illust/68375792/recommend/init?limit=180
这个api最大可以返回180个作品,但相似作品的上限要大得多。所以下载相关作品时,借用相似作品的下载流程。
bug修复:
-
p站改版后,作品页面切换作品不刷新了。这可能会导致下载到的始终是第一页,对此问题进行了修复。
-
解决漏下illustType为1的作品的bug。
优化修改:
- 使用了新版作品页用于获取作品信息的api,如:
https://www.pixiv.net/ajax/illust/67050051
注意最后不能带斜杠。这个api老版也能用,所以 getIllustPage() 里不需要区分新旧版了,直接都改成用新版的。
但新的api有个问题,就是可能无法获取到作者名字。userName只能从tag信息里获取,如果一个作品没有tag,那就获取不到作者名字了。发生这种情况时,把作者名字留空。
-
从新的api里可以直接获取多p作品的原图url,并且后缀名是正确的。这样就省下了一次页面抓取,加快了多p作品的抓取速度。
-
优化了命名规则。
-
修改了处理404的代码。之前获取作品页的时候获取的是html页面,404了也可以进入success处理。现在改为获取json数据了,404不进入success了,要在外面statusCode里处理。
新增功能:
-
在 showcase 特辑里面也可以使用全部的命名方式了。
-
命名规则里都可以使用{bmk}了。(之前只有在tag搜索页可以用)
-
添加了筛选收藏数的按钮。(大于等于指定收藏数的作品才会被下载)
其他
- 获取动图信息有新的api,在作品信息api后面加上/ugoira_meta,如:
https://www.pixiv.net/ajax/illust/68437318/ugoira_meta
这里面包含原文件(zip)的url和帧率信息。
- pixivision 预计以后不再维护。
首先它和pixiv主站是跨域的,使得同步下载流程比较麻烦。(比如我计划在 pixivision 里也去获取作品信息api,这样在 pixivision 里下载时,可以使用更多的命名规则了。但是jQuery的ajax无法设置跨域,用GM_xmlhttpRequest的话改动成本又太高)。
其次pixivision上面的很多板块都已经停止更新了,插画没有停止更新,但是插画是和 showcase 特辑同步的,所以从 showcase 特辑下载就行了。
原本tag搜索页的快速搜索功能, 最大只到10000users入り。但是这个tag从其本意来讲,是10000-20000,这样,更高收藏数的作品就筛选不出来了。所以现在增加了20000/30000/50000的选项。
tag搜索页和大家关注的新作品都有一次改版,改版前是源码里包含着列表的DOM元素,改版后是把作品信息改成json方式保存到源码里了。因为p站的改版一直是新旧版共存过渡,所以当时有个tag_search_is_new参数来区别新旧版。但是到现在应该所有人都改成新版了。tag搜索页可以把tag_search_is_new去掉,但是page_type === 10里面还要留着。因为10里面的大家的新作品是旧版,关注的人的新作品是新版,这俩还得区分。现在先把tag搜索页的旧代码去掉了,并把tag_search_is_new改成list_is_new。
p站自己用的jQuery地址为: https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js
之前我担心有些人用改dns的方法上p站的话,可能打不开google的网址,所以用了下面的网址: https://code.jquery.com/jquery-2.0.3.min.js
但是有人打不开这个。怀疑是少数。如果人再有人打不开jquery官网的这个,就改成p站自己的网址吧。
前些版本我更改了命名规则,现在有人想用原来的格式,增加了 use_original_name 参数来控制该选项。
屏蔽了新版的一些广告
但是此功能目前有个小瑕疵,如果点了快速收藏,之后向前/后切换一张作品,再切换回来,回来之后会看到又变成没有收藏时的状态了。这是因为页面没有刷新,不要介意。只要快速收藏时显示了收藏成功就没问题。
同时还有其他问题要注意:
-
免费用户每个作品只能添加 10 个 tag,如果作品的 tag 数量超过10个,那么多出来的就不会被保存。
-
收藏时添加的 tag 貌似有 20 个字符的最大长度限制,如添加“バーチャルYouTuber5000users入り”会被截断成为“バーチャルYouTuber5000use”,即使是手动添加也会被截断。
https://www.pixiv.net/rpc/index.php
以 post 方式发送一些参数(并且需要发送 cookie),示例:
mode: save_illust_bookmark
illust_id: 68201395
restrict: 0
comment:
tags: Fate/GrandOrder セイバー・ブライド
tt: 489520361bf22a5bb897306b3d9cdc1b
参数说明:
mode: save_illust_bookmark 此项固定
illust_id: 68201395 id 按需要修改
restrict: 0 此项固定
comment: 保持留空即可
tag:格式为 encodeURI 编码后的字符,如果要添加多个tag,不同tag之间用空格分开(%20)。
tt:可以从 pixiv 页面上的全局变量获取:globalInitData.token
另外,删除收藏用的不是这个 api,而且使用的 id 也不是作品 id,而是该书签的 bookmark_id。
有普通看图和全屏看图模式。查看效果(新浪微博
- 使用了 Viewer.js 库,感谢原作者~
Viewer.js 本来需要引入两个文件,js 文件和 css 文件,为了方便调用,我将两个文件混合后上传到了 greasyfork 上。url 为:
https://greasyfork.org/scripts/369647-viewer-js-mix/code/Viewerjs%20mix.js
- 注意:
有些时候 greasyfork.org 也会被墙,如果打不开上面的 js,那么自然也就无法使用看图模式了。
- 优化了 Viewer.js 的看图体验。
比如要看图片的100%比例大小的时候,原本一直有查看器的元素挡在图片上,看着不舒服。播放幻灯片的话可以进入全屏模式,会隐藏这些元素,但是图片比例不是100%了。现在我结合了一下,点击 1:1 按钮时会进入全屏状态查看,比例是100%。(必须要点击这个按钮,因为进入全屏需要用户手动操作触发)
原本的全屏状态里(播放幻灯片时),用户不能切换图片,现在全屏状态下也可以切换图片了,并且图片都是保持100%比例打开的。但是有个瑕疵,可能因为 Viewer.js 本来没有设计这个功能,导致图片放大时位置会变化,看上去产生了抖动。
- 注意:
不要用左右方向键 ← → 来切换图片,因为这样会导致 pixiv 也响应了左右方向键,从而切换了作品。还是用鼠标来切换图片吧。
你在p站切换作品时,推荐使用左右方向键 ← →。如果用浏览器的前进后退按钮来操作,那么切换到的这个页面不会触发快速收藏和看图模式。
- pixiv 上缩略图的 url 开头是这样的,
https://i.pximg.net/c/240x240/img-master/img/
,例如:
https://i.pximg.net/c/240x240/img-master/img/2018/06/17/00/10/40/69264102_p4_master1200.jpg
这样加载就会很快了,如果加载大图的话,速度就太慢了。
缩略图始终都是 jpg 格式,原图则有 jpg、png 两种格式。(还会有 zip 的)
优化了看图体验。
原本在全屏模式(100%比例)中看图时,如果图片是之前尚未加载的图片,那么加载后显示的比例不是100%。现在手动给它设置一次宽高,成为100%。
最近发现画师页面和作品页面的网址都可以使用缩写,如:
https://www.pixiv.net/member.php?id=212801
缩写为:
https://www.pixiv.net/u/212801
https://www.pixiv.net/member_illust.php?mode=medium&illust_id=66509867
缩写为:
https://www.pixiv.net/i/66509867
-
可以在下载前预览图片的名字;
-
恢复了单图原来的命名规则,即加上 _p0。
预览图片名的结果如下:
69052408_p0.png: bmk_8262-69052408_p0-tags_電撃文庫,ガーリー・エアフォース,おへそ,グリペン,ピンク髪ロング,5000users入り.png
每个名字前面加了这个图片默认的名字,如 69052408_p0.png。默认名字和实际名字中间用 :
分割。
这样,如果用户使用迅雷、IDM 之类软件下载图片,下载后的图片只有默认名字,再拷贝本工具的命名,就可以编写脚本,把图片的默认名字修改为本工具的名字。
以 cmd 为例,可以把上面的名字修改为 cmd 命令来执行:
ren 69052408_p0.png "bmk_8262-69052408_p0-tags_電撃文庫,ガーリー・エアフォース,おへそ,グリペン,ピンク髪ロング,5000users入り.png"
借助文本编辑器,用户可以批量的把本工具生成的图片名修改为 shell 命令。
p 站自己的收藏按钮添加了快速收藏功能,但是不带 tag,和我自己按钮的快速收藏功能冲突,现在我把原本的收藏按钮隐藏了,全部使用脚本的快速收藏。
另外根据 thelastfantasy 的建议,把动图从 zip 后缀名改为了 ugoira 后缀名,请用 HoneyView 打开查看。
- pixiv 的改版
p 站在完成了作品页的改版后,又要进行新改版: pixiv的个人资料页面将全新改版。
受此影响的页面有:
画师(或自己)的主页、插画分类列表、漫画分类列表、收藏页面,以及上述页面里的 tag 列表页。
旧版的个人主页里有“动图”作品的列表页(第一行),新版里面已经没有这个分类了,这个 url 会跳转到插画作品列表页:
https://www.pixiv.net/member_illust.php?id=4693961&type=ugoira
https://www.pixiv.net/member_illust.php?id=4693961&type=illust
pixiv 的新版都不再使用 jQuery 了。
从个人资料页面进入插画页,是无刷新的(pushState),无刷新的地方越来越多了,体验好一些,不过下载工具需要修改更多地方。
- 本工具的修改
之前的 page_type:
2: 画师列表页(插画、漫画)
3:画师的 tag 列表页 和 收藏的 tag 列表页;
4:收藏页面。
新版里这 3 种都改了。而且使用的无刷新加载技术,需要动态监控 url,对应改变 page_type。
现在 page_type 2/3/4 全部整合到了 2 里。
本工具以新版为准,旧版功能可以用新版实现的,就按新版处理。
- 其他修改:
- 本来,进入自己的收藏页面时,没带自己的 id(第一行):
https://www.pixiv.net/bookmark.php
https://www.pixiv.net/bookmark.php?id=9460149
不带 id 的话,还是旧版的界面,带了 id 才是新版的。所以这里添加了个修改,如果不带 id 自动跳转到带 id 的。
- 无刷新加载对 page_type 1 和 2 的影响
从新版个人资料页可以无刷新进入作品页,这种情况下,作品页也可以通过浏览器的后退功能,无刷新返回个人资料页。这就造成了两种页面类型可以无刷新切换。(不过必须是先打开 2,然后进入1, 1才能通过返回按钮来无刷新回到 2。如果一开始打开的是 1,那么 1 无法不刷新进入 2)
为了能让脚本适根据 page_type 动态切换,对代码做了不少修改。
需要记住的是,无刷新切换时,两种类型共用一个页面,所以绑定全局事件时需要注意这一点,避免冲突或者重复绑定。
- 新版使用的 api 分析:
画师主页:
1 https://www.pixiv.net/ajax/user/27517/profile/all
这个 api 包含了该画师所有作品的 id。包含插画和漫画,但分别只有最近的 12 个作品有详细信息。因为个人主页只展示12个插画和12个漫画。
先在这里获取所有作品 id ,之后再获取作品详细信息。
画师的所有作品列表页 ,是把插画和漫画合在一起的列表页。api 不用变。
画师的插画列表页:(可以跟很多 ids)
https://www.pixiv.net/ajax/user/27517/illusts?ids%5B0%5D=66979373
这是 pixiv 加载插画列表里的作品用的,包含有作品详细信息,但不全面,比如没有画师名和收藏数。所以不使用这个 api,先用上面的 1 api 获取 id 列表,最后获取作品详细信息。
画师的漫画列表页:(可以跟很多 ids)
https://www.pixiv.net/ajax/tags/frequent/illust?ids%5B0%5D=20830181
不使用这个 api,理由同上。
https://www.pixiv.net/ajax/user/27517/illusts/tag/%E5%A5%B3%E3%81%AE%E5%AD%90?offset=0&limit=24
把 limit 设置为 999999 来获取所有列表,然后取出 id 列表,最后获取作品详细信息。
画师的漫画 tag 列表页:(和插画 tag 的区别在于中间字段不同)
https://www.pixiv.net/ajax/user/27517/manga/tag/%E3%82%AA%E3%83%AA%E3%82%B8%E3%83%8A%E3%83%AB?offset=0&limit=24
处理同上。
书签主页:
https://www.pixiv.net/ajax/user/9460149/illusts/bookmarks?tag=&offset=0&limit=24&rest=show
书签的 tag 列表页:(和主页的区别是带了 tag)
https://www.pixiv.net/ajax/user/9460149/illusts/bookmarks?tag=R-18&offset=0&limit=24&rest=show
- api 总结
- 获取画师所有作品列表:
https://www.pixiv.net/ajax/user/27517/profile/all
- 获取画师某个 tag 的作品列表:(区分 illusts 和 manga)
https://www.pixiv.net/ajax/user/27517/illusts/tag/%E5%A5%B3%E3%81%AE%E5%AD%90?offset=0&limit=24
https://www.pixiv.net/ajax/user/27517/manga/tag/%E3%82%AA%E3%83%AA%E3%82%B8%E3%83%8A%E3%83%AB?offset=0&limit=24
- 获取书签或书签的 tag 列表:(区别带不带 tag)
https://www.pixiv.net/ajax/user/9460149/illusts/bookmarks?tag=&offset=0&limit=24&rest=show
https://www.pixiv.net/ajax/user/9460149/illusts/bookmarks?tag=R-18&offset=0&limit=24&rest=show
p 站书签页,获取收藏数据的 api 改了,limit 每次只能获取100,不能99999了。不知道以后其他能 99999 的会不会也改成100,好烦啊。
- 可以将动图转换为 gif
获取动图信息的 API 如:
https://www.pixiv.net/ajax/illust/69979772/ugoira_meta
包含原文件(zip)的url和帧率信息。
静态图片网址可以从源文件网址替换得出。源文件网址如:
https://i.pximg.net/img-zip-ugoira/img/2018/08/02/14/08/01/69979772_ugoira1920x1080.zip
压缩包里的静态图片网址如:
https://i.pximg.net/img-original/img/2018/08/02/14/08/01/69979772_ugoira0.jpg
最后的序号从 0 开始,依次增加。
我本来想直接用静态图片来生成 gif,但是在转换成 gif 时会遇到跨域问题。最后还是只能先加载 zip 文件,再从 zip 文件里提取静态图片。
- 使用的库:
用户脚本使用库太麻烦了,只能引用外部网址的库,不能像浏览器扩展那样,把库包含到自己的文件夹。
ps:当我把更改同步到 Chrome 扩展时,才发现扩展也有不方便的地方,那就是 worker 的 url。如果依旧从远程地址引入倒还行,但要引入扩展文件夹内的 js 作为 worker,没有很好的办法,只能通过获取它的文本来创建 blob url。所以现在简单粗暴的全塞到 content.js 里了。
p站作品页面一些结构变了,导致多图作品的缩略图列表位置变得靠下了,现在修复。
有人反应动图分类列表页,下载到的是全部作品,而不是动图作品。如:
https://www.pixiv.net/member_illust.php?id=573302&type=ugoira
因为在新版里没有“动图”作品列表了,动图合并到了“插画”列表里,上面的网址会被导航到“插画”列表里。
https://www.pixiv.net/member_illust.php?id=573302&type=illust
因为没有(或者没有找到)单独获取动图的 api,所以用了另一个办法,检测到是动图分类时,直接设置为排除单图、多图,只下载动图。
点击收藏按钮时,会自动点赞。
新版列表页改成一页 48 个了,同步修改。
在画师的列表页里下载时,把 url 倒序排列,这样是为了先下载最新作品,后下载早期作品。
界面优化
增加和修改一些设置项
改进暂停、停止功能
修复 bug 和文本错误
修改 tag 搜索页第一个按钮的颜色
记忆一些设置:
- 多图作品设置
- 设置作品类型
- 必须含有 tag
- 不能含有 tag
- 是否显示封面
- 是否快速下载
- 设置下载线程
- 设置命名规则
添加了一个设置项:
- 添加标记名称
- 优化了界面
- 把排除类型里的“收藏作品”改为一个单独的选项,含义更加准确。
- 修复bug
修复了火狐上,不会出现 tip 提示框的 bug。
默认隐藏下载区域,在可以进行下载时才显示。
修改出了 bug,改回去。
网友 道滿 翻译了繁體中文
可以设置文件夹名称
重复文件只能加序号,不能直接覆盖。Chrome 扩展版可以直接覆盖。
在右侧添加快速下载按钮
快速下载不建立文件夹
添加了设置文件夹的教程
添加标记更快捷
Firefox 上我搞不出来怎么建立文件夹了,先在 Firefox 上把这个功能屏蔽吧。
还是 chrome 好。
最近我发现相关作品很不“相关”,api 似乎没改,但是出来的结果和以前相比,相关度很差,基本不怎么相关。
对比一下:
https://www.pixiv.net/member_illust.php?mode=medium&illust_id=71395570
底部的相关作品
https://www.pixiv.net/bookmark_detail.php?illust_id=71395570
底部的相似作品
以前这两部分出来的作品是一致的,但最近“相关作品”变得不怎么相关了。
以前从画师列表页进入作品页无刷新,从作品页进入画师列表页是要刷新的。现在不一样了,点击作品页的用户名,可以无刷新进入列表页。所以在作品页内也要监听 history 的变化了。
另外作品页内的画师名的 class 最近变了两次,考虑找个别的办法来获取画师名。
从 title 获取画师名。
添加了 Firefox 扩展的提示。
列表页有 1 个「,包裹用户名。内容页有 2 个「,第一个包裹作品名,第二个包裹用户名。但有些用户名里就有「,导致列表页被识别成了内容页,所以增加了判断条件。
https://www.pixiv.net/member.php?id=2793583
但在这种情况下,获取的画师名不包含它本身带的“」”符号,是不完整的。
- 删除了 showcase 的相关代码
pixiv 彻底取消了 showcase 页面,直接跳转到 pixivision 了。 查看公告
- 删除了 响应关联作品 的相关代码
怀疑 pixiv 已经取消了以往的“响应关联作品”的功能。以前的响应网址打开没有内容了。
-
修复反复跳转后图片缩略图失效的问题
-
优化获取用户 id
获取用户 id 从查找头像元素改成了从 html 源码匹配。这样应该不会那么频繁的修改了。
- 适应改版
画师的插画和漫画分类列表页,url 多了一种新情况,适配之。
另外 p 站最近改版也修改了许多 classname
- 优化代码。
-
解除对 jQuery 的依赖。
-
一些 for 循环改成 forEach()、map()、reduce()、for of。
-
一些 for in 遍历对象,改成 for of 遍历 Object.keys()、Object.values()。
-
把 indexOf 改为 includes。
-
函数参数 rest。
-
解构赋值
-
部分 if 改成 switch。
-
优化 addCenterButton 函数,添加按钮时减少了重复代码。
-
去掉一些用作匿名函数的 { } 代码块标记。
-
一些绑定事件时的匿名函数改成了箭头函数。
-
一些 innerHTML 改成了 textContent。
-
删除作品的标记从 DOM 标签上的属性改成了一个变量。
-
所有 css 统一添加到同一个样式表里。
-
优化操作 outputInfo 的代码
-
精简手动删除作品的代码,并提升性能
-
优化了看图器的一些代码。
(发现 Chrome 71 已经支持 fullscreenchange 这个全屏 API 了,不能加前缀了)
-
匹配字符串的正则方法从 match 改成 exec,使用分组
-
fetch 代码优化
-
其他改进。
用网页标题做文件夹名时,会去掉最前面的消息数。
优化了加载 gif 所用的 js 文件的代码。代码更简洁,逻辑更清晰。
略微精简代码,适配快速收藏改版。
快速收藏部分,因为 p 站改版 class 经常变,所以从父元素查找,父元素的 class 变化没那么频繁。
- 增加“设置宽高比例”,当设置为下载横图或竖图时,不下载方图。
这个 含有方图的网址 有 1 个方图, id = 61632819
-
在 tag 搜索页,使一些设置立即生效(以前有些设置要等到下载时才生效)
-
优化代码,优化任务流程,提高效率
修复tag搜索页图片下载两遍的问题
文件夹、文件名设置里可以自由建立多级文件夹了。
安全的文件名的正则里添加了一种情况,去掉末尾的点“.”。在 Windows 上末尾的点会消失,导致建立文件夹失败,如有个画师名字“ち.”。
- 修复暂停后继续下载会有部分图片重复下载的 bug:
以前把 tag 搜索页设置为按收藏数从高到低下载,但当时是反转数组,操作不对,而且导致暂停后再继续下载,会下载到几张重复图片,漏掉相同数量的正常图片。现在修复了。
在 tag 搜索页之外,理论上应该是没有这个 bug 的,毕竟流程不一样。但我测试的时候偶然在画师列表页也遇到了这个情况。然而之后多次测试无法复现,暂且不管了。
-
优化部分文本。
-
更新了截图
有些作品如 565435,API 返回的数据里有 tag 却不包含画师名,很奇怪,对这种情况做了修复。
-
看图模式时预加载下一张图片
-
优化部分文本。
使脚本版和扩展版同时只运行一个。
视情况不同,两个版本哪个先运行是不固定的,所以两个版本里都做了检测。
增加了扩展版图标的动画效果,提示用户去安装浏览器扩展版。原因如下。
Chrome 72 的问题
Chrome 72 因为增加了一些限制,导致 Tampermonkey 一些功能失效,导致本工具下载出现异常。
解决办法:
-
升级 Tampermonkey 到最新版本(在 Chrome 上,需要 Tampermonkey 4.8 或更高版本)
-
此外,你也可以切换到本工具的浏览器扩展版,扩展版没有出现这个问题。
因为有些人没注意到右上角推荐 chrome 的图标,所以这次我加了颜色,闪动频率更快,希望可以挽救星际用户。
检测脚本版因 Chrome 72 导致不能正常下载的情况,加一个弹窗提醒。只弹出一次。
同步扩展版的修改. 合并命名规则输入框,修复快速收藏失效等.
根据投票结果, 保留了命名规则里的空标记. 空标记会原样添加到文件(夹)名里.
之前从扩展版同步修改,导致去掉了"如何使用"文件夹的按钮,恢复之. 并添加文字提示"要在 Firefox 上建立文件夹,请使用扩展版。"
现在 Firefox 的 TM 依旧不能建立文件夹.
添加命名规则的示例。
修复动图额外建立了文件夹的问题。
修改命名规则后,快速下载也会建立文件夹了。现在修改成不建立文件夹的状态。
文件名标记里有些值是数字(如 bmk),导致 replace 报错 once.replace(safe_fileName_rule, '_')
。现在统一转换为字符串,避免错误。
- 在 sortByProperty 里把参数都转换成了数字。
之前传入的参数是字符串,按首位比较的,不准确。转换成数字以保证结果准确。
- 暂停和继续下载添加定时器。
如果点了暂停,然后点开始继续,中间间隔时间很短,可能会出问题。所以加上了延时。
-
修改了右侧按钮样式使其更加明显
-
添加了建立文件夹的提示
-
优化日文文本
-
修复 getUserName 的 bug
之前 getUserName 会使用 old_title,这是有问题的,不同语言的 title 不一样,导致严重错误,英语语言下完全无法下载。现在修复了。
修复 bug
p 站最近在 tag 搜索页的 R-18 分类里,增加了广告信息,导致抓取出错,现在修复这个问题。
-
增加了 id_num 命名字段
-
停止下载时添加时间间隔。
-
css 优化
-
查看多 p 图片的页面 示例 并不能进行下载,但之前显示了下载图标,现在去掉
- 修复 getUserName 的 bug
之前从 dom 里获取,但是这样 p 站一改版就出问题,所以还是从 api 获取比较好。所以添加了 getIllustInfo 函数。虽然可能会多次调用它,但是有缓存,所以问题不大。
-
css 优化
-
其实主要原因是 Firefox 扩展被下架了,补充了一些隐私政策等信息,提交新版本进行审核。
-
更新了 readme 里的捐赠信息,之前放的博客链接,但是需要翻墙才能打开。所以现在直接放图片了。
-
添加了 {p_num} 标记,也就是图片的 p 数。
-
因为格式化程序的改变,函数名和括号之间增加了空格。参数列表的逗号后面也加了空格。
画师作品列表页带 tag 时的 api 发生了变化,修改之。
- 对合法的文件名的规则进行修改
现在的 Chrome 下载扩展 API 不允许文件名里含有 ~
了,所以增加了对此情况的处理。
另外增加的 \u220b\
是一个特殊字符,有时候会遇到,它没有宽度。它会导致 chrome 下载文件时报错,文件名不合法。
-
优化繁体中文文本
-
修复快速收藏功能,感谢 yuzhan1990。
快速下载时,如果只有一个文件,则不建立文件夹。如果大于一个图片,则建立文件夹。
在书签页面,可以给“未分类”的书签批量加上 tag。这样可以节省大量的时间。
优化体验。之前在一些非书签页也会显示添加 tag 按钮,现在限制在只在书签页显示。但目前有个问题,在别人的书签页里也会显示。
优化了获取 token 的方式,添加 tag 的按钮可以在书签页直接出现了。之前需要先用一次快速收藏才会出现这个按钮。
p 站代码又变了,获取画师名的代码做了相应的修改。现在其实是更简单了,挺好的。
** 本脚本版未来可能不再有大的更新,只会修复 bug 和维护基础功能。希望用户尽快迁移到 Chrome 扩展版.
-
下载书签作品时会倒序下载。
-
添加提示,提醒用户安装扩展版。
添加说明,提醒用户迁移到扩展版。
由 phenixl 提交的 pull: 增加XMP Sidecar 文件保存TAG,保存前整理TAG #27
chrome 扩展版之前被下架了,现在重新上架,url 变了。这次把代码里的安装地址改为新的地址。
chrome 扩展版又被下架了。所以把安装地址改为离线安装的教程地址。
- 适配作品页面新的 url 格式
这个问题影响很大,所以对脚本版做了适应。
发现有些人在手机浏览器里使用脚本版。所以把脚本版获取 userId 的代码也适配了手机版页面。