mirror of https://github.com/yt-dlp/yt-dlp.git
Simplify suitable
This commit is contained in:
parent
afb5b55de6
commit
bdb3f7a769
100
youtube-dl
100
youtube-dl
|
@ -1026,9 +1026,8 @@ class InfoExtractor(object):
|
||||||
description: One-line video description.
|
description: One-line video description.
|
||||||
|
|
||||||
Subclasses of this one should re-define the _real_initialize() and
|
Subclasses of this one should re-define the _real_initialize() and
|
||||||
_real_extract() methods, as well as the suitable() static method.
|
_real_extract() methods and define a _VALID_URL regexp.
|
||||||
Probably, they should also be instantiated and added to the main
|
Probably, they should also be added to the list of extractors.
|
||||||
downloader.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_ready = False
|
_ready = False
|
||||||
|
@ -1039,10 +1038,9 @@ class InfoExtractor(object):
|
||||||
self._ready = False
|
self._ready = False
|
||||||
self.set_downloader(downloader)
|
self.set_downloader(downloader)
|
||||||
|
|
||||||
@staticmethod
|
def suitable(self, url):
|
||||||
def suitable(url):
|
|
||||||
"""Receives a URL and returns True if suitable for this IE."""
|
"""Receives a URL and returns True if suitable for this IE."""
|
||||||
return False
|
return re.match(self._VALID_URL, url) is not None
|
||||||
|
|
||||||
def initialize(self):
|
def initialize(self):
|
||||||
"""Initializes an instance (authentication, etc)."""
|
"""Initializes an instance (authentication, etc)."""
|
||||||
|
@ -1089,10 +1087,6 @@ class YoutubeIE(InfoExtractor):
|
||||||
'45': 'webm',
|
'45': 'webm',
|
||||||
}
|
}
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(YoutubeIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_lang(self):
|
def report_lang(self):
|
||||||
"""Report attempt to set language."""
|
"""Report attempt to set language."""
|
||||||
self._downloader.to_screen(u'[youtube] Setting language')
|
self._downloader.to_screen(u'[youtube] Setting language')
|
||||||
|
@ -1370,10 +1364,6 @@ class MetacafeIE(InfoExtractor):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
self._youtube_ie = youtube_ie
|
self._youtube_ie = youtube_ie
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(MetacafeIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_disclaimer(self):
|
def report_disclaimer(self):
|
||||||
"""Report disclaimer retrieval."""
|
"""Report disclaimer retrieval."""
|
||||||
self._downloader.to_screen(u'[metacafe] Retrieving disclaimer')
|
self._downloader.to_screen(u'[metacafe] Retrieving disclaimer')
|
||||||
|
@ -1511,10 +1501,6 @@ class DailymotionIE(InfoExtractor):
|
||||||
def __init__(self, downloader=None):
|
def __init__(self, downloader=None):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(DailymotionIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_download_webpage(self, video_id):
|
def report_download_webpage(self, video_id):
|
||||||
"""Report webpage download."""
|
"""Report webpage download."""
|
||||||
self._downloader.to_screen(u'[dailymotion] %s: Downloading webpage' % video_id)
|
self._downloader.to_screen(u'[dailymotion] %s: Downloading webpage' % video_id)
|
||||||
|
@ -1605,10 +1591,6 @@ class GoogleIE(InfoExtractor):
|
||||||
def __init__(self, downloader=None):
|
def __init__(self, downloader=None):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(GoogleIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_download_webpage(self, video_id):
|
def report_download_webpage(self, video_id):
|
||||||
"""Report webpage download."""
|
"""Report webpage download."""
|
||||||
self._downloader.to_screen(u'[video.google] %s: Downloading webpage' % video_id)
|
self._downloader.to_screen(u'[video.google] %s: Downloading webpage' % video_id)
|
||||||
|
@ -1715,10 +1697,6 @@ class PhotobucketIE(InfoExtractor):
|
||||||
def __init__(self, downloader=None):
|
def __init__(self, downloader=None):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(PhotobucketIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_download_webpage(self, video_id):
|
def report_download_webpage(self, video_id):
|
||||||
"""Report webpage download."""
|
"""Report webpage download."""
|
||||||
self._downloader.to_screen(u'[photobucket] %s: Downloading webpage' % video_id)
|
self._downloader.to_screen(u'[photobucket] %s: Downloading webpage' % video_id)
|
||||||
|
@ -1800,10 +1778,6 @@ class YahooIE(InfoExtractor):
|
||||||
def __init__(self, downloader=None):
|
def __init__(self, downloader=None):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(YahooIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_download_webpage(self, video_id):
|
def report_download_webpage(self, video_id):
|
||||||
"""Report webpage download."""
|
"""Report webpage download."""
|
||||||
self._downloader.to_screen(u'[video.yahoo] %s: Downloading webpage' % video_id)
|
self._downloader.to_screen(u'[video.yahoo] %s: Downloading webpage' % video_id)
|
||||||
|
@ -1956,10 +1930,6 @@ class VimeoIE(InfoExtractor):
|
||||||
def __init__(self, downloader=None):
|
def __init__(self, downloader=None):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(VimeoIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_download_webpage(self, video_id):
|
def report_download_webpage(self, video_id):
|
||||||
"""Report webpage download."""
|
"""Report webpage download."""
|
||||||
self._downloader.to_screen(u'[vimeo] %s: Downloading webpage' % video_id)
|
self._downloader.to_screen(u'[vimeo] %s: Downloading webpage' % video_id)
|
||||||
|
@ -2066,13 +2036,11 @@ class VimeoIE(InfoExtractor):
|
||||||
class GenericIE(InfoExtractor):
|
class GenericIE(InfoExtractor):
|
||||||
"""Generic last-resort information extractor."""
|
"""Generic last-resort information extractor."""
|
||||||
|
|
||||||
|
_VALID_URL = '.*'
|
||||||
|
|
||||||
def __init__(self, downloader=None):
|
def __init__(self, downloader=None):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return True
|
|
||||||
|
|
||||||
def report_download_webpage(self, video_id):
|
def report_download_webpage(self, video_id):
|
||||||
"""Report webpage download."""
|
"""Report webpage download."""
|
||||||
self._downloader.to_screen(u'WARNING: Falling back on generic information extractor.')
|
self._downloader.to_screen(u'WARNING: Falling back on generic information extractor.')
|
||||||
|
@ -2166,7 +2134,7 @@ class GenericIE(InfoExtractor):
|
||||||
|
|
||||||
class YoutubeSearchIE(InfoExtractor):
|
class YoutubeSearchIE(InfoExtractor):
|
||||||
"""Information Extractor for YouTube search queries."""
|
"""Information Extractor for YouTube search queries."""
|
||||||
_VALID_QUERY = r'ytsearch(\d+|all)?:[\s\S]+'
|
_VALID_URL = r'ytsearch(\d+|all)?:[\s\S]+'
|
||||||
_TEMPLATE_URL = 'http://www.youtube.com/results?search_query=%s&page=%s&gl=US&hl=en'
|
_TEMPLATE_URL = 'http://www.youtube.com/results?search_query=%s&page=%s&gl=US&hl=en'
|
||||||
_VIDEO_INDICATOR = r'href="/watch\?v=.+?"'
|
_VIDEO_INDICATOR = r'href="/watch\?v=.+?"'
|
||||||
_MORE_PAGES_INDICATOR = r'(?m)>\s*Next\s*</a>'
|
_MORE_PAGES_INDICATOR = r'(?m)>\s*Next\s*</a>'
|
||||||
|
@ -2177,10 +2145,6 @@ class YoutubeSearchIE(InfoExtractor):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
self._youtube_ie = youtube_ie
|
self._youtube_ie = youtube_ie
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(YoutubeSearchIE._VALID_QUERY, url) is not None)
|
|
||||||
|
|
||||||
def report_download_page(self, query, pagenum):
|
def report_download_page(self, query, pagenum):
|
||||||
"""Report attempt to download playlist page with given number."""
|
"""Report attempt to download playlist page with given number."""
|
||||||
query = query.decode(preferredencoding())
|
query = query.decode(preferredencoding())
|
||||||
|
@ -2190,7 +2154,7 @@ class YoutubeSearchIE(InfoExtractor):
|
||||||
self._youtube_ie.initialize()
|
self._youtube_ie.initialize()
|
||||||
|
|
||||||
def _real_extract(self, query):
|
def _real_extract(self, query):
|
||||||
mobj = re.match(self._VALID_QUERY, query)
|
mobj = re.match(self._VALID_URL, query)
|
||||||
if mobj is None:
|
if mobj is None:
|
||||||
self._downloader.trouble(u'ERROR: invalid search query "%s"' % query)
|
self._downloader.trouble(u'ERROR: invalid search query "%s"' % query)
|
||||||
return
|
return
|
||||||
|
@ -2258,7 +2222,7 @@ class YoutubeSearchIE(InfoExtractor):
|
||||||
|
|
||||||
class GoogleSearchIE(InfoExtractor):
|
class GoogleSearchIE(InfoExtractor):
|
||||||
"""Information Extractor for Google Video search queries."""
|
"""Information Extractor for Google Video search queries."""
|
||||||
_VALID_QUERY = r'gvsearch(\d+|all)?:[\s\S]+'
|
_VALID_URL = r'gvsearch(\d+|all)?:[\s\S]+'
|
||||||
_TEMPLATE_URL = 'http://video.google.com/videosearch?q=%s+site:video.google.com&start=%s&hl=en'
|
_TEMPLATE_URL = 'http://video.google.com/videosearch?q=%s+site:video.google.com&start=%s&hl=en'
|
||||||
_VIDEO_INDICATOR = r'videoplay\?docid=([^\&>]+)\&'
|
_VIDEO_INDICATOR = r'videoplay\?docid=([^\&>]+)\&'
|
||||||
_MORE_PAGES_INDICATOR = r'<span>Next</span>'
|
_MORE_PAGES_INDICATOR = r'<span>Next</span>'
|
||||||
|
@ -2269,10 +2233,6 @@ class GoogleSearchIE(InfoExtractor):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
self._google_ie = google_ie
|
self._google_ie = google_ie
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(GoogleSearchIE._VALID_QUERY, url) is not None)
|
|
||||||
|
|
||||||
def report_download_page(self, query, pagenum):
|
def report_download_page(self, query, pagenum):
|
||||||
"""Report attempt to download playlist page with given number."""
|
"""Report attempt to download playlist page with given number."""
|
||||||
query = query.decode(preferredencoding())
|
query = query.decode(preferredencoding())
|
||||||
|
@ -2282,7 +2242,7 @@ class GoogleSearchIE(InfoExtractor):
|
||||||
self._google_ie.initialize()
|
self._google_ie.initialize()
|
||||||
|
|
||||||
def _real_extract(self, query):
|
def _real_extract(self, query):
|
||||||
mobj = re.match(self._VALID_QUERY, query)
|
mobj = re.match(self._VALID_URL, query)
|
||||||
if mobj is None:
|
if mobj is None:
|
||||||
self._downloader.trouble(u'ERROR: invalid search query "%s"' % query)
|
self._downloader.trouble(u'ERROR: invalid search query "%s"' % query)
|
||||||
return
|
return
|
||||||
|
@ -2350,7 +2310,7 @@ class GoogleSearchIE(InfoExtractor):
|
||||||
|
|
||||||
class YahooSearchIE(InfoExtractor):
|
class YahooSearchIE(InfoExtractor):
|
||||||
"""Information Extractor for Yahoo! Video search queries."""
|
"""Information Extractor for Yahoo! Video search queries."""
|
||||||
_VALID_QUERY = r'yvsearch(\d+|all)?:[\s\S]+'
|
_VALID_URL = r'yvsearch(\d+|all)?:[\s\S]+'
|
||||||
_TEMPLATE_URL = 'http://video.yahoo.com/search/?p=%s&o=%s'
|
_TEMPLATE_URL = 'http://video.yahoo.com/search/?p=%s&o=%s'
|
||||||
_VIDEO_INDICATOR = r'href="http://video\.yahoo\.com/watch/([0-9]+/[0-9]+)"'
|
_VIDEO_INDICATOR = r'href="http://video\.yahoo\.com/watch/([0-9]+/[0-9]+)"'
|
||||||
_MORE_PAGES_INDICATOR = r'\s*Next'
|
_MORE_PAGES_INDICATOR = r'\s*Next'
|
||||||
|
@ -2361,10 +2321,6 @@ class YahooSearchIE(InfoExtractor):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
self._yahoo_ie = yahoo_ie
|
self._yahoo_ie = yahoo_ie
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(YahooSearchIE._VALID_QUERY, url) is not None)
|
|
||||||
|
|
||||||
def report_download_page(self, query, pagenum):
|
def report_download_page(self, query, pagenum):
|
||||||
"""Report attempt to download playlist page with given number."""
|
"""Report attempt to download playlist page with given number."""
|
||||||
query = query.decode(preferredencoding())
|
query = query.decode(preferredencoding())
|
||||||
|
@ -2374,7 +2330,7 @@ class YahooSearchIE(InfoExtractor):
|
||||||
self._yahoo_ie.initialize()
|
self._yahoo_ie.initialize()
|
||||||
|
|
||||||
def _real_extract(self, query):
|
def _real_extract(self, query):
|
||||||
mobj = re.match(self._VALID_QUERY, query)
|
mobj = re.match(self._VALID_URL, query)
|
||||||
if mobj is None:
|
if mobj is None:
|
||||||
self._downloader.trouble(u'ERROR: invalid search query "%s"' % query)
|
self._downloader.trouble(u'ERROR: invalid search query "%s"' % query)
|
||||||
return
|
return
|
||||||
|
@ -2453,10 +2409,6 @@ class YoutubePlaylistIE(InfoExtractor):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
self._youtube_ie = youtube_ie
|
self._youtube_ie = youtube_ie
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(YoutubePlaylistIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_download_page(self, playlist_id, pagenum):
|
def report_download_page(self, playlist_id, pagenum):
|
||||||
"""Report attempt to download playlist page with given number."""
|
"""Report attempt to download playlist page with given number."""
|
||||||
self._downloader.to_screen(u'[youtube] PL %s: Downloading page #%s' % (playlist_id, pagenum))
|
self._downloader.to_screen(u'[youtube] PL %s: Downloading page #%s' % (playlist_id, pagenum))
|
||||||
|
@ -2531,10 +2483,6 @@ class YoutubeUserIE(InfoExtractor):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
self._youtube_ie = youtube_ie
|
self._youtube_ie = youtube_ie
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(YoutubeUserIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_download_page(self, username, start_index):
|
def report_download_page(self, username, start_index):
|
||||||
"""Report attempt to download user page."""
|
"""Report attempt to download user page."""
|
||||||
self._downloader.to_screen(u'[youtube] user %s: Downloading video ids from %d to %d' %
|
self._downloader.to_screen(u'[youtube] user %s: Downloading video ids from %d to %d' %
|
||||||
|
@ -2616,10 +2564,6 @@ class DepositFilesIE(InfoExtractor):
|
||||||
def __init__(self, downloader=None):
|
def __init__(self, downloader=None):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(DepositFilesIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_download_webpage(self, file_id):
|
def report_download_webpage(self, file_id):
|
||||||
"""Report webpage download."""
|
"""Report webpage download."""
|
||||||
self._downloader.to_screen(u'[DepositFiles] %s: Downloading webpage' % file_id)
|
self._downloader.to_screen(u'[DepositFiles] %s: Downloading webpage' % file_id)
|
||||||
|
@ -2703,10 +2647,6 @@ class FacebookIE(InfoExtractor):
|
||||||
def __init__(self, downloader=None):
|
def __init__(self, downloader=None):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(FacebookIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def _reporter(self, message):
|
def _reporter(self, message):
|
||||||
"""Add header and report message."""
|
"""Add header and report message."""
|
||||||
self._downloader.to_screen(u'[facebook] %s' % message)
|
self._downloader.to_screen(u'[facebook] %s' % message)
|
||||||
|
@ -2913,10 +2853,6 @@ class BlipTVIE(InfoExtractor):
|
||||||
_VALID_URL = r'^(?:https?://)?(?:\w+\.)?blip\.tv(/.+)$'
|
_VALID_URL = r'^(?:https?://)?(?:\w+\.)?blip\.tv(/.+)$'
|
||||||
_URL_EXT = r'^.*\.([a-z0-9]+)$'
|
_URL_EXT = r'^.*\.([a-z0-9]+)$'
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(BlipTVIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_extraction(self, file_id):
|
def report_extraction(self, file_id):
|
||||||
"""Report information extraction."""
|
"""Report information extraction."""
|
||||||
self._downloader.to_screen(u'[blip.tv] %s: Extracting information' % file_id)
|
self._downloader.to_screen(u'[blip.tv] %s: Extracting information' % file_id)
|
||||||
|
@ -2991,10 +2927,6 @@ class MyVideoIE(InfoExtractor):
|
||||||
def __init__(self, downloader=None):
|
def __init__(self, downloader=None):
|
||||||
InfoExtractor.__init__(self, downloader)
|
InfoExtractor.__init__(self, downloader)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(MyVideoIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_download_webpage(self, video_id):
|
def report_download_webpage(self, video_id):
|
||||||
"""Report webpage download."""
|
"""Report webpage download."""
|
||||||
self._downloader.to_screen(u'[myvideo] %s: Downloading webpage' % video_id)
|
self._downloader.to_screen(u'[myvideo] %s: Downloading webpage' % video_id)
|
||||||
|
@ -3064,10 +2996,6 @@ class ComedyCentralIE(InfoExtractor):
|
||||||
|
|
||||||
_VALID_URL = r'^(:(?P<shortname>tds|thedailyshow|cr|colbert|colbertnation|colbertreport))|(https?://)?(www\.)(?P<showname>thedailyshow|colbertnation)\.com/full-episodes/(?P<episode>.*)$'
|
_VALID_URL = r'^(:(?P<shortname>tds|thedailyshow|cr|colbert|colbertnation|colbertreport))|(https?://)?(www\.)(?P<showname>thedailyshow|colbertnation)\.com/full-episodes/(?P<episode>.*)$'
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(ComedyCentralIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_extraction(self, episode_id):
|
def report_extraction(self, episode_id):
|
||||||
self._downloader.to_screen(u'[comedycentral] %s: Extracting information' % episode_id)
|
self._downloader.to_screen(u'[comedycentral] %s: Extracting information' % episode_id)
|
||||||
|
|
||||||
|
@ -3208,10 +3136,6 @@ class EscapistIE(InfoExtractor):
|
||||||
|
|
||||||
_VALID_URL = r'^(https?://)?(www\.)escapistmagazine.com/videos/view/(?P<showname>[^/]+)/(?P<episode>[^/?]+)[/?].*$'
|
_VALID_URL = r'^(https?://)?(www\.)escapistmagazine.com/videos/view/(?P<showname>[^/]+)/(?P<episode>[^/?]+)[/?].*$'
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def suitable(url):
|
|
||||||
return (re.match(EscapistIE._VALID_URL, url) is not None)
|
|
||||||
|
|
||||||
def report_extraction(self, showName):
|
def report_extraction(self, showName):
|
||||||
self._downloader.to_screen(u'[escapist] %s: Extracting information' % showName)
|
self._downloader.to_screen(u'[escapist] %s: Extracting information' % showName)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue