LifeActor / ykdl

a video downloader focus on China mainland video sites.
https://github.com/zhangn1985/ykdl
Other
1.43k stars 284 forks source link

请问下 “-O” 参数是不能带特殊字符吗? #555

Closed vvyoko closed 3 years ago

vvyoko commented 3 years ago

在提交前,请确保您已经检查了以下内容!

请将错误输出粘贴在下面:

Start downloading: 【紫颜】别低头 ? 皇冠会掉  ac18195482 @紫颜-小仙紫
Processes[0/31][00:14]:
Current downloaded 0 B, cost 00:15.
Total downloaded 0 B of 30.59 MB, cost 00:15
ERROR:downloader:download failed at parts: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
The estimated ETA is 8909:53:40, do you want to continue downloading? [Y]                                                                                                                         

比方说这样的运行参数 ykdl -O "【紫颜】别低头 ♛ 皇冠会掉 ac18195482 @紫颜-小仙紫" https://www.acfun.cn/v/ac18195482 会给出上面的错误代码

而没有特殊字符的运行参数就能正常运行。 ykdl -O "【独家】点击带小肉兔回家~【紫颜】 ac23252355 @紫颜-小仙紫" https://www.acfun.cn/v/ac23252355

如果不带 -O 参数也能正常下载,而且文件名也包含特殊字符 【紫颜】别低头 ♛ 皇冠会掉 - 紫颜 初见_BD.mp4

you-get 同样的运行参数没有问题,就是下载速度比这慢很多。

给一些其他的文件名作为测试,如果是单个字符我排除掉用you-get就行,但是太多了不知道怎么排除。

夜蝶❀剧情版 老婆间的爱恨情仇【独家♛胃炎cp】
【独家♡泡芙】~游园惊梦~你我对面不识得
【雪蟹】领取你的JK女友ღ五等分的新娘∬【星辰】
SeaHOH commented 3 years ago

没发现有这毛病,你的使用环境是?

vvyoko commented 3 years ago

系统:win10 1909 中文 python39 ffmpeg:built with gcc 9.3-win32 (GCC) 20200320 ykdl版本: 手动下载了仓库的master.zip 然后

python setup.py build
python setup.py install

复现: 无论在CMD中执行(按理说我CMD区域是执行不了这些特殊字符的,我没改chcp 65001) 还是直接开始运行都得到一样的错误

截图: 图上面是CMD,下去是运行。 忽然又上传不了附件了,图片上传到sm.ms了。可能要翻。 1.jpg

如图片看不了那得去网站看了 https://sm.ms/image/n6lRwGYBSj8QDqp

SeaHOH commented 3 years ago

来张不加 -O 的截图看看。可能是输入命令的方式不合适,也可能是 Win10 有变化。

vvyoko commented 3 years ago

奇了怪了 不加-O 运行错误和上面的一样 CMD输入正常下载 AHK就单纯的 run ykdl https://www.acfun.cn/v/ac18195482 也没报错(加 -O还是会报错) AHK和开始运行应该是一样的呀。

截图依次是AHK,CMD,运行。只有运行错误 QQ拼音截图20210214003348

SeaHOH commented 3 years ago

你可以在 AHK 中先转义成 \uxxxx 再运行。

vvyoko commented 3 years ago

你可以在 AHK 中先转义成 \uxxxx 再运行。

AHK转义没用呀- AHK的run就相当于在开始运行里执行 run后面的命令 然后还是回到ykdl上来了。

假设我转了会是这样的后果

https://blog.csdn.net/liuyukuan/article/details/82428880 输出Unicode对应的符号,比如1fa7代表ᾧ

以这个举例,然后ahk代码会是这样 run ykdl -O "\u1fa7" https://www.acfun.cn/v/ac18195482 其实就相当于在运行里执行 ykdl -O "\u1fa7" https://www.acfun.cn/v/ac18195482 结果根本不在当前目前生成文件,我搜索了下才发现在其他目录生成了个u1fa7.mp4的文件 这得ykdl的 -O 参数能把 \uxxxx 转义回来才行,这更废事吧。。。大概

如果实在是麻烦就算啦,我也没大批量下载,慢点就慢点用you-get凑合吧。

SeaHOH commented 3 years ago

ykdl -O "\u1fa7" https://www.acfun.cn/v/ac18195482 结果根本不在当前目前生成文件,我搜索了下才发现在其他目录生成了个u1fa7.mp4的文件

你还需要 \\ 来转义 \

vvyoko commented 3 years ago

同样的错误,算啦不折腾啦。

SeaHOH commented 3 years ago

这得ykdl的 -O 参数能把 \uxxxx 转义回来才行,这更废事吧。。。大概

才发现,确实需要转义回来,因为读取命令参数时又转义了一次。等会儿我改一下。

SeaHOH commented 3 years ago

ykdl -O "\u1fa7" https://www.acfun.cn/v/ac18195482 结果根本不在当前目前生成文件,我搜索了下才发现在其他目录生成了个u1fa7.mp4的文件

你还需要 \\ 来转义 \

因为命令本身会被转义,所以不需要再转义一次,就你这个命令就行,已经修改支持。请测试一下工作是否正常。

vvyoko commented 3 years ago

刚看到Issues里这个主程已经放弃维护了 虽然很感谢依然有大佬在继续这个项目 但这种BUG无法复现然后让我自己转义的方法很。。。 我也不知道怎么说,反正我觉得这不是正确的方式吧。 陪大佬测试最后一次吧。 我本身不是程序员,能AHK自己提取出个 【紫颜】别低头 ♛ 皇冠会掉 ac18195482 @紫颜-小仙紫 这样的标题就不错啦。

我用此命令依次在CMD和运行中运行。都是同样的错误。 ykdl -O "\\u1fa7" https://www.acfun.cn/v/ac18195482

1

最后我在youtube-dl项目中找到一个pull,虽然当前版本中不知道为什么删除了,但是我下载回来自己加上还是能运行。 https://github.com/ytdl-org/youtube-dl/pull/26814 这已经是我作为非程序员能做到的比较好的方法了,专业从业专门配对的还是比我用AHK提出来的专业一点。 下载速度也比you-get好,达到了ykdl的速度了 工具都是用来解决需求的,我需求暂时已经解决了,就不陪大佬测试了。

最后祝新年快乐!

SeaHOH commented 3 years ago

嗯,新年快乐!

不过。。。我之后的更正说了,斜杠无需再转义,是上面搞错了。 ykdl -O "\u1fa7" https://www.acfun.cn/v/ac18195482