一直用you-get这个python写的开源软件下载一些视频网站的视频(主要是太烦不断插入的广告),最近看了点python,就对于自己觉得不够方便的地方,尝试修改。因为感觉他的github上提交修改建议不方便,所以就自娱自乐算了。
主要改动是在extractor.py这个文件。一是p(self, stream_id=None):这个函数,我加了句,目的是显示视频所带的字幕数。因为我只懂中文和英语,如果是其他语言的视频,如果没有字幕,下载了也没法看。所有有必要在下载前,先看下有没有字幕。
改动很简单,就是在这个函数的末尾,加了句:
print("Number of subtitles: " + str(len(self.caption_tracks)))
另外一个改动,本来运行时,加上-i 参数,就只显示可用视频流,码率,大小等信息,但不下载。这本来很好,下载前先看下,选择最清晰的视频流下载。问题是加上-i 参数后,如果想下载,就又要运行一次,去掉-i 参数,才可以下载。每运行一次,就会重新解析一下网页,这没有必要。于是改了下download(self, **kwargs)函数(天蓝色部分是改动内容)
isDownload = True stream_id = '' if 'json_output' in kwargs and kwargs['json_output']: json_output.output(self) elif 'info_only' in kwargs and kwargs['info_only']: if 'stream_id' in kwargs and kwargs['stream_id']: # Display the stream stream_id = kwargs['stream_id'] if 'index' not in kwargs: self.p(stream_id) else: self.p_i(stream_id) else: # Display all available streams if 'index' not in kwargs: self.p([]) else: stream_id = self.streams_sorted[0]['id'] if 'id' in self.streams_sorted[0] else self.streams_sorted[0]['itag'] self.p_i(stream_id) userInput = input("Choose stream id to download or ENTER to exit: ") if not userInput: isDownload = False else: stream_id = userInput if isDownload == True: if stream_id == '':
这样,下载前先加上 -i 参数,看下视频信息,然后输入视频的tag号就可以开始下载,否则直接回车退出。