我想了解yt(或者yt加载程序)是如何下载我的混合云组合的。
如果我运行python .\__main__.py https://www.mixcloud.com/DJJazzyJeff/magnificent-live-mix-tapes-20210520-234619/
脚本正在下载混合文件。如果第一次通过以下方式启动pdb:
python -m pdb .\__main__.py https://www.mixcloud.com/DJJazzyJeff/magnificent-live-mix-tapes-20210520-234619/
脚本无法找到yt_dlp模块。
使用pip3 install yt_dlp解决了这个问题。所以现在我可以使用n或next,但是我不知道脚本是如何获取json字符串的。相反,使用step提供了太多(无用的)信息,因此也没有帮助。
接下来,我尝试的是在脚本下载混合调试模式之前和之后直接使用pdb命令11,但这也没有帮助。
-> yt_dlp.main()
(Pdb) ll
1 #!/usr/bin/env python3
2 from __future__ import unicode_literals
3
4 # Execute with
5 # $ python yt_dlp/__main__.py (2.6+)
6 # $ python -m yt_dlp (2.7+)
7
8 import sys
9
10 if __package__ is None and not hasattr(sys, 'frozen'):
11 # direct call of __main__.py
12 import os.path
13 path = os.path.realpath(os.path.abspath(__file__))
14 sys.path.insert(0, os.path.dirname(os.path.dirname(path)))
15
16 import yt_dlp
17
18 if __name__ == '__main__':
19 -> yt_dlp.main()发布于 2021-11-16 17:09:09
在实际提取之前和之后,yt做了很多事情。因此,从一开始就设置断点将是乏味的。
首先,正常运行yt,并确定什么提取器负责下载。在本例中,您可以看到提取器名为mixcloud。
➤ yt-dlp https://www.mixcloud.com/DJJazzyJeff/magnificent-live-mix-tapes-20210520-234619
[mixcloud] DJJazzyJeff_magnificent-live-mix-tapes-20210520-234619: Downloading JSON metadata
[mixcloud] DJJazzyJeff_magnificent-live-mix-tapes-20210520-234619: Downloading m3u8 information
[mixcloud] DJJazzyJeff_magnificent-live-mix-tapes-20210520-234619: Downloading MPD manifest
ERROR: Interrupted by user现在,在代码库中搜索带有该IE_NAME的提取器。如果名称没有在任何地方显式定义,请查找具有相同名称但以IE结尾的类。在本例中,您将看到提取器是MixcloudIE
负责提取的代码位于该类的_real_extract和_real_initialize函数中(如果定义的话)。从这里开始,您尝试读取或使用pdb来遵循代码
https://stackoverflow.com/questions/69664709
复制相似问题