当前位置: 首页>>代码示例>>Python>>正文


Python youtube_dl.YoutubeDL类代码示例

本文整理汇总了Python中youtube_dl.YoutubeDL的典型用法代码示例。如果您正苦于以下问题:Python YoutubeDL类的具体用法?Python YoutubeDL怎么用?Python YoutubeDL使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了YoutubeDL类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: extract_info

 def extract_info(self):
     opts = {
         'simulate': True
     }
     opts.update(YTDL_PLAYER_OPTS)
     ydl = YoutubeDL(opts)
     return ydl.extract_info(self.resource)
开发者ID:best-coloc-ever,项目名称:globibot,代码行数:7,代码来源:player.py

示例2: DownloadProcess

class DownloadProcess(multiprocessing.Process):
    """
    Actual download process which calls youtube-dl. You should never need to interact with this directly.
    """

    def __init__(self, url, status_queue, output_writer):
        super(DownloadProcess, self).__init__()

        self.url = url
        self.status_queue = status_queue

        self.info = {}

        sys.stdout = output_writer
        sys.stderr = output_writer

        self.downloader = YoutubeDL({"progress_hooks": [self.update_status]})
        self.downloader.add_default_info_extractors()

    def update_status(self, status):
        self.status_queue.put(status)

    def run(self):
        self.info = self.downloader.extract_info(self.url)

    def stop(self):
        # Kill any child processes that may have spawned (e.g. ffmpeg)
        import psutil, signal

        s = psutil.Process()
        for child in s.children(recursive=True):
            child.send_signal(signal.SIGINT)
开发者ID:computerfreak,项目名称:video-archiver,代码行数:32,代码来源:archiver.py

示例3: YoutubeDLDownloader

class YoutubeDLDownloader(DownloaderBase):
    scheme = "ytdl"

    def __init__(self, extractor, output):
        DownloaderBase.__init__(self, extractor, output)

        options = {
            "format": self.config("format") or None,
            "ratelimit": text.parse_bytes(self.config("rate"), None),
            "retries": self.config("retries", extractor._retries),
            "socket_timeout": self.config("timeout", extractor._timeout),
            "nocheckcertificate": not self.config("verify", extractor._verify),
            "nopart": not self.part,
        }
        options.update(self.config("raw-options") or {})

        if self.config("logging", True):
            options["logger"] = self.log

        self.ytdl = YoutubeDL(options)

    def download(self, url, pathfmt):
        try:
            info_dict = self.ytdl.extract_info(url[5:], download=False)
        except Exception:
            return False

        if "entries" in info_dict:
            index = pathfmt.keywords.get("_ytdl_index")
            if index is None:
                return self._download_playlist(pathfmt, info_dict)
            else:
                info_dict = info_dict["entries"][index]
        return self._download_video(pathfmt, info_dict)

    def _download_video(self, pathfmt, info_dict):
        pathfmt.set_extension(info_dict["ext"])
        if pathfmt.exists():
            pathfmt.temppath = ""
            return True
        if self.part and self.partdir:
            pathfmt.temppath = os.path.join(
                self.partdir, pathfmt.filename)
        self.ytdl.params["outtmpl"] = pathfmt.temppath.replace("%", "%%")

        self.out.start(pathfmt.path)
        try:
            self.ytdl.process_info(info_dict)
        except Exception:
            self.log.debug("Traceback", exc_info=True)
            return False
        return True

    def _download_playlist(self, pathfmt, info_dict):
        pathfmt.set_extension("%(playlist_index)s.%(ext)s")
        self.ytdl.params["outtmpl"] = pathfmt.realpath

        for entry in info_dict["entries"]:
            self.ytdl.process_info(entry)
        return True
开发者ID:mikf,项目名称:gallery-dl,代码行数:60,代码来源:ytdl.py

示例4: YoutubeDLWrapper

class YoutubeDLWrapper(object):
    """ Used to wrap youtubedl import, since youtubedl currently overrides
    global HTMLParser.locatestarttagend regex with a different regex
    that doesn't quite work.

    This wrapper ensures that this regex is only set for YoutubeDL and unset
    otherwise
    """
    def __init__(self):
        import HTMLParser as htmlparser
        self.htmlparser = htmlparser

        self.orig_tagregex = htmlparser.locatestarttagend

        from youtube_dl import YoutubeDL as YoutubeDL

        self.ydl_tagregex = htmlparser.locatestarttagend

        htmlparser.locatestarttagend = self.orig_tagregex

        self.ydl = YoutubeDL(dict(simulate=True,
                                  youtube_include_dash_manifest=False))
        self.ydl.add_default_info_extractors()

    def extract_info(self, url):
        info = None
        try:
            self.htmlparser.locatestarttagend = self.ydl_tagregex
            info = self.ydl.extract_info(url)
        finally:
            self.htmlparser.locatestarttagend = self.orig_tagregex

        return info
开发者ID:akeprojecta,项目名称:pywb,代码行数:33,代码来源:live_rewrite_handler.py

示例5: test_info_json

    def test_info_json(self):
        expected = list(EXPECTED_ANNOTATIONS) #Two annotations could have the same text.
        ie = youtube_dl.extractor.YoutubeIE()
        ydl = YoutubeDL(params)
        ydl.add_info_extractor(ie)
        ydl.download([TEST_ID])
        self.assertTrue(os.path.exists(ANNOTATIONS_FILE))
        annoxml = None
        with io.open(ANNOTATIONS_FILE, 'r', encoding='utf-8') as annof:
                annoxml = xml.etree.ElementTree.parse(annof)
        self.assertTrue(annoxml is not None, 'Failed to parse annotations XML')
        root = annoxml.getroot()
        self.assertEqual(root.tag, 'document')
        annotationsTag = root.find('annotations')
        self.assertEqual(annotationsTag.tag, 'annotations')
        annotations = annotationsTag.findall('annotation')

        #Not all the annotations have TEXT children and the annotations are returned unsorted.
        for a in annotations:
                self.assertEqual(a.tag, 'annotation')
                if a.get('type') == 'text':
                        textTag = a.find('TEXT')
                        text = textTag.text
                        self.assertTrue(text in expected) #assertIn only added in python 2.7
                        #remove the first occurance, there could be more than one annotation with the same text
                        expected.remove(text)
        #We should have seen (and removed) all the expected annotation texts.
        self.assertEqual(len(expected), 0, 'Not all expected annotations were found.')
开发者ID:0m15,项目名称:youtube-dl,代码行数:28,代码来源:test_write_annotations.py

示例6: start_youtube_dl

 def start_youtube_dl(self):
     # Start downloading the specified url
     if self._output_path.get():
         output_path = self._output_path.get()
     else:
         try:
             output_path = os.path.dirname(os.path.abspath(__file__))
         except NameError:
             import sys
             output_path = os.path.dirname(os.path.abspath(sys.argv[0]))
     output_tmpl = output_path + '/%(title)s-%(id)s.%(ext)s'
     options = {
         'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio/best',
         'merge_output_format': 'mp4',
         'socket_timeout': '15',
         'progress_hooks': [self._logger.log],
         'ignoreerrors': True,
         'outtmpl': output_tmpl,
     }
     if self._extract_audio.get():
         options['format'] = 'bestaudio/best',
         options['postprocessors'] = [{
             'key': 'FFmpegExtractAudio',
             'preferredcodec': 'mp3',
             'preferredquality': '3',
         }]
     dl = YoutubeDL(options)
     status = dl.download([self._video_url.get()])
     if status != 0:
         mbox.showerror("youtube-dl error", "An error happened whilst processing your video(s)")
     else:
         mbox.showinfo("youtube-dl finished", "Your video(s) have been successfully processed")
开发者ID:pielambr,项目名称:ydlui,代码行数:32,代码来源:main.py

示例7: getVideoUrl

	def getVideoUrl(self):
		VIDEO_FMT_PRIORITY_MAP = {
			1 : '38', #MP4 Original (HD)
			2 : '37', #MP4 1080p (HD)
			3 : '22', #MP4 720p (HD)
			4 : '18', #MP4 360p
			5 : '35', #FLV 480p
			6 : '34', #FLV 360p
		}
		KEY_FORMAT_ID = u"format_id"
		KEY_URL = u"url"
		KEY_ENTRIES = u"entries"
		KEY_FORMATS = u"formats"

		video_url = None
		video_id = str(self.getTubeId())

		# Getting video webpage
		#URLs for YouTube video pages will change from the format http://www.youtube.com/watch?v=ylLzyHk54Z0 to http://www.youtube.com/watch#!v=ylLzyHk54Z0.
		watch_url = 'http://www.youtube.com/watch?v=%s' % video_id
		format_prio = "/".join(VIDEO_FMT_PRIORITY_MAP.itervalues())
		ytdl = YoutubeDL(params={"youtube_include_dash_manifest": False, "format" : format_prio})
		result = ytdl.extract_info(watch_url, download=False)
		if KEY_ENTRIES in result: # Can be a playlist or a list of videos
			entry = result[KEY_ENTRIES][0] #TODO handle properly
		else:# Just a video
			entry = result

		video_url = entry.get(KEY_URL)
		return str(video_url)
开发者ID:Haehnchen,项目名称:enigma2-plugins,代码行数:30,代码来源:MyTubeService.py

示例8: InfoParser

class InfoParser():
    def __init__(self, url=None, ydl_opt={}):
        self.__url = url
        self.__ydl = YoutubeDL(ydl_opt)
        self.__ydl_obj = YDLObject()

    @property
    def url(self):
        return self.__url

    @url.setter
    def url(self, url):
        self.__url = url

    @property
    def ydl_object(self):
        return self.__ydl_obj

    def generate_info(self):
        try:
            info_dict = self.__ydl.extract_info(self.__url, download=False)
            self.__ydl_obj.title = info_dict['title']
            self.__ydl_obj.url = self.__url
            for format in info_dict['formats']:
                filesize = format.get('filesize') if format.get('filesize') else format.get('filesize_approx')
                self.__ydl_obj.format_info.append({
                    'format_id': format['format'],
                    'extension': format['ext'],
                    'resolution': self.__ydl.format_resolution(format),
                    'filesize': format_bytes(filesize)
                })
            return True
        except Exception as e:
            print(e)
            return False
开发者ID:dita-dev-team,项目名称:youtube-dl-gui,代码行数:35,代码来源:info_parser.py

示例9: upload_video

def upload_video(video_info,access_token,youku_client_id):
    downloader = YoutubeDL()
    title = video_info[u"title"]
    file_name  = downloader.prepare_filename(video_info)
    tags = ["dassio",video_info["uploader"]]
    discription  = video_info["description"][0:1950]
    
    
    youku = YoukuUpload(youku_client_id,access_token,file_name)
    params = youku.prepare_video_params(title,tags,discription,'reproduced')
    try:
        if os.path.isfile(file_name + ".upload"):
            youku._read_upload_state_from_file()
            video_id = youku.upload(params)
        else:
            video_id = youku.upload(params)
    except:
        video_id = youku.upload(params)
    else:
        if video_id != "":
            try:
                os.remove(file_name)
            except:
                write_string("traceback.print_exc()")
            return video_id 
开发者ID:dassio,项目名称:youtube2youku,代码行数:25,代码来源:sync.py

示例10: get_video_url

def get_video_url(params):
    """Get video URL and start video player"""
    url_selected = ''
    all_datas_videos_quality = []
    all_datas_videos_path = []
    videos_html = utils.get_webcontent(params.video_url)
    videos_soup = bs(videos_html, 'html.parser')

    list_videos = videos_soup.find(
        'ul', class_='nav nav-tabs').find_all('a')

    for video in list_videos:
        if '#video-' in video.get('href'):
            # Find a better solution to strip
            all_datas_videos_quality.append(video.get_text().strip())
            # Get link
            value_jwplayer_id = video.get('data-jwplayer-id')
            # Case mp4
            if value_jwplayer_id != '':
                list_streams = videos_soup.find_all(
                    'div', class_='jwplayer')
                for stream in list_streams:
                    if stream.get('id') == value_jwplayer_id:
                        url = stream.get('data-source')
            # Cas Yt
            else:
                video_id = re.compile(
                    'youtube.com/embed/(.*?)\?').findall(videos_html)[0]
                url = resolver.get_stream_youtube(video_id, False)
            all_datas_videos_path.append(url)
        # Get link from FranceTV
        elif '#ftv-player-' in video.get('href'):
            # Find a better solution to strip
            all_datas_videos_quality.append(video.get_text().strip())
            # Get link
            value_ftvlayer_id = video.get('data-ftvplayer-id')
            list_streams = videos_soup.find_all(
                'iframe', class_='embed-responsive-item')
            for stream in list_streams:
                if stream.get('id') == value_ftvlayer_id:
                    url_id = stream.get('src')
            ydl = YoutubeDL()
            ydl.add_default_info_extractors()
            with ydl:
                result = ydl.extract_info(
                    url_id, download=False)
                for format_video in result['formats']:
                    url = format_video['url']
            all_datas_videos_path.append(url)

    if len(all_datas_videos_quality) > 1:
        seleted_item = common.sp.xbmcgui.Dialog().select(
            common.GETTEXT('Choose video quality'),
            all_datas_videos_quality)
        if seleted_item == -1:
            return ''
        url_selected = all_datas_videos_path[seleted_item]
        return url_selected
    else:
        return all_datas_videos_path[0]
开发者ID:Lunatixz,项目名称:repo-plugins,代码行数:60,代码来源:taratata.py

示例11: PyJizzParser

class PyJizzParser(object):
	def __init__(self, model):
		self.model = model
		self.model.parser = self
		self.ydl = YoutubeDL()
		self.ydl.add_default_info_extractors()
		
	def parseCategories(self):
		c = PornHubCategoryParser(self.model)
		c.run()
	
	def parseCategoryPage(self, category, page = 1):
		if page == 0 or page == 1:
			url = self.model.categories_url[category]
		else:
			url = "{site}{page_url}{page}".format(
				site = self.model.site,
				page_url = self.model.porn[category]['page_url'],
				page = page)
		print("page parser creating for page", page)
		p = PornHubPageParser(self.model, url, category, page)
		p.run()
		print("page parser exit for page", page)
		
	def getInfo(self, vkey):
		info = self.ydl.extract_info('http://www.pornhub.com/view_video.php?viewkey={v}'.format(v = vkey), download=False)
		return info
开发者ID:RussianBruteForce,项目名称:PyJizz,代码行数:27,代码来源:parser.py

示例12: get_info

def get_info(url):
    ydl = YoutubeDL({
        'forceurl': True,
        'quiet': True
    })

    ydl.add_default_info_extractors()
    return ydl.extract_info(url, download=False)
开发者ID:ceari,项目名称:mpd_youtube_proxy,代码行数:8,代码来源:mpd_youtube.py

示例13: test_proxy_with_idn

 def test_proxy_with_idn(self):
     ydl = YoutubeDL({
         'proxy': '127.0.0.1:{0}'.format(self.port),
     })
     url = 'http://中文.tw/'
     response = ydl.urlopen(url).read().decode('utf-8')
     # b'xn--fiq228c' is '中文'.encode('idna')
     self.assertEqual(response, 'normal: http://xn--fiq228c.tw/')
开发者ID:Jalakas,项目名称:youtube-dl,代码行数:8,代码来源:test_http.py

示例14: v_info_url

def v_info_url(url):
    url = urllib.parse.unquote(url)  # workaround
    format = request.forms.get('format', 'best')
    ytdl = YoutubeDL({'format': format, 'source_address': '0.0.0.0'})
    info = ytdl.extract_info(url, download=False)

    response.set_header('Access-Control-Allow-Origin', '*')
    return info
开发者ID:dominickm,项目名称:katy-player,代码行数:8,代码来源:server.py

示例15: get_youtube_info

def get_youtube_info(url):
    ydl = YoutubeDL()
    ydl.add_default_info_extractors()
    try:
        info = ydl.extract_info(url, download=False)
    except:
        return None
    return info
开发者ID:suBDavis,项目名称:hatchJukebox,代码行数:8,代码来源:jukebox.py


注:本文中的youtube_dl.YoutubeDL类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。