raawaa / jav-scrapy

批量抓取AV磁链或封面的苦劳力
1.04k stars 211 forks source link

有些影片的标题中含有/字符会导致错误 #32

Closed jgit8848 closed 6 years ago

jgit8848 commented 6 years ago

前提: function getItemCover(link, meta, done) { var fanhao = link.split('/').pop(); var filename = fanhao + 'l.jpg'; 个人修改成 function getItemCover(link, meta, done) { var fanhao = link.split('/').pop(); var filename = meta.title + '.jpg'; 以便直接输出以影片标题为文件名的封面图

但是有些影片的标题中含有/字符,而这个字符会导致命名错误 20180609a 比如截图中的MUDR-034 想请教一下作者,有没有什么办法能够直接删除标题中的/字符或者替换为.或空格之类可以在文件名中使用的字符?

raawaa commented 6 years ago

其实作者我也是个菜逼,哈哈。我抽空研究一下。

raawaa commented 6 years ago

其实你可以把\替换成其他字符,比如|

jgit8848 commented 6 years ago

手动替换成 | 字符的确没问题,但是脚本在中间出现错误会终止抓取并影响后续抓取行为。 我的想法是在脚本生成meta.title的环节做一个判断,如果包含 / 字符则将 / 字符替换成 | 字符或其他不会导致错误的字符,这样脚本就可以顺畅运行下去了。 可惜我不会写脚本语言,就只能来请求作者了。

raawaa commented 6 years ago

var filename = meta.title.replace('/', '|') + '.jpg'; 试试改成这样

jgit8848 commented 6 years ago

用 | 符号替换linux处没有问题,但是windows不允许这个符号在文件名里,文件拷贝到windows文件名会变成奇怪的英文名 最后试着改成 var filename = meta.title.replace('/', '.') + '.jpg'; 一切正常了,感谢作者

McNEET commented 5 years ago

前提: function getItemCover(link, meta, done) { var fanhao = link.split('/').pop(); var filename = fanhao + 'l.jpg'; 个人修改成 function getItemCover(link, meta, done) { var fanhao = link.split('/').pop(); var filename = meta.title + '.jpg'; 以便直接输出以影片标题为文件名的封面图

但是有些影片的标题中含有/字符,而这个字符会导致命名错误 20180609a 比如截图中的MUDR-034 想请教一下作者,有没有什么办法能够直接删除标题中的/字符或者替换为.或空格之类可以在文件名中使用的字符?

见issue #23我写的图片名增加标题日期演员的办法,考虑到了windows命名的问题,实测没bug

McNEET commented 5 years ago

最新解决见 pull #36