abcfy2 / getComic

Download tencent comic-下载腾讯漫画
http://my.oschina.net/abcfy2/blog/294668
197 stars 77 forks source link

希望添加抓取特定章节的功能 #2

Closed hzy199411 closed 10 years ago

hzy199411 commented 10 years ago

必须要全部抓取,感觉不实用

abcfy2 commented 10 years ago

打算在图形化界面下实现。因为windows蛋疼的gbk编码问题,有些章节编码就会报错,导致显示不出来章节列表(Linux下无此问题),所以没加入指定章节的功能。打算在图形化界面用一个list check box显示章节,理论上可以搞定这个问题。

计划本周内抽空完成。另外,下载过的文件是不会重复下载的,程序有判定,如果目标文件存在就跳过下载,所以续传什么的没问题。不过需要注意的是可能异常关闭的时候并不会删掉未下载完成的文件(比如直接点了控制台的X关闭窗口,程序捕获不到这个),这时候需要手工删掉最后一个未下载完的文件重试。

hzy199411 commented 10 years ago

我自己改了改,可以抓取从a到b的章节,因此增加了两个参数,感觉增加了复杂性,就不push了

abcfy2 commented 10 years ago

应该不会太复杂,等会我改下程序就行了,加个参数搞定这个问题。

abcfy2 commented 10 years ago

打算这么实现,支持章节序列做参数,如1,2,3,4-10,30,对应正则re.match(r'\d+([,-]\d+)*')。是否有必要加入列表切片特性?比如支持步长?感觉似乎没必要,没人那么蛋疼的去单独爬取偶数章节吧

hzy199411 commented 10 years ago

章节序列做参数,这样就足够了,另外海贼王抓取的话数从304话就比实际多一话

abcfy2 commented 10 years ago

会做判定的,不会让列表out of index的

abcfy2 commented 10 years ago

2be5481be7f12f79c4f81b49bc6bf869de785c61

增加-l|--list参数,指定以下类型格式,如:

-l 1,3,5
-l 5-7,10-100
-l 50
...

设置章节区间,并且加入以下规则判定:

增加了一个函数parseLIST(lst)用于解析-l|--list后面的参数,返回一个解析过的章节列表list

main()函数增加一个参数lst=None(main(url, path, lst=None)),用于承接-l|--list参数。

详细修改可以看commit的diff。

以上,欢迎测试,有任何BUG(s)都欢迎直接在这个issue回复

PS:代码250行~~~好整齐的数字

hzy199411 commented 10 years ago

不错,能正常下载特定章节,就是警告有点问题:比如下载1-10时 会出现,“警告: 参数中包括不存在的章节0,自动忽略”

abcfy2 commented 10 years ago

感谢反馈,已修复。是我把这句的逻辑搞错了,判断min-max或者max-min这一类的格式的时候,如果min=0,就提示这个警告,我刚好给搞反了。已经修复这个BUG,可以看到commit记录在此 54fa10007766f4201af447f56d1884253fe6760d

顺便再加上一个commit,突然发现不加-l参数的时候少最后一话,检查发现range()的范围给搞错了,最后是半开半闭区间,最大值需要+1