-from .academicearth import AcademicEarthCourseIE
-from .addanime import AddAnimeIE
-from .anitube import AnitubeIE
-from .aparat import AparatIE
-from .appletrailers import AppleTrailersIE
-from .archiveorg import ArchiveOrgIE
-from .ard import ARDIE
-from .arte import (
- ArteTvIE,
- ArteTVPlus7IE,
- ArteTVCreativeIE,
- ArteTVFutureIE,
- ArteTVDDCIE,
-)
-from .auengine import AUEngineIE
-from .bambuser import BambuserIE, BambuserChannelIE
-from .bandcamp import BandcampIE, BandcampAlbumIE
-from .bbccouk import BBCCoUkIE
-from .blinkx import BlinkxIE
-from .bliptv import BlipTVIE, BlipTVUserIE
-from .bloomberg import BloombergIE
-from .breakcom import BreakIE
-from .brightcove import BrightcoveIE
-from .c56 import C56IE
-from .canalplus import CanalplusIE
-from .canalc2 import Canalc2IE
-from .cbs import CBSIE
-from .channel9 import Channel9IE
-from .chilloutzone import ChilloutzoneIE
-from .cinemassacre import CinemassacreIE
-from .clipfish import ClipfishIE
-from .cliphunter import CliphunterIE
-from .clipsyndicate import ClipsyndicateIE
-from .cmt import CMTIE
-from .cnn import (
- CNNIE,
- CNNBlogsIE,
-)
-from .collegehumor import CollegeHumorIE
-from .comedycentral import ComedyCentralIE, ComedyCentralShowsIE
-from .condenast import CondeNastIE
-from .criterion import CriterionIE
-from .crunchyroll import CrunchyrollIE
-from .cspan import CSpanIE
-from .d8 import D8IE
-from .dailymotion import (
- DailymotionIE,
- DailymotionPlaylistIE,
- DailymotionUserIE,
-)
-from .daum import DaumIE
-from .depositfiles import DepositFilesIE
-from .dotsub import DotsubIE
-from .dreisat import DreiSatIE
-from .defense import DefenseGouvFrIE
-from .discovery import DiscoveryIE
-from .dropbox import DropboxIE
-from .ebaumsworld import EbaumsWorldIE
-from .ehow import EHowIE
-from .eighttracks import EightTracksIE
-from .eitb import EitbIE
-from .elpais import ElPaisIE
-from .escapist import EscapistIE
-from .everyonesmixtape import EveryonesMixtapeIE
-from .exfm import ExfmIE
-from .extremetube import ExtremeTubeIE
-from .facebook import FacebookIE
-from .faz import FazIE
-from .firstpost import FirstpostIE
-from .firsttv import FirstTVIE
-from .fktv import (
- FKTVIE,
- FKTVPosteckeIE,
-)
-from .flickr import FlickrIE
-from .fourtube import FourTubeIE
-from .franceinter import FranceInterIE
-from .francetv import (
- PluzzIE,
- FranceTvInfoIE,
- FranceTVIE,
- GenerationQuoiIE,
- CultureboxIE,
-)
-from .freesound import FreesoundIE
-from .freespeech import FreespeechIE
-from .funnyordie import FunnyOrDieIE
-from .gamekings import GamekingsIE
-from .gamespot import GameSpotIE
-from .gametrailers import GametrailersIE
-from .generic import GenericIE
-from .googleplus import GooglePlusIE
-from .googlesearch import GoogleSearchIE
-from .hark import HarkIE
-from .helsinki import HelsinkiIE
-from .hotnewhiphop import HotNewHipHopIE
-from .howcast import HowcastIE
-from .huffpost import HuffPostIE
-from .hypem import HypemIE
-from .ign import IGNIE, OneUPIE
-from .imdb import (
- ImdbIE,
- ImdbListIE
-)
-from .ina import InaIE
-from .infoq import InfoQIE
-from .instagram import InstagramIE
-from .internetvideoarchive import InternetVideoArchiveIE
-from .iprima import IPrimaIE
-from .ivi import (
- IviIE,
- IviCompilationIE
-)
-from .jadorecettepub import JadoreCettePubIE
-from .jeuxvideo import JeuxVideoIE
-from .jukebox import JukeboxIE
-from .justintv import JustinTVIE
-from .jpopsukitv import JpopsukiIE
-from .kankan import KankanIE
-from .keezmovies import KeezMoviesIE
-from .khanacademy import KhanAcademyIE
-from .kickstarter import KickStarterIE
-from .keek import KeekIE
-from .kontrtube import KontrTubeIE
-from .la7 import LA7IE
-from .lifenews import LifeNewsIE
-from .liveleak import LiveLeakIE
-from .livestream import LivestreamIE, LivestreamOriginalIE
-from .lynda import (
- LyndaIE,
- LyndaCourseIE
-)
-from .m6 import M6IE
-from .macgamestore import MacGameStoreIE
-from .malemotion import MalemotionIE
-from .mdr import MDRIE
-from .metacafe import MetacafeIE
-from .metacritic import MetacriticIE
-from .mit import TechTVMITIE, MITIE
-from .mixcloud import MixcloudIE
-from .mpora import MporaIE
-from .mofosex import MofosexIE
-from .mooshare import MooshareIE
-from .mtv import (
- MTVIE,
- MTVIggyIE,
-)
-from .muzu import MuzuTVIE
-from .myspace import MySpaceIE
-from .myspass import MySpassIE
-from .myvideo import MyVideoIE
-from .naver import NaverIE
-from .nba import NBAIE
-from .nbc import NBCNewsIE
-from .ndr import NDRIE
-from .ndtv import NDTVIE
-from .newgrounds import NewgroundsIE
-from .nfb import NFBIE
-from .nhl import NHLIE, NHLVideocenterIE
-from .niconico import NiconicoIE
-from .ninegag import NineGagIE
-from .normalboots import NormalbootsIE
-from .novamov import NovamovIE
-from .nowness import NownessIE
-from .nowvideo import NowVideoIE
-from .ooyala import OoyalaIE
-from .orf import ORFIE
-from .pbs import PBSIE
-from .photobucket import PhotobucketIE
-from .podomatic import PodomaticIE
-from .pornhd import PornHdIE
-from .pornhub import PornHubIE
-from .pornotube import PornotubeIE
-from .pyvideo import PyvideoIE
-from .radiofrance import RadioFranceIE
-from .rbmaradio import RBMARadioIE
-from .redtube import RedTubeIE
-from .ringtv import RingTVIE
-from .ro220 import Ro220IE
-from .rottentomatoes import RottenTomatoesIE
-from .roxwel import RoxwelIE
-from .rtlnow import RTLnowIE
-from .rutube import (
- RutubeIE,
- RutubeChannelIE,
- RutubeMovieIE,
- RutubePersonIE,
-)
-from .servingsys import ServingSysIE
-from .sina import SinaIE
-from .slashdot import SlashdotIE
-from .slideshare import SlideshareIE
-from .smotri import (
- SmotriIE,
- SmotriCommunityIE,
- SmotriUserIE,
- SmotriBroadcastIE,
-)
-from .sohu import SohuIE
-from .soundcloud import SoundcloudIE, SoundcloudSetIE, SoundcloudUserIE
-from .southparkstudios import (
- SouthParkStudiosIE,
- SouthparkDeIE,
-)
-from .space import SpaceIE
-from .spankwire import SpankwireIE
-from .spiegel import SpiegelIE
-from .spike import SpikeIE
-from .stanfordoc import StanfordOpenClassroomIE
-from .statigram import StatigramIE
-from .steam import SteamIE
-from .streamcloud import StreamcloudIE
-from .streamcz import StreamCZIE
-from .syfy import SyfyIE
-from .sztvhu import SztvHuIE
-from .teamcoco import TeamcocoIE
-from .techtalks import TechTalksIE
-from .ted import TEDIE
-from .tf1 import TF1IE
-from .theplatform import ThePlatformIE
-from .thisav import ThisAVIE
-from .tinypic import TinyPicIE
-from .toutv import TouTvIE
-from .traileraddict import TrailerAddictIE
-from .trilulilu import TriluliluIE
-from .tube8 import Tube8IE
-from .tudou import TudouIE
-from .tumblr import TumblrIE
-from .tutv import TutvIE
-from .tvp import TvpIE
-from .unistra import UnistraIE
-from .ustream import UstreamIE, UstreamChannelIE
-from .vbox7 import Vbox7IE
-from .veehd import VeeHDIE
-from .veoh import VeohIE
-from .vesti import VestiIE
-from .vevo import VevoIE
-from .vice import ViceIE
-from .viddler import ViddlerIE
-from .videodetective import VideoDetectiveIE
-from .videofyme import VideofyMeIE
-from .videopremium import VideoPremiumIE
-from .vimeo import (
- VimeoIE,
- VimeoChannelIE,
- VimeoUserIE,
- VimeoAlbumIE,
- VimeoGroupsIE,
- VimeoReviewIE,
-)
-from .vine import VineIE
-from .viki import VikiIE
-from .vk import VKIE
-from .vube import VubeIE
-from .wat import WatIE
-from .weibo import WeiboIE
-from .wimp import WimpIE
-from .wistia import WistiaIE
-from .worldstarhiphop import WorldStarHipHopIE
-from .xhamster import XHamsterIE
-from .xnxx import XNXXIE
-from .xvideos import XVideosIE
-from .xtube import XTubeIE
-from .yahoo import (
- YahooIE,
- YahooNewsIE,
- YahooSearchIE,
-)
-from .youjizz import YouJizzIE
-from .youku import YoukuIE
-from .youporn import YouPornIE
-from .youtube import (
- YoutubeIE,
- YoutubePlaylistIE,
- YoutubeSearchIE,
- YoutubeSearchDateIE,
- YoutubeUserIE,
- YoutubeChannelIE,
- YoutubeShowIE,
- YoutubeSubscriptionsIE,
- YoutubeRecommendedIE,
- YoutubeTruncatedURLIE,
- YoutubeWatchLaterIE,
- YoutubeFavouritesIE,
- YoutubeHistoryIE,
- YoutubeTopListIE,
-)
-from .zdf import ZDFIE
+from __future__ import unicode_literals
+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)
+ _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 [klass() for klass in _ALL_CLASSES]
+ 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']