Esempio n. 1
0
 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()
Esempio n. 2
0
 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
Esempio n. 3
0
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
Esempio n. 4
0
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)
Esempio n. 6
0
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)
Esempio n. 8
0
 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}
Esempio n. 9
0
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)
Esempio n. 10
0
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
Esempio n. 11
0
    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}
Esempio n. 12
0
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)
Esempio n. 13
0
# _*_ 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:\\")
Esempio n. 14
0
 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))
Esempio n. 15
0
 def download_one(self, url):
     common.any_download(url=url,
                         info_only=False,
                         output_dir=self.savepath,
                         merge=True)