iawia002 / Lulu

[Unmaintained] A simple and clean video/music/image downloader 👾
MIT License
817 stars 141 forks source link

芒果TV合并后文件消失 #62

Closed note286 closed 6 years ago

note286 commented 6 years ago

亲测lulu: version 0.4.1, a tiny downloader that scrapes the web.

https://www.mgtv.com/b/320519/4287283.html

试了两次了,下载正常,合并之后,合并后的文件消失了

you-get也是如此

iawia002 commented 6 years ago

@note286 0.4.2 我测试了一个短点的视频,下载和合并都没有问题

note286 commented 6 years ago

@iawia002 好的,已经更新,我再下载一下试试,看看可以不,不过速度真的好慢,你可以看看我提的新issue,能不能提速一下。

note286 commented 6 years ago

@iawia002 还是不行啊,我是用lulu --format=sd https://www.mgtv.com/b/320519/4287283.html下载了半天终于下载完了,然后合并之后又什么都没了,难受,不知道为啥。lulu: version 0.4.2

iawia002 commented 6 years ago

你装 ffmpeg 了吗?你先下载一个短点的视频文件试试

note286 commented 6 years ago

@iawia002 我试了一下https://www.mgtv.com/b/321331/4285050.html 是可以的

lulu: version 0.4.2, a tiny downloader that scrapes the web.

ffmpeg version 3.4.2 Copyright (c) 2000-2018 the FFmpeg developers

我再下载最低清晰度的快本试一下,hd和sd的清晰度试过都不可以

这个合并功能是直接调用ffmpeg的吧,我记得ffmpeg合并后不会删除原始分段文件吧,是不是删除原始文件的时候误删除了合成后的文件。我没有读源码,只是个人猜测。

iawia002 commented 6 years ago

这就很奇怪了,我再看看代码

note286 commented 6 years ago

@iawia002 辛苦你了,我又下载了最低清晰度的还是不行,你也试一下可以不,能不能复现这个问题,看看是不是这个视频链接的问题,有没有可能跟分段数目有关系。

lulu --format=ld https://www.mgtv.com/b/320519/4287283.html
site:                芒果TV mgtv.com
title:               快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”
stream:
    - format:        ld
      container:     ts
      video-profile: 标清
      size:          346.3 MiB (363078196 bytes)
      m3u8_url:      http://58.222.37.3/c1/2018/02/18_0/702DA8AC4B786030A85E6FD933EF4C87_20180218_1_1_517_mp4/BF3E9CFDB9B831D32754492EB0AAFDD1.m3u8?arange=0&pm=3zqRhX73dYqlLfj~URudE8mg5KqQpkpVeSZ3MC3b~uEAdAEyHo9OaUYYgFikHsWuHOMdulZm30BnrYRoPYG6NrRxxFXtgPrJD73_SszmwtSd4MYPwo4PVcYP70Ffz_x8ddy06gbmvIaVAiel6lbRfvAW9KQtSr_uLmxNlOMoeQmTJo7uM~yjn17OKpJqo5EmhTlidMm5S5Sc7jexAH_keesRIGeSC3hmurushzy34fhjrqY2yPGQrv5pl4bIxV3j1D6JBBUh9aI8hfQK6~e~Wajm8E1_VmhdtkuCDXPpOsvihaJyBs_AcRGifoopg2ly_1rkOVyjJExGMnCMlUjhnRPGL0KtzAnjlIw2QPAerTyiDDtkA96ZtYRkJFbvgmALjMIndqIcAB8dAc7q
    # download-with: lulu --format=ld [URL]

Downloading 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”.ts ...
 100% (346.3/346.3MB) ├████████████████████████████████████████████████████████████████████┤[529/529]  845 kB/s
Merging video parts... Merged into 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”.mkv

辛苦作者了!!下载合并之后还是被清空了,啥都没有。

Justsoos commented 6 years ago

youtube-dl 底层看起来比you-get 要稳不少。

-rw-rw-rw- 1 root root  96M Feb 19 10:04 快乐大本营 2018-4287283.mp4.part
-rw-rw-rw- 1 root root 7.0K Feb 19 10:04 快乐大本营 2018-4287283.mp4.part-Frag43.part
-rw-rw-rw- 1 root root   51 Feb 19 10:04 快乐大本营 2018-4287283.mp4.ytdl

下面是 lulu,也就是 you-get

-rw-rw-rw- 1 root root 321K Feb 19 09:59 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[00].ts
-rw-rw-rw- 1 root root 961K Feb 19 09:59 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[01].ts
-rw-rw-rw- 1 root root 2.0M Feb 19 09:59 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[02].ts
-rw-rw-rw- 1 root root 2.2M Feb 19 09:59 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[03].ts
-rw-rw-rw- 1 root root 2.1M Feb 19 10:00 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[04].ts
-rw-rw-rw- 1 root root 2.3M Feb 19 10:00 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[05].ts
-rw-rw-rw- 1 root root 3.3M Feb 19 10:00 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[06].ts
-rw-rw-rw- 1 root root 2.7M Feb 19 10:00 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[07].ts
-rw-rw-rw- 1 root root 1.7M Feb 19 10:00 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[08].ts
-rw-rw-rw- 1 root root 2.0M Feb 19 10:00 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[09].ts
-rw-rw-rw- 1 root root 2.2M Feb 19 10:00 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[10].ts
-rw-rw-rw- 1 root root 1.9M Feb 19 10:00 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[11].ts
-rw-rw-rw- 1 root root 1.7M Feb 19 10:00 快乐大本营 2018 迪丽热巴周渝民演绎“痛爱”[12].ts
note286 commented 6 years ago

@Justsoos youtube-dl是边下载边合并?lulu和you-get的思路应该是先解析出来m3u8,然后依次下载每一个分段,最后合并,我觉得都ok吧,youtube-dl下载起来速度也不是很好,我比较喜欢的思路是先解析出来每个分段的链接,然后多线程去下载,这样速度会很快。我没看源码,只是胡乱分析的。

iawia002 commented 6 years ago

lulu 是直接解析 m3u8 文件里面的所有视频分段,然后把所有段下载下来再合并,没什么影响吧

note286 commented 6 years ago

@iawia002 我觉得思路OK啊,现在就是增加下多线程下载就很好了,要不速度真的感人!不过那一集快本是为啥我是真的很懵,能追踪下代码是怎么运行的吗?

可以先新建一个空文件夹,然后在里面下载,等到合并前停掉,拷贝一份这个文件夹,然后再测试的时候就不需要反复下载了,要不下载一次真的是好慢,这个方式作者应该能想到,我只是提一下,哈哈哈,很好奇是什么原因导致这个bug。

iawia002 commented 6 years ago

@note286 你用的什么系统啊,我复现不了,我是 macOS

我也下的快本,最低清晰度的

note286 commented 6 years ago

@iawia002 我去,难道是我的问题?我也是macOS,最新的系统,ffmpeg是homebrew安装的。如果你之前没有动过mgtv的代码的话,好像这次只是偶然,我之前也这么下载快本,没出现过这个问题,我下载上一期快本试试吧。

iawia002 commented 6 years ago

@note286 是不是你电脑硬盘容量不够了呀

note286 commented 6 years ago

@iawia002 哈哈哈,我也想到了这个问题,不过我看了一下,还剩下36G呢,不应该是这个问题,我正在下载上一期的快本,看看啥情况。

iawia002 commented 6 years ago

这个问题没什么道理,同样的合并流程,有些文件又行,有些又不行,我想不出你电脑上文件是怎么消失的

note286 commented 6 years ago

@iawia002

lulu --format=ld https://www.mgtv.com/b/320519/4281234.html
site:                芒果TV mgtv.com
title:               快乐大本营 2018 宋威龙变身海带嗨唱洗脑神曲
stream:
    - format:        ld
      container:     ts
      video-profile: 标清
      size:          341.6 MiB (358154664 bytes)
      m3u8_url:      http://58.222.37.6/c1/2018/02/11_0/9BAF96BF882EFC9D5B8534C2576D46DE_20180211_1_1_518_mp4/51D1D127C613570322D4D675DF9FA96D.m3u8?arange=0&pm=OMD4gdOnjYxqN9qJCQMSYxs7_a0yrjL0HDflbEK7Fz1EFHuqQBDGTEW8kzmi0LlScLXfSrTMtPdKtooldOyh2OaI_qkm5Vx7j_HH0JMEgId7jpPQiLtkMyn4PeIe4lcOFkeMh43U7ZEJ48bsBfYPyHsXBixx_iSid5vXD_PWnkVcG7kRSGj4iYUBaRK8ym670pZ7JgRcear3Fkr_IYSFc8wU5sTqZdDm0J~0AX3bh_FK7xemEn2KKN2a~vQ36RUeQ8W8_RgiE46SzJu96CxWQybVsQ9wxsM2dUbrKvYGj8BXxscP5V2I1fUvv8ewQrbClcaSedCsVfcDs8FTo3VpjXTSJfpBdIHLk7ZCzR88WNRQ~oIEJYvcnt59HPRu4QWg6EzGG95x24I~wDA1
    # download-with: lulu --format=ld [URL]

Downloading 快乐大本营 2018 宋威龙变身海带嗨唱洗脑神曲.ts ...
 100% (341.6/341.6MB) ├████████████████████████████████████████████████████████████████████┤[521/521]  694 kB/s
Merging video parts... Merged into 快乐大本营 2018 宋威龙变身海带嗨唱洗脑神曲.mkv

我是彻底蒙了,上一期的也是合并后啥都没了,很懵逼,我重装一下ffmpeg试试?

iawia002 commented 6 years ago

我真的很好奇为什么会出现这个问题

你会 debug 吗,你在 common.py 795 行前加一个 debug,看看那个文件为什么会被删除

note286 commented 6 years ago

终端存储的输出.txt

我加入了debug参数,你看看。你说在py里加我看一下怎么弄哈

iawia002 commented 6 years ago

这个日志看不出问题的,你会用 pdb 吗,单步调试应该可以发现问题的

note286 commented 6 years ago

@iawia002 不会用,我先用笨方法一点一点试试吧,我自己先排查一些问题。

Justsoos commented 6 years ago

you-get 日志不全的,这种文件丢失,应该拿系统日志来看看

note286 commented 6 years ago

@iawia002 首先非常抱歉,我再说一下我刚才都怎么处理的。

首先我先注释掉了os.remove(part),发现可以合并,然后文件都在,当然原始分段视频也在。

我觉得问题可能出在os.remove(part)上,然后我print出每一个part,发现根本没有合并后的文件啊,为什么会出现这种情况。

然后我不使用os.remove(part),使用os.system('rm "' + part + '"'),这回一切正常了,但是这不应该啊。

然后我重新换回os.remove(part),发现一切也正常了!!

最后我卸载掉lulu,然后重新安装之后再下载,发现一切正常!!

不知道这个灵异的事件是怎么回事,很困惑,再次感谢作者的耐心回复,非常感谢!浪费了您的宝贵时间。

真是个灵异的bug啊。

Justsoos commented 6 years ago

不是灵异 bug,我刚才也下了一下这个文件,也丢了。不过我是在 wsl 上弄得,没详细log。 我估计是这个 ts 在站放拆分的时候出错,导致合并失败。不过不常见,没兴趣挖掘了。说白了,m3u8 搞下载是比较恶心的事儿。