當前位置: 首頁>>代碼示例>>Python>>正文


Python pytube.YouTube方法代碼示例

本文整理匯總了Python中pytube.YouTube方法的典型用法代碼示例。如果您正苦於以下問題:Python pytube.YouTube方法的具體用法?Python pytube.YouTube怎麽用?Python pytube.YouTube使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在pytube的用法示例。


在下文中一共展示了pytube.YouTube方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: download_youtube

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def download_youtube(url, output):
    """Download YouTube videos.

    Args:
        url (str): YouTube video url.
        output (str): Download directory.

    Returns:
        bool: Return True if the video was downloaded and False if get an exception.

    """
    try:
        YouTube(url).streams.first().download(output)
        return True
    except Exception:
        return False 
開發者ID:lucasayres,項目名稱:python-tools,代碼行數:18,代碼來源:download_youtube.py

示例2: generate_search_url

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def generate_search_url(self, query):
        """
        Generates a search URL for YouTube for a given search query.

        Parameters
        ----------
        query: `str`
            The search query.

        Returns
        -------
        search_url: `str`
            A URL which corresponds to YouTube search results.
        """

        quoted_query = urllib.request.quote(query)
        search_url = self.base_search_url.format(quoted_query)
        return search_url 
開發者ID:ritiek,項目名稱:spotify-downloader,代碼行數:20,代碼來源:youtube.py

示例3: _fetch_search_results

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def _fetch_search_results(self, html, limit=10):
        videos_html = html.find_all(
            "div", {"class": "yt-lockup-dismissable yt-uix-tile"}
        )
        if videos_html:
            return self._fetch_search_results_from_html(videos_html, limit=limit)

        # Sometimes YouTube can go crazy and return JSON data instead
        # of an HTML response. Handle such cases.
        logger.debug("YouTube returned malformed HTML. Attempting to parse possible JSON data.")

        html = str(html)
        search_start = 'window["ytInitialData"] = '
        videos_json_start = html.find(search_start) + len(search_start)
        search_end = "}}]}}}}}}"
        videos_json_end = videos_json_start + html[videos_json_start:].find(search_end) + len(search_end)
        videos_json = html[videos_json_start:videos_json_end] + "}"
        try:
            videos_json = json.loads(videos_json)
        except json.decoder.JSONDecodeError:
            return []

        return self._fetch_search_results_from_json(videos_json, limit=limit) 
開發者ID:ritiek,項目名稱:spotify-downloader,代碼行數:25,代碼來源:youtube.py

示例4: from_url

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def from_url(self, url, retries=5):
        logger.debug('Fetching YouTube metadata for "{url}".'.format(url=url))
        try:
            content = pytube.YouTube(url)
        except KeyError:
            # Sometimes YouTube can return unexpected response, in such a case
            # retry a few times before finally failing.
            if retries > 0:
                retries -= 1
                logger.debug(
                    "YouTube returned an unexpected response for "
                    "`pytube.YouTube({url})`. Retries left: {retries}".format(
                        url=url, retries=retries
                    )
                )
                return self.from_url(url, retries=retries)
            else:
                raise
        else:
            return self.from_pytube_object(content) 
開發者ID:ritiek,項目名稱:spotify-downloader,代碼行數:22,代碼來源:youtube.py

示例5: download_video

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def download_video(url, start=0, stop=0):     
    def on_downloaded(stream, file_handle):
        # get filename of downloaded file (we can't set a output directory) and close the handle
        fn = file_handle.name
        file_handle.close()
        # load downloaded video
        clip = VideoFileClip(fn)
        
        # clip with start and stop
        if(start >= 0 and stop >= 0):
            clip = clip.subclip(start, stop)

        # store clipped video in our temporary folder
        clip.write_videofile("./temp/src_video.mp4", progress_bar=False, verbose=False)
        # remove original downloaded file
        os.remove(fn)
    
    # download youtube video from url
    yt = YouTube(url)
    # clip file after downlaod
    yt.register_on_complete_callback(on_downloaded)
    # get first "mp4" stream as explained here: https://github.com/nficano/pytube
    yt.streams.filter(subtype='mp4').first().download() 
開發者ID:DerWaldi,項目名稱:youtube-video-face-swap,代碼行數:25,代碼來源:1_get_faces_from_yt.py

示例6: download_video

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def download_video(url, start=0, stop=0):     
    def on_downloaded(stream, file_handle):
        # get filename of downloaded file (we can't set a output directory) and close the handle
        fn = file_handle.name
        file_handle.close()
        # load downloaded video into moviepy
        clip = VideoFileClip(fn)
        
        # clip with start and stop
        if(start >= 0 and stop >= 0):
            clip = clip.subclip(start, stop)

        # store clipped video in our temporary folder
        clip.write_videofile("./temp/src_video.mp4", progress_bar=False, verbose=False)
        # remove original downloaded file
        os.remove(fn)
    
    # download youtube video from url
    yt = YouTube(url)
    yt.register_on_complete_callback(on_downloaded)
    yt.streams.filter(subtype='mp4').first().download() 
開發者ID:DerWaldi,項目名稱:youtube-video-face-swap,代碼行數:23,代碼來源:3_youtube_face_swap.py

示例7: youtube_streams

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def youtube_streams(self, context):
        """
        This methods returns a list of YouTube stream attributes. Fields
        returned include itag, mime_type and res.

        Example:

        [['22', 'video/mp4', '720p']]

        :param pytube.YouTube context: An instance of the pytube.YouTube class.
        :rtype: list(list(str, str, str))
        """

        streams = []

        for stream in context.streams.all():
            streams.append([stream.itag, stream.mime_type, stream.resolution])

        return streams 
開發者ID:zerofox-oss,項目名稱:deepstar,代碼行數:21,代碼來源:video_command_line_route_handler.py

示例8: youtube_select

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def youtube_select(self, streams):
        """
        This method selects a YouTube stream to download.

        :param list(list(str, str, str)) streams: A list of YouTube stream
            attributes.
        :rtype: list(str, str, str)
        """

        selected = None

        for stream in streams:
            if stream[1] == 'video/mp4':
                if selected is None:
                    selected = stream
                else:
                    if stream[2]:
                        # It is assumed that resolution is formatted as '\d+p'.
                        if int(stream[2][0:-1]) > int(selected[2][0:-1]):
                            selected = stream

        return selected 
開發者ID:zerofox-oss,項目名稱:deepstar,代碼行數:24,代碼來源:video_command_line_route_handler.py

示例9: list_streams

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def list_streams(url, audio_only=False, proxies=None):
    if 'https' not in url:
        url = 'https://www.youtube.com/watch?v=%s' % url
    if proxies:
        video = YouTube(url, proxies=proxies)
    else:
        video = YouTube(url)
    print(f'{video.title}')
    for stream in video.streams.filter(only_audio=audio_only).all():
        if audio_only:
            print(f'ITAG: {stream.itag}, Codec: {stream.audio_codec}, '
                  f'ABR: {stream.abr}, File Type: {stream.mime_type.split("/")[1]}')
        else:
            if stream.video_codec is None:
                continue
            print(f'ITAG: {stream.itag}, Res: {stream.resolution}, FPS: {stream.fps}, '
                  f'Video Codec: {stream.video_codec}, Audio Codec: {stream.audio_codec}, '
                  f'File Type: {stream.mime_type.split("/")[1]}')

    print('\n\nTo download a specific stream, use the -i/--itag argument and provide the ITAG ID.') 
開發者ID:mraza007,項目名稱:videodownloader,代碼行數:22,代碼來源:script.py

示例10: parse_args

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def parse_args():
    parser = argparse.ArgumentParser(description='YouTube Video/Audio Downloader')
    parser.add_argument('-u', '--url', help='YouTube URL or YouTube Video ID to download', default=None)
    parser.add_argument('-l', '--list-streams', help='List available streams for this YouTube Video '
                                                     'instead of download. Use -a/--audio-only to list audio streams. '
                                                     'Download specific stream with the '
                                                     'itag ID and -i/--itag argument.',
                        action='store_true', default=False)
    parser.add_argument('-i', '--itag', help='Stream ITAG to download for given YouTube Video/ID. '
                                             'List streams with -l/--list-streams argument. '
                                             'If ITAG is not provided, default stream will be downloaded. '
                                             'Downloading with ITAG ignores -a/--audio-only.', type=int, default=None)
    parser.add_argument('-o', '--output-path', help='Output Directory Path', default=None)
    parser.add_argument('-f', '--filename', help='Override the output filename. Does not override file extension',
                        default=None)
    parser.add_argument('-p', '--proxy', help='Proxy to use. Ex http://xxx.xxx.xxx:8080 '
                                              'NOTE: You need https proxy for https URL!', default=None)
    parser.add_argument('-a', '--audio-only', help='Download Audio Only', action='store_true', default=False)

    parsed_args = parser.parse_args()
    if parsed_args.proxy:
        parsed_args.proxy = {parsed_args.proxy.split(':')[0]: parsed_args.proxy}

    return parsed_args 
開發者ID:mraza007,項目名稱:videodownloader,代碼行數:26,代碼來源:script.py

示例11: threaded_check_video

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def threaded_check_video(self):
        self.last_row = 0
        self.stream.set(0)
        [radio_button.destroy() for radio_button in self.stream_widgets]
        url = self.text_url.get()
        if 'https' not in url:
            url = 'https://www.youtube.com/watch?v=%s' % url
        try:
            if self.proxy.get() != '':
                self.video = YouTube(url, proxies={self.proxy.get().split(':')[0]: self.proxy.get()})
            else:
                self.video = YouTube(url)
            self.label_video_title['text'] = self.video.title
            self.streams = self.video.streams.filter(only_audio=self.audio_only.get()).all()

            for stream in self.streams:
                if self.audio_only.get():
                    text = f'Codec: {stream.audio_codec}, ' \
                           f'ABR: {stream.abr} ' \
                           f'File Type: {stream.mime_type.split("/")[1]}, Size: {stream.filesize // 1024} KB'
                else:
                    if stream.video_codec is None:
                        continue
                    text = f'Res: {stream.resolution}, FPS: {stream.fps},' \
                           f' Video Codec: {stream.video_codec}, Audio Codec: {stream.audio_codec}, ' \
                           f'File Type: {stream.mime_type.split("/")[1]}, Size: {stream.filesize // 1024} KB'
                radio_button = tk.Radiobutton(self.frame, text=text, variable=self.stream, value=stream.itag)
                self.last_row += 1
                radio_button.grid(row=self.last_row, column=0, columnspan=4)
                self.stream_widgets.append(radio_button)
        except PytubeError as e:
            messagebox.showerror('Something went wrong...', e)
        except RegexMatchError as e:
            messagebox.showerror('Something went wrong...', e)
        finally:
            self.btn_check_id['text'] = 'Check Video'
            self.btn_check_id.config(state=tk.NORMAL) 
開發者ID:mraza007,項目名稱:videodownloader,代碼行數:39,代碼來源:gui.py

示例12: search_all_files

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def search_all_files(search_url, youtube_object=YouTube()):
    search_url = search_url 
    urls = get_urls(search_url)
    yt = youtube_object
    for url in urls:
        try:
            print "downloading " + url
            yt.url = url
            video = yt.get('mp4', '720p')
            filename = yt.filename
            video.download()
            time.sleep(.1)
            cc = getyoutubecc.getyoutubecc(yt.video_id,'en')
            cc.writeSrtFile(filename + '.srt')
            time.sleep(.1)
        except:
            print "couldn't download " + url 
開發者ID:antiboredom,項目名稱:videogrep,代碼行數:19,代碼來源:video_downloader.py

示例13: getVideoFromYoutube

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def getVideoFromYoutube(self,text):
        '''
        Getting song url from YouTube
        :param text: name of song
        :return: list of results
        '''

        #logging.info(f"Finding")

        request = self.__url + str(text).replace(' ','+')
        response = requests.get(request, headers=self.headers)
        soup = BeautifulSoup(response.text,'lxml')
        self.__result = []

        for link in soup.findAll(attrs={'class': 'yt-uix-tile-link'}):
            self.__result.append(self.__host + link['href'])

        self.removeInvallidLinks()
        return self.__result 
開發者ID:artyshko,項目名稱:smd,代碼行數:21,代碼來源:youtube.py

示例14: getNameFromYoutube

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def getNameFromYoutube(self, url):

        response = requests.get(url, headers=self.headers)
        soup = BeautifulSoup(response.text,'lxml')

        _title = soup.find('title').text
        _title = str(_title).replace(' - YouTube', '')

        _result = []
        __name = None

        if not str(_title).find('-') > -1:

            for link in soup.findAll('meta', attrs={'property': 'og:video:tag'}):
                _result.append(link.get('content'))

            if len(_result) > 1:
                name = f"{_result[0]} - {_title}"
            else:
                name = _title
        else:
            name = _title

        return name 
開發者ID:artyshko,項目名稱:smd,代碼行數:26,代碼來源:youtube.py

示例15: search

# 需要導入模塊: import pytube [as 別名]
# 或者: from pytube import YouTube [as 別名]
def search(self, query, limit=10, retries=2):
        """
        Search and scrape YouTube to return a list of matching videos.

        Parameters
        ----------
        query: `str`
            The search query.

        limit: `int`
            Return only first n results.

        retries: `int`
            YouTube can sometimes return invalid response. Maximum
            number of retries to make in such case.

        Returns
        -------
        videos: An instance of :class:`spotdl.metadata.providers.youtube.YouTubeVideos`.
        """

        search_url = self.generate_search_url(query)
        logger.debug('Fetching YouTube results for "{}" at "{}".'.format(query, search_url))
        html = self._fetch_response_html(search_url)
        videos = self._fetch_search_results(html, limit=limit)
        to_retry = retries > 0 and self._is_server_side_invalid_response(videos, html)
        if to_retry:
            logger.debug(
                "Retrying since YouTube returned invalid response for search "
                "results. Retries left: {retries}.".format(retries=retries)
            )
            return self.search(query, limit=limit, retries=retries-1)
        videos = YouTubeVideos(videos)
        return videos 
開發者ID:ritiek,項目名稱:spotify-downloader,代碼行數:36,代碼來源:youtube.py


注:本文中的pytube.YouTube方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。