X-Git-Url: https://git.rapsys.eu/youtubedl/blobdiff_plain/11c4ce5827158ef3f817f2536e220d95e0576e6e..acbcfdb2cbb57cd2ab6a5d73341cd077fa71f6c9:/youtube_dl/extractor/__init__.py diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 2750fc8..18d8dbc 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -1,144 +1,46 @@ +from __future__ import unicode_literals -from .ard import ARDIE -from .arte import ArteTvIE -from .bandcamp import BandcampIE -from .bliptv import BlipTVIE, BlipTVUserIE -from .breakcom import BreakIE -from .collegehumor import CollegeHumorIE -from .comedycentral import ComedyCentralIE -from .cspan import CSpanIE -from .dailymotion import DailymotionIE -from .depositfiles import DepositFilesIE -from .eighttracks import EightTracksIE -from .escapist import EscapistIE -from .facebook import FacebookIE -from .flickr import FlickrIE -from .funnyordie import FunnyOrDieIE -from .gametrailers import GametrailersIE -from .generic import GenericIE -from .googleplus import GooglePlusIE -from .googlesearch import GoogleSearchIE -from .howcast import HowcastIE -from .hypem import HypemIE -from .ina import InaIE -from .infoq import InfoQIE -from .jukebox import JukeboxIE -from .justintv import JustinTVIE -from .keek import KeekIE -from .liveleak import LiveLeakIE -from .metacafe import MetacafeIE -from .mixcloud import MixcloudIE -from .mtv import MTVIE -from .myspass import MySpassIE -from .myvideo import MyVideoIE -from .nba import NBAIE -from .photobucket import PhotobucketIE -from .pornotube import PornotubeIE -from .rbmaradio import RBMARadioIE -from .redtube import RedTubeIE -from .soundcloud import SoundcloudIE, SoundcloudSetIE -from .spiegel import SpiegelIE -from .stanfordoc import StanfordOpenClassroomIE -from .statigram import StatigramIE -from .steam import SteamIE -from .teamcoco import TeamcocoIE -from .ted import TEDIE -from .tudou import TudouIE -from .tumblr import TumblrIE -from .ustream import UstreamIE -from .vbox7 import Vbox7IE -from .vevo import VevoIE -from .vimeo import VimeoIE -from .vine import VineIE -from .wimp import WimpIE -from .worldstarhiphop import WorldStarHipHopIE -from .xhamster import XHamsterIE -from .xnxx import XNXXIE -from .xvideos import XVideosIE -from .yahoo import YahooIE, YahooSearchIE -from .youjizz import YouJizzIE -from .youku import YoukuIE -from .youporn import YouPornIE -from .youtube import YoutubeIE, YoutubePlaylistIE, YoutubeSearchIE, YoutubeUserIE, YoutubeChannelIE -from .zdf import ZDFIE +try: + from .lazy_extractors import * + from .lazy_extractors import _ALL_CLASSES + _LAZY_LOADER = True +except ImportError: + _LAZY_LOADER = False + from .extractors import * + + _ALL_CLASSES = [ + klass + for name, klass in globals().items() + if name.endswith('IE') and name != 'GenericIE' + ] + _ALL_CLASSES.append(GenericIE) + + +def gen_extractor_classes(): + """ Return a list of supported extractors. + The order does matter; the first extractor matched is the one handling the URL. + """ + return _ALL_CLASSES def gen_extractors(): """ Return a list of an instance of every supported extractor. The order does matter; the first extractor matched is the one handling the URL. """ - return [ - YoutubePlaylistIE(), - YoutubeChannelIE(), - YoutubeUserIE(), - YoutubeSearchIE(), - YoutubeIE(), - MetacafeIE(), - DailymotionIE(), - GoogleSearchIE(), - PhotobucketIE(), - YahooIE(), - YahooSearchIE(), - DepositFilesIE(), - FacebookIE(), - BlipTVIE(), - BlipTVUserIE(), - VimeoIE(), - MyVideoIE(), - ComedyCentralIE(), - EscapistIE(), - CollegeHumorIE(), - XVideosIE(), - SoundcloudSetIE(), - SoundcloudIE(), - InfoQIE(), - MixcloudIE(), - StanfordOpenClassroomIE(), - MTVIE(), - YoukuIE(), - XNXXIE(), - YouJizzIE(), - PornotubeIE(), - YouPornIE(), - GooglePlusIE(), - ArteTvIE(), - NBAIE(), - WorldStarHipHopIE(), - JustinTVIE(), - FunnyOrDieIE(), - SteamIE(), - UstreamIE(), - RBMARadioIE(), - EightTracksIE(), - KeekIE(), - TEDIE(), - MySpassIE(), - SpiegelIE(), - LiveLeakIE(), - ARDIE(), - ZDFIE(), - TumblrIE(), - BandcampIE(), - RedTubeIE(), - InaIE(), - HowcastIE(), - VineIE(), - FlickrIE(), - TeamcocoIE(), - XHamsterIE(), - HypemIE(), - Vbox7IE(), - GametrailersIE(), - StatigramIE(), - BreakIE(), - VevoIE(), - JukeboxIE(), - TudouIE(), - CSpanIE(), - WimpIE(), - GenericIE() - ] + return [klass() for klass in gen_extractor_classes()] + + +def list_extractors(age_limit): + """ + Return a list of extractors that are suitable for the given age, + sorted by extractor ID. + """ + + return sorted( + filter(lambda ie: ie.is_suitable(age_limit), gen_extractors()), + key=lambda ie: ie.IE_NAME.lower()) + def get_info_extractor(ie_name): """Returns the info extractor class with the given ie_name""" - return globals()[ie_name+'IE'] + return globals()[ie_name + 'IE']