def _extract( query: str, ie_key: str = None, address: Union[ipaddress.IPv4Address, ipaddress.IPv6Address] = None, video: bool = False, ) -> dict: option = copy.copy(YTDLOption) if video: option["format"] = "(best)[protocol!=http_dash_segments]" if address: option["source_address"] = str(address) YoutubeDL = YoutubeDLClient(option) Data = YoutubeDL.extract_info(query, download=False, ie_key=ie_key) if not Data: raise NoSearchResults if "entries" in Data: if len(Data["entries"]) == 1: return Data["entries"][0] return Data["entries"] if not Data: raise NoSearchResults return Data
def _extract(query): option = { 'format': '(bestaudio[ext=opus]/bestaudio/best)[protocol!=http_dash_segments]', 'nocheckcertificate': True, 'ignoreerrors': True, 'no_warnings': True, 'default_search': 'auto', 'source_address': '0.0.0.0', 'logger': log, 'skip_download': True, 'writesubtitles': True } YoutubePlaylistMatch = YOUTUBE_PLAYLIST_ID_REGEX.match(query) if YoutubePlaylistMatch: if YoutubePlaylistMatch.group(1).startswith(('RD', 'UL', 'PU')): option['playlist_items'] = '1-25' # handle Youtube Mix Playlist option['playliststart'] = int(YoutubePlaylistMatch.group( 2)) if YoutubePlaylistMatch.group(2).isdigit() else 1 option['dump_single_json'] = True option['extract_flat'] = True else: option['noplaylist'] = True YoutubeDL = YoutubeDLClient(option) Data = YoutubeDL.extract_info(query, download=False) if 'entries' in Data: return Data['entries'] return Data
def _extract(query: str, video: bool = False) -> dict: option = copy.copy(YTDLOption) if video: option["format"] = "(best)[protocol!=http_dash_segments]" YoutubePlaylistMatch = YOUTUBE_PLAYLIST_ID_REGEX.match(query) if YoutubePlaylistMatch and not YoutubePlaylistMatch.group(1).startswith( ("RD", "UL", "PU")): option["playliststart"] = (int(YoutubePlaylistMatch.group(2)) if YoutubePlaylistMatch.group(2).isdigit() else 1) option["dump_single_json"] = True option["extract_flat"] = True query = "https://www.youtube.com/playlist?list=" + YoutubePlaylistMatch.group( 1) else: option["noplaylist"] = True YoutubeDL = YoutubeDLClient(option) Data = YoutubeDL.extract_info(query, download=False) if not Data: raise NoSearchResults if "entries" in Data: if len(Data["entries"]) == 1: return Data["entries"][0] return Data["entries"] if not Data: raise NoSearchResults return Data
def _clear_cache() -> None: option = { "ignoreerrors": True, "no_warnings": True, } YoutubeDL = YoutubeDLClient(option) YoutubeDL.cache.remove()
def _extract(query: str) -> Optional[dict]: option = { "format": "(bestaudio[ext=opus]/bestaudio/best)[protocol!=http_dash_segments]", "nocheckcertificate": True, "ignoreerrors": True, "no_warnings": True, "default_search": "auto", "source_address": "0.0.0.0", "logger": log, "skip_download": True, "writesubtitles": True, } YoutubePlaylistMatch = YOUTUBE_PLAYLIST_ID_REGEX.match(query) if YoutubePlaylistMatch and not YoutubePlaylistMatch.group(1).startswith( ("RD", "UL", "PU") ): option["playliststart"] = ( int(YoutubePlaylistMatch.group(2)) if YoutubePlaylistMatch.group(2).isdigit() else 1 ) option["dump_single_json"] = True option["extract_flat"] = True query = "https://www.youtube.com/playlist?list=" + YoutubePlaylistMatch.group(1) else: option["noplaylist"] = True YoutubeDL = YoutubeDLClient(option) Data = YoutubeDL.extract_info(query, download=False) if not Data: raise NoSearchResults if "entries" in Data: if len(Data["entries"]) == 1: return Data["entries"][0] return Data["entries"] return Data
def _clear_cache(): option = {"ignoreerrors": True, "no_warnings": True, "logger": log} YoutubeDL = YoutubeDLClient(option) YoutubeDL.cache.remove()