Open zhihaofans opened 8 years ago
还有希望支持nogallery,因为有的网站在indexpage就可以得到完整图片并且没有galleryRule
最近沉迷新游戏,没空管这应用233333
另外noGallery完全不需要啊,现在就可以不指定galleryRule,我记得没错的话tumblr就是这样,所有数据在index就能获取,所以只有indexRule
@PureDark
bing.txt
那这个文件有哪里不对吗?不能获取任何图片,cover得到了地址但没有加载图片(用浏览器打开cover的地址则没问题)
实机测试看log后发现在国内得到的cover本身就是完整地址 例如 http://s.cn.bing.net/az/hprichbg/rb/OcellatedTurkey_ROW10376571112_1920x1080.jpg 所以经过你的replacement后地址会变成 https://www.bing.comhttp://s.cn.bing.net/az/hprichbg/rb/OcellatedTurkey_ROW10376571112_1920x1080.jpg 就错了 估计是因为国内会自动采用CDN的地址,而herokuap因为在国外所以得到的html中直接用本地服务器的相对地址
但我在用浏览器挂不挂代理都说得到的都说相对地址啊。。 用抓包软件然后运行h-viewer的话就获取的是完整地址。。。 不知道是不是UA问题
原来是我忘记加pictureRule了。。。 终于搞定了。。。
另外我记得我在wiki里提到过,相对地址不用做处理,会自动判断并转化为完整地址的,你用regex来手动替换反而容易出错
@PureDark 还有一件事。 就是当pictureRule获取到的item不存在url与thumbnail时能否自动去掉这个item? 或者item的path能否做到多输入多个值?
这个破网站
的图片不好解析啊,试了很多种方法都无法同时匹配顶级的img
和replys
下的img
(因为没有图片时img
参数也存在)
jsonpath又不能匹配同级或父级元素
有时不存在url和thumbnail时也可能有用处,所以不想取的item就像AcFun漫画那样用regex进行区分啊 比如
"item": {
"path": "$.img",
"regex": "/"
},
这样img是空的自然匹配不到/
这个字符就不会取这个item
但是另一个需求可能比较难,因为jsonpath本身不像css选择器那样加个逗号就可以使用多个不同的选择器、 我看看之后版本能不能自己实现一下类似的功能吧
虽然其实按照我目前的写的规则解析器完善度,还是可以实现解析这个站点的、但是里面很多猫腻只有我自己知道2333 很难在教程里解释清楚我就没写上去
比如pictureRule只有thumbnail和url不提供item的话,是把selector或者path取到的内容当成字符串处理,然后根据regex得到所有匹配放在一个数组里,然后thumbnail和url得到的两个数组中序号相同的两个数据会拿来凑成一个Picture之类的2333
这个用法我似乎在bilibili画友中用到了
"pictureRule": {
"thumbnail": {
"fun": "html",
"regex": "s_url.*?drawyoo(.*?)\"",
"replacement": "http://i0.hdslb.com/bfs/drawyoo$1",
"selector": "div.d_body > script"
},
"url": {
"fun": "html",
"regex": "m_url.*?drawyoo(.*?)\"",
"replacement": "http://i0.hdslb.com/bfs/drawyoo$1",
"selector": "div.d_body > script"
}
},
因为bilibili画友的多图的数据在html中很难提取,干脆直接从script里的json数据中提了:
var list = [{
"id": "237243",
"s_url": "http:\/\/i0.hdslb.com\/bfs\/drawyoo\/aeea8a88685db1af911a0ae972f2a16ad64ff9f1.jpg",
"m_url": "http:\/\/i0.hdslb.com\/bfs\/drawyoo\/bf79c0370848b7c50a42fe424617e73f4d29b561.jpg"
},
{
"id": "237244",
"s_url": "http:\/\/i0.hdslb.com\/bfs\/drawyoo\/066b506176239f0c6f285be4b4cad5dd19efbfdc.jpg",
"m_url": "http:\/\/i0.hdslb.com\/bfs\/drawyoo\/7d9a9eb694194db85c2dffc380a64311d661fb52.jpg"
}];
其实有两种选择,我可以选用item的selector选中script,然后用正则把这段json提取出来,然后用path填$,这样接下来都可以直接用jsonpath,但是当时似乎我还没实现jsonpath,就用了另一种方法,靠单纯字符串匹配 thumbnail匹配到所有s_url后面的数据,得到含有两个数据的数组,url匹配到所有m_url后面的数据,也得到一个含有两个数据的数组,就分别凑到一起得到两个Picture
有的网页没有封面图,比如论坛神马的,能不能用取到的图片当封面图啊,就在flag里面设置。、 ~
@ShallYu 你可以把 cover
加在 galleryRule
里
把cover
加在 galleryRule
里完美^^取了第一个图片~
@PureDark 建议在下载列表加个重新下载的功能,经常卡在90%+就动不了了,删掉下载太麻烦了
建议↓
浏览图片
横屏
加入全屏功能
继续浏览功能
建议在下载管理-已完成里面加入
多选功能,删除多个时方便了很多
删除下载任务时弹出的是否删除文件提示有点麻烦,有时删除任务后还没等删除文件提示出来就习惯性的按了返回键(导致文件仍残留在下载目录),改成在删除任务时有个选项(是否删除文件)比较好(如图)