def run(self): self._lock.acquire() common.any_download(url=self._url, info_only=False, output_dir=self._save_path, merge=True) self._lock.release()
def __init__(self, aid, parser='lxml'): self.filename = str(aid) self.video_url = None self.xml = True self.parser = parser self.aid = aid self.cid = None self.videolength = None self.finished = False self.error = False ensure_dir('dataset/' + self.filename) # self.get_cid(self.aid) try: self.set_url(self.aid) self.get_videoInfo(self.aid) if self.videolength >= 300: shutil.rmtree('dataset/' + self.filename) print('Delete', self.filename) return yg.any_download(self.video_url, output_dir='./dataset/' + str(self.filename), caption=False) self.get_danmu(self.cid) self.get_comment(self.aid) except (Exception) as e: print('something serious happened ->', ) print(e) self.error = True if self.error == True: self.finished = False shutil.rmtree('dataset/' + self.filename) print('Delete', self.filename) else: self.finished = True
def download_video_limit_size(url, output_dir='.', minsize=0, maxsize=float('inf')): # 限制视频大小方便处理 def get_info_from_url(url): # 这里的挂钩不适用于多线程 m, url = url_to_module(url) jdata = None _org_print = print def _new_print(*a, **k): nonlocal jdata try: jdata = json.loads(a[0]) except: pass builtins.print = _new_print m.download(url, merge=True, output_dir='.', info_only=False) builtins.print = _org_print return jdata with gt: you_get.common.json_output = True # 开启仅显示json文件 info = get_info_from_url(url) size = info['streams']['__default__']['size'] / (2**20) # 使用的单位是M(兆) if size and size > minsize and size < maxsize: you_get.common.json_output = False # 关闭仅显示json文件 any_download(url, output_dir=output_dir, merge=True, info_only=False) return info
def download_video(url, save_path): # 线程锁 # lock = Lock() # lock.acquire() common.any_download(url=url, info_only=False, output_dir=save_path, merge=True)
def you_get_download(url): if url.find('bilibili') != -1: if os.path.exists(cookies_file_path): you_get.load_cookies(cookies_file_path) you_get.any_download(url=url, info_only=False, output_dir=origin_video_dir, merge=True)
def download_url(url: str, itag: int, output_dir: Optional[str], on_complete: callable): s = StringIO() with redirect_stdout(s): any_download(url, stream_id=str(itag), output_dir=output_dir, merge=True) on_complete()
def downloadMgtvVideo(url, outputDir, streamId="ld"): args = { 'stream_id': streamId, 'output_dir': outputDir, 'merge': True, 'info_only': False, 'json_output': False, 'caption': True } any_download(url, **args)
def post(self): url = request.form['url'] sys.stdout.buffer = [] any_download(url, info_only=True, output_dir='.', merge=False) text_area = sys.stdout format_list = [] for s in text_area.buffer: for str in s: if re.findall(r'(\s*- format:.*)', str): format_list.append(str.strip()[9:].strip()) return {'format': format_list}
def get_url_options(url: str) -> Result: s = StringIO() with redirect_stdout(s): any_download(url, info_only=True, json_output=True) url_options = json.loads(s.getvalue()) title = url_options["title"] itags = [] for itag, data in url_options['streams'].items(): itags.append(_parse_itag(data)) itags.sort(key=lambda i: i.x * i.y, reverse=True) itags = [i for i in itags if i.x > 0 and i.y > 0] return Result(title=title, itags=itags)
def get_info(url): result = None try: result = you_get.any_download(url, json_output=True) except Exception as e: print(type(e), e) return result
def post(self): try: time1 = time.time() url = request.form['url'] sys.stdout.buffer = [] if 'format' in request.form: ft = request.form['format'] any_download(url, info_only=False, output_dir='.', merge=False, format=ft) else: any_download(url, info_only=False, output_dir='.', merge=False) text_area = sys.stdout api_list = '' for s in text_area.buffer: for str in s: if re.findall(r'(http://[^?]+)', str): api_list = str if 'time' in request.form: if request.form['time']: urls_json = [] video_list = api_list.replace("'", "").split(',') for index in range(len(video_list)): u = video_list[index].strip() video_json = json.loads(getVideoJsonInfo("%s" % u)) time_length = video_json['format']['duration'] file_size = video_json['format']['size'] urls_json.append({ "size": file_size, "seconds": time_length, "number": index, "url": u }) time2 = time.time() return {'url': urls_json, 'parse_time': time2 - time1} time2 = time.time() return {'url': api_list, 'parse_time': time2 - time1} except: return {'error': 'args error', 'code': 404}
from you_get import common common.any_download(url='https://v.youku.com/v_show/id_XNDgxMDk2Nzg0OA==.html', info_only=False, output_dir=r'video', merge=True)
# _*_ encoding:utf-8 _*_ """ pip install you-get https://you-get.org/ """ __author__ = "aaron.qiu" from you_get.common import any_download from you_get.__main__ import main_dev if __name__ == '__main__': any_download(url="https://www.youtube.com/watch?v=QuPiZ86EFhQ", output_dir="E:\\", merge="E:\\") # any_download(url="https://www.youtube.com/watch?v=jNQXAC9IVRw", output_dir="E:\\", merge="E:\\")
choose_hint = "请输入您要进行的操作序号:\n\n{}\n{}\n{}\n{}\n{}\n{}\n".format( "1、视频下载一条龙", "2、本地视频一条龙", "3、视频转音频", "4、音频分割", "5、字幕提取", "6、字幕拼接") print(choose_hint) choose_input = input() if choose_input == "1": print("请输入要下载的地址") while True: download_url = input() result = url_match_pattern.match(download_url) if result is not None: if download_url.find("bilibili") != -1: download_bilibli_video(download_url) break else: you_get.any_download(url=download_url, info_only=False, output_dir=video_before_dir) break else: print("URL格式错误,请输入正确的URL") # 扫描flv文件 flv_list = cp_utils.filter_file_type(video_before_dir, ".flv") print(flv_list) elif choose_input == "2": flv_list = cp_utils.filter_file_type(video_before_dir, ".flv") if len(flv_list) == 0: print("本地视频为空,请检查后重试:") else: print("请选择处理视频的序号:\n{}\n".format("=" * 64)) for index, value in enumerate(flv_list): print("{}.{}".format(index, value))
def download_one(self, url): common.any_download(url=url, info_only=False, output_dir=self.savepath, merge=True)