you-get icon indicating copy to clipboard operation
you-get copied to clipboard

output_filename的最大长度不够长。

Open fuchanghao opened this issue 5 years ago • 9 comments

面对一些title超长的视频时,会导致分P的文件名无法输出,最终--playlist下载多个分P时提示文件重复。

例如进行如下测试时: OS: windows server 2019 python: 3.8.1 x64

you-get --playlist https://www.bilibili.com/video/av35035828

输出结果如下。

site: Bilibili title: 闪之轨迹4中文官方版 主线+羁绊+支线+全NPC对话(完结 最全剧情合集)閃之軌跡IV(1080p60帧 最高画质)閃の軌跡IV 法老控 艾丝蒂尔 罗伊德 黎恩 (P1. 【序章1】各地各人物现状,动员令) stream: - format: dash-flv_p60 container: mp4 quality: 高清 1080P60 size: 1519.8 MiB (1593644635 bytes) # download-with: you-get --format=dash-flv_p60 [URL]

Downloading 闪之轨迹4中文官方版 主线-羁绊-支线-全NPC对话(完结 最全剧情合集)閃之軌跡IV(1080p60帧 最高画质)閃の軌跡IV 法老控 艾丝蒂尔 罗伊德 黎恩.mp4 ...

可以看到输出文件已经不包含任何分P信息了,这样下载P2时就会提示文件重复导致无法下载。

而且--output-filename本身不支持“指定文件名+分P信息”这样的组合作为最终输出的文件名。

fuchanghao avatar Jan 26 '20 13:01 fuchanghao

另一个疑似bug,可能是因为文件长度过长导致的,可以复现,但是我也找不到原因。

如果用cookie下载一个文件长度比较长但是还能显示分P的文件会导致一直都是下载P1。

使用其它文件长度超过的下载APP却没有这个问题,例如annie。

例如:

you-get " -c "cookies.sqlite" --playlist https://www.bilibili.com/video/av35035828

site: Bilibili title: 闪之轨迹3官方★中文版★全剧情+羁绊+支线+全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P1. 【主线序章1】倒叙-朱诺海上要塞) stream: - format: dash-flv_p60 container: mp4 quality: 高清 1080P60 size: 772.8 MiB (810376339 bytes) # download-with: you-get --format=dash-flv_p60 [URL]

Downloading 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P1. 【主线序章1】.mp4 ... 100% (772.8/772.8MB) ├████████████████████████████████████████┤[2/2] 11 MB/s Merging video parts... Merged into 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P1. 【主线序章1】.mp4

Downloading 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P1. 【主线序章1】.cmt.xml ...

site: Bilibili title: 闪之轨迹3官方★中文版★全剧情+羁绊+支线+全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P2. 序章2-火车、黎恩、提妲、阿加特) stream: - format: dash-flv_p60 container: mp4 quality: 高清 1080P60 size: 772.8 MiB (810376339 bytes) # download-with: you-get --format=dash-flv_p60 [URL]

Downloading 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P2. 序章2-火车、.mp4 ... 100% (772.8/772.8MB) ├████████████████████████████████████████┤[2/2] 11 MB/s Merging video parts... Merged into 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P2. 序章2-火车、.mp4

Downloading 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P2. 序章2-火车、.cmt.xml ...

site: Bilibili title: 闪之轨迹3官方★中文版★全剧情+羁绊+支线+全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P3. 序章3-春日再临,第二分校入学) stream: - format: dash-flv_p60 container: mp4 quality: 高清 1080P60 size: 772.8 MiB (810376339 bytes) # download-with: you-get --format=dash-flv_p60 [URL]

但不使用cookie这个bug就消失了:

you-get --playlist https://www.bilibili.com/video/av35035828

site: Bilibili title: 闪之轨迹3官方★中文版★全剧情+羁绊+支线+全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P1. 【主线序章1】倒叙-朱诺海上要塞) stream: - format: dash-flv container: mp4 quality: 高清 1080P size: 285.9 MiB (299752781 bytes) # download-with: you-get --format=dash-flv [URL]

Downloading 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P1. 【主线序章1】.mp4 ... 100% (285.9/285.9MB) ├████████████████████████████████████████┤[2/2] 11 MB/s Merging video parts... Merged into 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P1. 【主线序章1】.mp4

Downloading 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P1. 【主线序章1】.cmt.xml ...

site: Bilibili title: 闪之轨迹3官方★中文版★全剧情+羁绊+支线+全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P2. 序章2-火车、黎恩、提妲、阿加特) stream: - format: dash-flv container: mp4 quality: 高清 1080P size: 141.1 MiB (147972500 bytes) # download-with: you-get --format=dash-flv [URL]

Downloading 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P2. 序章2-火车、.mp4 ... 100% (141.1/141.1MB) ├████████████████████████████████████████┤[2/2] 11 MB/s Merging video parts... Merged into 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P2. 序章2-火车、.mp4

Downloading 闪之轨迹3官方★中文版★全剧情-羁绊-支线-全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P2. 序章2-火车、.cmt.xml ...

site: Bilibili title: 闪之轨迹3官方★中文版★全剧情+羁绊+支线+全员对话(完结,全剧制作完毕)闪之轨迹Ⅲ 全流程 1080p60帧 PS4Pro高画质录制 (P3. 序章3-春日再临,第二分校入学) stream: - format: dash-flv container: mp4 quality: 高清 1080P size: 610.7 MiB (640327766 bytes) # download-with: you-get --format=dash-flv [URL]

但文件长度正常的是没有这个问题,例如:

you-get -c "cookies.sqlite" --playlist https://www.bilibili.com/video/av45840071

site: Bilibili title: 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P1. 鬼泣5 序章—3章CG+怪物介绍视频P1) stream: - format: dash-flv_p60 container: mp4 quality: 高清 1080P60 size: 1657.4 MiB (1737922121 bytes) # download-with: you-get --format=dash-flv_p60 [URL]

Downloading 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P1. 鬼泣5 序章—3章CG+怪物介绍视频P1).mp4 ... 100% (1657.4/1657.4MB) ├██████████████████████████████████████┤[2/2] 11 MB/s Merging video parts... Merged into 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P1. 鬼泣5 序章—3章CG+怪物介绍视频P1).mp4

Downloading 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P1. 鬼泣5 序章—3章CG+怪物介绍视频P1).cmt.xml ...

site: Bilibili title: 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P2. 鬼泣5 4章—8章CG+怪物介绍视频P2) stream: - format: dash-flv_p60 container: mp4 quality: 高清 1080P60 size: 1052.8 MiB (1103986682 bytes) # download-with: you-get --format=dash-flv_p60 [URL]

Downloading 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P2. 鬼泣5 4章—8章CG+怪物介绍视频P2).mp4 ... 100% (1052.8/1052.8MB) ├██████████████████████████████████████┤[2/2] 13 MB/s Merging video parts... Merged into 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P2. 鬼泣5 4章—8章CG+怪物介绍视频P2).mp4

Downloading 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P2. 鬼泣5 4章—8章CG+怪物介绍视频P2).cmt.xml ...

site: Bilibili title: 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P3. 鬼泣5 9章—12章CG+怪物介绍视频P3) stream: - format: dash-flv_p60 container: mp4 quality: 高清 1080P60 size: 1294.9 MiB (1357820835 bytes) # download-with: you-get --format=dash-flv_p60 [URL]

Downloading 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P3. 鬼泣5 9章—12章CG-怪物介绍视频P3).mp4 ... 100% (1294.9/1294.9MB) ├██████████████████████████████████████┤[2/2] 11 MB/s Merging video parts... Merged into 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P3. 鬼泣5 9章—12章CG-怪物介绍视频P3).mp4

Downloading 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P3. 鬼泣5 9章—12章CG-怪物介绍视频P3).cmt.xml ...

site: Bilibili title: 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P4. 鬼泣5 13章—16章CG+怪物介绍视频P4) stream: - format: dash-flv_p60 container: mp4 quality: 高清 1080P60 size: 484.9 MiB (508455479 bytes) # download-with: you-get --format=dash-flv_p60 [URL]

Downloading 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P4. 鬼泣5 13章—16章CG-怪物介绍视频P4).mp4 ... 100% (484.9/484.9MB) ├████████████████████████████████████████┤[2/2] 12 MB/s Merging video parts... Merged into 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P4. 鬼泣5 13章—16章CG-怪物介绍视频P4).mp4

Downloading 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P4. 鬼泣5 13章—16章CG-怪物介绍视频P4).cmt.xml ...

site: Bilibili title: 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P5. 鬼泣5 17—20章完结篇,结尾彩蛋) stream: - format: dash-flv_p60 container: mp4 quality: 高清 1080P60 size: 1545.6 MiB (1620700737 bytes) # download-with: you-get --format=dash-flv_p60 [URL]

Downloading 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P5. 鬼泣5 17—20章完结篇,结尾彩蛋).mp4 ... 100% (1545.6/1545.6MB) ├██████████████████████████████████████┤[2/2] 11 MB/s Merging video parts... Merged into 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P5. 鬼泣5 17—20章完结篇,结尾彩蛋).mp4

Downloading 鬼泣5 【1080P 60】全剧情CG+怪物介绍分P视频 (P5. 鬼泣5 17—20章完结篇,结尾彩蛋).cmt.xml ...

fuchanghao avatar Jan 26 '20 14:01 fuchanghao

关于文件名长度的问题,在linux下的临时解决办法用rename命令解决。 rename "xxxxxx - P10" "P$p" 不能用--playlist参数,直接用for p in {1..1000} do you-get -o ~/tests "https://www.example.com/?p=$p" && rename "xxxxxx - P10" "P$p" *.mp4 done

b40yd avatar Feb 16 '20 04:02 b40yd

该怎么下载60帧的视频,是要加cookie吗

wangbar0133 avatar Mar 12 '20 22:03 wangbar0133

面对一些title超长的视频时,会导致分P的文件名无法输出,最终--playlist下载多个分P时提示文件重复。

例如进行如下测试时: OS: windows server 2019 python: 3.8.1 x64

you-get --playlist https://www.bilibili.com/video/av35035828

输出结果如下。

site: Bilibili title: 闪之轨迹4中文官方版 主线+羁绊+支线+全NPC对话(完结 最全剧情合集)閃之軌跡IV(1080p60帧 最高画质)閃の軌跡IV 法老控 艾丝蒂尔 罗伊德 黎恩 (P1. 【序章1】各地各人物现状,动员令) stream:

  • format: dash-flv_p60 container: mp4 quality: 高清 1080P60 size: 1519.8 MiB (1593644635 bytes)

download-with: you-get --format=dash-flv_p60 [URL]

Downloading 闪之轨迹4中文官方版 主线-羁绊-支线-全NPC对话(完结 最全剧情合集)閃之軌跡IV(1080p60帧 最高画质)閃の軌跡IV 法老控 艾丝蒂尔 罗伊德 黎恩.mp4 ...

可以看到输出文件已经不包含任何分P信息了,这样下载P2时就会提示文件重复导致无法下载。

而且--output-filename本身不支持“指定文件名+分P信息”这样的组合作为最终输出的文件名。

Hello friend, There will be something helpful when you combine the Windows Powershell when using command of 'you-get',you can use a 'for' loop to get a increasing number of the file name. I'd like to give you an example to solve this problem instead of changing the source code. for($i=1;$i -le 25;$i++) { you-get https://www.bilibili.com/video/av95051759?p=$i -o I:\吴恩达团队Tensorflow2.0实践系列课程\lesson_$i } It can be useful before developer fix their bug. If you want to see a chinese explaination,welcome my csdnblog https://blog.csdn.net/dingzi66/article/details/104865947

LeoYelton avatar Mar 14 '20 11:03 LeoYelton

兄弟,你提PR却不改代码,这事不是这么搞的。 这个问题很简单,你的推测一点毛病都没有,就是文件名太长被截断了。有些视频本身标题不算太长,但是分P的子标题非~~常~~长~~,最后总长超过了you-get代码里设定的上限。

那么you-get设定的上限是多大呢? 80而已,确实太小了,现代文件系统基本都能处理至少255长度的文件名,微软的NTFS也不例外,所以限制到80太怂了。 我当然知道255的文件名长度是算的字节数而不是字符数,unicode很可能单个字符占用两个甚至三个字节数,这也是80这个数的由来(80*3=240),但是这样从最坏情况考虑太浪费了。 你可以自行修改这部分代码,对应的文件是fs.py,位于Lib/site-packages/you_get/util/目录下,只要修改倒数第二行代码里面的一个数字:

    text = text[:80] # Trim to 82 Unicode characters long

mo-han avatar May 18 '20 02:05 mo-han

Windows(命令行窗口)下的临时解决方法: for /L %i in (1,1,7) Do you-get --format=dash-flv720 -O "P%i. " https://www.bilibili.com/video/BV1J741167Ta?p=%i

boxoft avatar Sep 13 '20 03:09 boxoft

兄弟,你提PR却不改代码,这事不是这么搞的。 这个问题很简单,你的推测一点毛病都没有,就是文件名太长被截断了。有些视频本身标题不算太长,但是分P的子标题非~常~长~~,最后总长超过了you-get代码里设定的上限。

那么you-get设定的上限是多大呢? 80而已,确实太小了,现代文件系统基本都能处理至少255长度的文件名,微软的NTFS也不例外,所以限制到80太怂了。 我当然知道255的文件名长度是算的字节数而不是字符数,unicode很可能单个字符占用两个甚至三个字节数,这也是80这个数的由来(80*3=240),但是这样从最坏情况考虑太浪费了。 你可以自行修改这部分代码,对应的文件是fs.py,位于Lib/site-packages/you_get/util/目录下,只要修改倒数第二行代码里面的一个数字:

    text = text[:80] # Trim to 82 Unicode characters long

因为官方不给提issue/讨论的空间,我只能拿PR当issue用了。

而且这样依旧会出现下载的时候P2分P内容和P1分P一致的问题。

fuchanghao avatar Oct 01 '20 08:10 fuchanghao

而且这样依旧会出现下载的时候P2分P内容和P1分P一致的问题。

只要P1、P2成功加入文件名,就不会把两个文件混淆了,我还没遇到分P前部分(也就是视频主标题)长到那种地步的,好像B站本身对视频标题长度也有限制的

mo-han avatar Oct 30 '20 02:10 mo-han

可能原因和 #2913 是一样的,文件名被截断成80个字符了

xiaoma20082008 avatar Aug 28 '21 06:08 xiaoma20082008