import time import subprocess import argparse def command(cmd, timeout=60): ''' :param cmd: 執行命令cmd,返回命令輸出的內容。 :param timeout: 最長等待時間,單位:秒 :return: ''' p = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, shell=True) t_beginning = time.time() while True: if p.poll() is not None: break seconds_passed = time.time() - t_beginning if timeout and seconds_passed > timeout: p.terminate() time.sleep(0.1) return p.stdout.read().decode('utf-8') def run(): ''' :param cmd: :param timeout: 默認20秒 :return: 結束 you-get: Skipping /Users/yy/Movies/斗羅大陸_06.mp4: file already exists ''' params = argparse.ArgumentParser() params.add_argument('-u', '--url') params.add_argument('-o', '--output', default='/Users/yy/Movies/') params.add_argument('-t', '--timeout', default=20, type=int) args = params.parse_args() cmd = 'you-get {0} -o {1}'.format(args.url, args.output) timeout = args.timeout if args.url is None: print('請輸入下載地址') else: while True: result = command(cmd, timeout) print(result) res = result.find('exists') if res == -1: print('繼續下載') else: break if __name__ == "__main__": run()
使用python3.7,需要安裝you-get
pip3 install you-get
解決騰訊下載中斷問題,此方法可以下載完整視頻