From 591667be173297b230253c0cca023eb50d3b5e7b Mon Sep 17 00:00:00 2001 From: clauderains Date: Wed, 6 Jan 2016 16:47:20 +0800 Subject: [PATCH 1/7] add qq video extractor --- youtube_dl/extractor/__init__.py | 57 ++++++++++++++++---------------- youtube_dl/extractor/qqvideo.py | 53 +++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 28 deletions(-) create mode 100644 youtube_dl/extractor/qqvideo.py diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 19cea5e99..989331bcb 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -18,11 +18,11 @@ from .adultswim import AdultSwimIE from .aftonbladet import AftonbladetIE from .airmozilla import AirMozillaIE from .aljazeera import AlJazeeraIE +from .allocine import AllocineIE from .alphaporno import AlphaPornoIE from .anitube import AnitubeIE from .anysex import AnySexIE from .aol import AolIE -from .allocine import AllocineIE from .aparat import AparatIE from .appleconnect import AppleConnectIE from .appletrailers import ( @@ -57,9 +57,9 @@ from .bbc import ( BBCCoUkArticleIE, BBCIE, ) +from .beatportpro import BeatportProIE from .beeg import BeegIE from .behindkink import BehindKinkIE -from .beatportpro import BeatportProIE from .bet import BetIE from .bild import BildIE from .bilibili import BiliBiliIE @@ -83,8 +83,8 @@ from .camdemy import ( CamdemyIE, CamdemyFolderIE ) -from .canalplus import CanalplusIE from .canalc2 import Canalc2IE +from .canalplus import CanalplusIE from .cbs import CBSIE from .cbsnews import CBSNewsIE from .cbssports import CBSSportsIE @@ -114,8 +114,8 @@ from .cnn import ( ) from .collegehumor import CollegeHumorIE from .collegerama import CollegeRamaIE -from .comedycentral import ComedyCentralIE, ComedyCentralShowsIE from .comcarcoff import ComCarCoffIE +from .comedycentral import ComedyCentralIE, ComedyCentralShowsIE from .commonmistakes import CommonMistakesIE, UnicodeBOMIE from .condenast import CondeNastIE from .cracked import CrackedIE @@ -146,9 +146,11 @@ from .dcn import ( ) from .dctp import DctpTvIE from .deezer import DeezerPlaylistIE +from .defense import DefenseGouvFrIE from .democracynow import DemocracynowIE from .dfb import DFBIE from .dhm import DHMIE +from .discovery import DiscoveryIE from .dotsub import DotsubIE from .douyutv import DouyuTVIE from .dplay import DPlayIE @@ -156,16 +158,14 @@ from .dramafever import ( DramaFeverIE, DramaFeverSeriesIE, ) -from .dreisat import DreiSatIE from .drbonanza import DRBonanzaIE +from .dreisat import DreiSatIE +from .dropbox import DropboxIE from .drtuber import DrTuberIE from .drtv import DRTVIE -from .dvtv import DVTVIE from .dump import DumpIE from .dumpert import DumpertIE -from .defense import DefenseGouvFrIE -from .discovery import DiscoveryIE -from .dropbox import DropboxIE +from .dvtv import DVTVIE from .eagleplatform import EaglePlatformIE from .ebaumsworld import EbaumsWorldIE from .echomsk import EchoMskIE @@ -303,17 +303,17 @@ from .izlesene import IzleseneIE from .jadorecettepub import JadoreCettePubIE from .jeuxvideo import JeuxVideoIE from .jove import JoveIE -from .jwplatform import JWPlatformIE from .jpopsukitv import JpopsukiIE +from .jwplatform import JWPlatformIE from .kaltura import KalturaIE from .kanalplay import KanalPlayIE from .kankan import KankanIE from .karaoketv import KaraoketvIE from .karrierevideos import KarriereVideosIE +from .keek import KeekIE from .keezmovies import KeezMoviesIE from .khanacademy import KhanAcademyIE from .kickstarter import KickStarterIE -from .keek import KeekIE from .kontrtube import KontrTubeIE from .krasview import KrasViewIE from .ku6 import Ku6IE @@ -371,7 +371,6 @@ from .mit import TechTVMITIE, MITIE, OCWMITIE from .mitele import MiTeleIE from .mixcloud import MixcloudIE from .mlb import MLBIE -from .mpora import MporaIE from .moevideo import MoeVideoIE from .mofosex import MofosexIE from .mojvideo import MojvideoIE @@ -382,6 +381,7 @@ from .motherless import MotherlessIE from .motorsport import MotorsportIE from .movieclips import MovieClipsIE from .moviezine import MoviezineIE +from .mpora import MporaIE from .mtv import ( MTVIE, MTVServicesEmbeddedIE, @@ -415,7 +415,6 @@ from .ndr import ( NJoyEmbedIE, ) from .ndtv import NDTVIE -from .netzkino import NetzkinoIE from .nerdcubed import NerdCubedFeedIE from .nerdist import NerdistIE from .neteasemusic import ( @@ -427,6 +426,7 @@ from .neteasemusic import ( NetEaseMusicProgramIE, NetEaseMusicDjRadioIE, ) +from .netzkino import NetzkinoIE from .newgrounds import NewgroundsIE from .newstube import NewstubeIE from .nextmedia import ( @@ -480,11 +480,11 @@ from .nrk import ( ) from .ntvde import NTVDeIE from .ntvru import NTVRuIE +from .nuvid import NuvidIE from .nytimes import ( NYTimesIE, NYTimesArticleIE, ) -from .nuvid import NuvidIE from .odnoklassniki import OdnoklassnikiIE from .oktoberfesttv import OktoberfestTVIE from .onionstudios import OnionStudiosIE @@ -508,8 +508,8 @@ from .philharmoniedeparis import PhilharmonieDeParisIE from .phoenix import PhoenixIE from .photobucket import PhotobucketIE from .pinkbike import PinkbikeIE -from .planetaplay import PlanetaPlayIE from .pladform import PladformIE +from .planetaplay import PlanetaPlayIE from .played import PlayedIE from .playfm import PlayFMIE from .playtvak import PlaytvakIE @@ -541,12 +541,13 @@ from .qqmusic import ( QQMusicToplistIE, QQMusicPlaylistIE, ) +from .qqvideo import QqVideoIE from .quickvid import QuickVidIE from .r7 import R7IE -from .radiode import RadioDeIE -from .radiojavan import RadioJavanIE from .radiobremen import RadioBremenIE +from .radiode import RadioDeIE from .radiofrance import RadioFranceIE +from .radiojavan import RadioJavanIE from .rai import ( RaiTVIE, RaiIE, @@ -564,8 +565,8 @@ from .rottentomatoes import RottenTomatoesIE from .roxwel import RoxwelIE from .rtbf import RTBFIE from .rte import RteIE, RteRadioIE -from .rtlnl import RtlNlIE from .rtl2 import RTL2IE +from .rtlnl import RtlNlIE from .rtp import RTPIE from .rts import RTSIE from .rtve import RTVEALaCartaIE, RTVELiveIE, RTVEInfantilIE @@ -580,11 +581,11 @@ from .rutube import ( ) from .rutv import RUTVIE from .ruutu import RuutuIE -from .sandia import SandiaIE from .safari import ( SafariIE, SafariCourseIE, ) +from .sandia import SandiaIE from .sapo import SapoIE from .savefrom import SaveFromIE from .sbs import SBSIE @@ -642,7 +643,6 @@ from .spankwire import SpankwireIE from .spiegel import SpiegelIE, SpiegelArticleIE from .spiegeltv import SpiegeltvIE from .spike import SpikeIE -from .stitcher import StitcherIE from .sport5 import Sport5IE from .sportbox import ( SportBoxIE, @@ -657,6 +657,7 @@ from .srmediathek import SRMediathekIE from .ssa import SSAIE from .stanfordoc import StanfordOpenClassroomIE from .steam import SteamIE +from .stitcher import StitcherIE from .streamcloud import StreamcloudIE from .streamcz import StreamCZIE from .streetvoice import StreetVoiceIE @@ -697,6 +698,10 @@ from .theplatform import ( from .thesixtyone import TheSixtyOneIE from .thisamericanlife import ThisAmericanLifeIE from .thisav import ThisAVIE +from .thvideo import ( + THVideoIE, + THVideoPlaylistIE +) from .tinypic import TinyPicIE from .tlc import TlcDeIE from .tmz import ( @@ -709,10 +714,6 @@ from .tnaflix import ( MovieFapIE, ) from .toggle import ToggleIE -from .thvideo import ( - THVideoIE, - THVideoPlaylistIE -) from .toutv import TouTvIE from .toypics import ToypicsUserIE, ToypicsIE from .traileraddict import TrailerAddictIE @@ -801,6 +802,10 @@ from .vidzi import VidziIE from .vier import VierIE, VierVideosIE from .viewster import ViewsterIE from .viidea import ViideaIE +from .viki import ( + VikiIE, + VikiChannelIE, +) from .vimeo import ( VimeoIE, VimeoAlbumIE, @@ -816,10 +821,6 @@ from .vine import ( VineIE, VineUserIE, ) -from .viki import ( - VikiIE, - VikiChannelIE, -) from .vk import ( VKIE, VKUserVideosIE, diff --git a/youtube_dl/extractor/qqvideo.py b/youtube_dl/extractor/qqvideo.py new file mode 100644 index 000000000..c6a0b5102 --- /dev/null +++ b/youtube_dl/extractor/qqvideo.py @@ -0,0 +1,53 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor + + +class QqVideoIE(InfoExtractor): + IE_NAME = 'qq' + IE_DESC = '腾讯' + # http://v.qq.com/page/9/n/6/9jWRYWGYvn6.html + # http://v.qq.com/cover/o/oy8cl3wkrebcv8h.html?vid=x001970x491 + _VALID_URL = r'http://v\.qq\.com/(?:cover/.+?\.html\?vid=(?P[\w\d]+)|page/.+?/(?P[\w\d]+)\.html)' + _TESTS = [{ + 'url': 'http://v.qq.com/page/9/n/6/9jWRYWGYvn6.html', + 'info_dict': { + 'id': '42', + 'ext': 'mp4', + 'title': '歼-20试飞63次 国防部指挥例行试验', + } + }, + { + 'url': 'http://v.qq.com/cover/o/oy8cl3wkrebcv8h.html?vid=x001970x491', + 'info_dict': { + 'id': '42', + 'ext': 'mp4', + 'title': '韩国青瓦台召开紧急会议 国防部加紧检查战备状态', + }, + } + ] + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + if (video_id is None): + video_id = mobj.group('vid') + + url_doc = self._download_xml( + 'http://vv.video.qq.com/geturl?vid=%s&otype=xml&platform=1' % video_id, + video_id, 'Downloading video metadata') + + webpage = self._download_webpage(url, video_id) + title = self._html_search_regex('(.+?)', webpage, "video title", '') + url = url_doc.find('./vd/vi/url').text + ext = self._search_regex('\.([\d\w]+)\?', url, '', '') + + return { + 'id': video_id, + 'title': title, + 'url': url, + 'ext': ext, + } From 31d407edf8e2af7efbc9c0f76001b5b574263d38 Mon Sep 17 00:00:00 2001 From: clauderains Date: Thu, 7 Jan 2016 12:10:43 +0800 Subject: [PATCH 2/7] fix title info of qq video extractor --- youtube_dl/extractor/qqvideo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/qqvideo.py b/youtube_dl/extractor/qqvideo.py index c6a0b5102..27cccf22b 100644 --- a/youtube_dl/extractor/qqvideo.py +++ b/youtube_dl/extractor/qqvideo.py @@ -41,7 +41,7 @@ class QqVideoIE(InfoExtractor): video_id, 'Downloading video metadata') webpage = self._download_webpage(url, video_id) - title = self._html_search_regex('(.+?)', webpage, "video title", '') + title = self._html_search_regex(']*>(.+?)', webpage, "video title", '') url = url_doc.find('./vd/vi/url').text ext = self._search_regex('\.([\d\w]+)\?', url, '', '') From 309019f700c451da711563524daffdb889626ce8 Mon Sep 17 00:00:00 2001 From: clauderains Date: Thu, 7 Jan 2016 13:35:02 +0800 Subject: [PATCH 3/7] fix title info of qq video extractor using getinfo interface --- youtube_dl/extractor/qqvideo.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/youtube_dl/extractor/qqvideo.py b/youtube_dl/extractor/qqvideo.py index 27cccf22b..3336b1b1e 100644 --- a/youtube_dl/extractor/qqvideo.py +++ b/youtube_dl/extractor/qqvideo.py @@ -36,12 +36,16 @@ class QqVideoIE(InfoExtractor): if (video_id is None): video_id = mobj.group('vid') + info_doc = self._download_xml( + 'http://vv.video.qq.com/getinfo?vid=%s&otype=xml&platform=1' % video_id, + video_id, 'fetch video metadata') + + title = info_doc.find('./vl/vi/ti').text + url_doc = self._download_xml( 'http://vv.video.qq.com/geturl?vid=%s&otype=xml&platform=1' % video_id, - video_id, 'Downloading video metadata') + video_id, 'fetch video url') - webpage = self._download_webpage(url, video_id) - title = self._html_search_regex(']*>(.+?)', webpage, "video title", '') url = url_doc.find('./vd/vi/url').text ext = self._search_regex('\.([\d\w]+)\?', url, '', '') From d15dbdb3570cdf1551bcadcadf69c84320eb71c5 Mon Sep 17 00:00:00 2001 From: clauderains Date: Thu, 7 Jan 2016 18:04:16 +0800 Subject: [PATCH 4/7] add ifeng extractor --- youtube_dl/extractor/__init__.py | 1 + youtube_dl/extractor/ifeng.py | 53 ++++++++++++++++++++++++++++++++ youtube_dl/extractor/qqvideo.py | 4 +-- 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 youtube_dl/extractor/ifeng.py diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 989331bcb..8c5fd0f29 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -271,6 +271,7 @@ from .howstuffworks import HowStuffWorksIE from .huffpost import HuffPostIE from .hypem import HypemIE from .iconosquare import IconosquareIE +from .ifeng import IfengIE from .ign import ( IGNIE, OneUPIE, diff --git a/youtube_dl/extractor/ifeng.py b/youtube_dl/extractor/ifeng.py new file mode 100644 index 000000000..7f0b41743 --- /dev/null +++ b/youtube_dl/extractor/ifeng.py @@ -0,0 +1,53 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor + + +class IfengIE(InfoExtractor): + IE_NAME = 'ifeng' + IE_DESC = '凤凰网' + # http://v.ifeng.com/mil/mainland/201601/01d92436-8afe-4af0-82a4-cef889018295.shtml + # http://v.ifeng.com/ent/mingxing/201601/01e29bc2-1e89-41ee-9a91-25d56e2b0740.shtml + _VALID_URL = r'http://v\.ifeng\.com/.+?/(?P[\w\-\d]+)\.shtml' + _TESTS = [{ + 'url': 'http://v.ifeng.com/mil/mainland/201601/01d92436-8afe-4af0-82a4-cef889018295.shtml', + 'info_dict': { + 'id': '01d92436-8afe-4af0-82a4-cef889018295', + 'ext': 'mp4', + 'title': '中国火箭军正式亮相 多支导弹旅携罕见导弹出镜', + } + }, + { + 'url': 'http://v.ifeng.com/ent/mingxing/201601/01e29bc2-1e89-41ee-9a91-25d56e2b0740.shtml', + 'info_dict': { + 'id': '01e29bc2-1e89-41ee-9a91-25d56e2b0740', + 'ext': 'mp4', + 'title': '陈羽凡锁骨骨折 盼早日康复', + }, + } + ] + + def _real_extract(self, url): + video_id = self._match_id(url); + + d = video_id[-2] + dd = video_id[-2:] + + info_doc = self._download_xml( + 'http://v.ifeng.com/video_info_new/%s/%s/%s.xml' % (d, dd, video_id), + video_id, 'fetch video metadata') + + title = info_doc.find('./item').get('Name') + + for element in info_doc.findall('./videos/video[@mediaType=\'mp4\']'): + url = element.get('VideoPlayUrl') + if element.get('type') == '500k': + break + + return { + 'id': video_id, + 'title': title, + 'url': url, + 'ext': 'mp4', + } diff --git a/youtube_dl/extractor/qqvideo.py b/youtube_dl/extractor/qqvideo.py index 3336b1b1e..76eeeb519 100644 --- a/youtube_dl/extractor/qqvideo.py +++ b/youtube_dl/extractor/qqvideo.py @@ -15,7 +15,7 @@ class QqVideoIE(InfoExtractor): _TESTS = [{ 'url': 'http://v.qq.com/page/9/n/6/9jWRYWGYvn6.html', 'info_dict': { - 'id': '42', + 'id': '9jWRYWGYvn6', 'ext': 'mp4', 'title': '歼-20试飞63次 国防部指挥例行试验', } @@ -23,7 +23,7 @@ class QqVideoIE(InfoExtractor): { 'url': 'http://v.qq.com/cover/o/oy8cl3wkrebcv8h.html?vid=x001970x491', 'info_dict': { - 'id': '42', + 'id': 'x001970x491', 'ext': 'mp4', 'title': '韩国青瓦台召开紧急会议 国防部加紧检查战备状态', }, From 663955c1d4fc674b60e68958b05553ce34a03f00 Mon Sep 17 00:00:00 2001 From: huangtiande Date: Thu, 7 Jan 2016 18:04:42 +0800 Subject: [PATCH 5/7] add ifeng extractor --- youtube_dl/extractor/ifeng.py | 1 - 1 file changed, 1 deletion(-) diff --git a/youtube_dl/extractor/ifeng.py b/youtube_dl/extractor/ifeng.py index 7f0b41743..394a36ccd 100644 --- a/youtube_dl/extractor/ifeng.py +++ b/youtube_dl/extractor/ifeng.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals from .common import InfoExtractor - class IfengIE(InfoExtractor): IE_NAME = 'ifeng' IE_DESC = '凤凰网' From d9cf64587dc6659c7016238e32144bc41130ad3b Mon Sep 17 00:00:00 2001 From: clauderains Date: Fri, 8 Jan 2016 09:14:52 +0800 Subject: [PATCH 6/7] remove ifeng to ifeng extractor branch --- youtube_dl/extractor/__init__.py | 1 - youtube_dl/extractor/ifeng.py | 52 -------------------------------- 2 files changed, 53 deletions(-) delete mode 100644 youtube_dl/extractor/ifeng.py diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 8c5fd0f29..989331bcb 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -271,7 +271,6 @@ from .howstuffworks import HowStuffWorksIE from .huffpost import HuffPostIE from .hypem import HypemIE from .iconosquare import IconosquareIE -from .ifeng import IfengIE from .ign import ( IGNIE, OneUPIE, diff --git a/youtube_dl/extractor/ifeng.py b/youtube_dl/extractor/ifeng.py deleted file mode 100644 index 394a36ccd..000000000 --- a/youtube_dl/extractor/ifeng.py +++ /dev/null @@ -1,52 +0,0 @@ -# coding: utf-8 -from __future__ import unicode_literals - -from .common import InfoExtractor - -class IfengIE(InfoExtractor): - IE_NAME = 'ifeng' - IE_DESC = '凤凰网' - # http://v.ifeng.com/mil/mainland/201601/01d92436-8afe-4af0-82a4-cef889018295.shtml - # http://v.ifeng.com/ent/mingxing/201601/01e29bc2-1e89-41ee-9a91-25d56e2b0740.shtml - _VALID_URL = r'http://v\.ifeng\.com/.+?/(?P[\w\-\d]+)\.shtml' - _TESTS = [{ - 'url': 'http://v.ifeng.com/mil/mainland/201601/01d92436-8afe-4af0-82a4-cef889018295.shtml', - 'info_dict': { - 'id': '01d92436-8afe-4af0-82a4-cef889018295', - 'ext': 'mp4', - 'title': '中国火箭军正式亮相 多支导弹旅携罕见导弹出镜', - } - }, - { - 'url': 'http://v.ifeng.com/ent/mingxing/201601/01e29bc2-1e89-41ee-9a91-25d56e2b0740.shtml', - 'info_dict': { - 'id': '01e29bc2-1e89-41ee-9a91-25d56e2b0740', - 'ext': 'mp4', - 'title': '陈羽凡锁骨骨折 盼早日康复', - }, - } - ] - - def _real_extract(self, url): - video_id = self._match_id(url); - - d = video_id[-2] - dd = video_id[-2:] - - info_doc = self._download_xml( - 'http://v.ifeng.com/video_info_new/%s/%s/%s.xml' % (d, dd, video_id), - video_id, 'fetch video metadata') - - title = info_doc.find('./item').get('Name') - - for element in info_doc.findall('./videos/video[@mediaType=\'mp4\']'): - url = element.get('VideoPlayUrl') - if element.get('type') == '500k': - break - - return { - 'id': video_id, - 'title': title, - 'url': url, - 'ext': 'mp4', - } From 8ae3aad9ecf05594c4d63962616604d76bfecd07 Mon Sep 17 00:00:00 2001 From: huangtiande Date: Fri, 8 Jan 2016 14:08:23 +0800 Subject: [PATCH 7/7] This PR should not contain changes unrelated to ifeng extractor. --- youtube_dl/extractor/__init__.py | 56 ++++++++++++++++---------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 989331bcb..91b916dfc 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -18,11 +18,11 @@ from .adultswim import AdultSwimIE from .aftonbladet import AftonbladetIE from .airmozilla import AirMozillaIE from .aljazeera import AlJazeeraIE -from .allocine import AllocineIE from .alphaporno import AlphaPornoIE from .anitube import AnitubeIE from .anysex import AnySexIE from .aol import AolIE +from .allocine import AllocineIE from .aparat import AparatIE from .appleconnect import AppleConnectIE from .appletrailers import ( @@ -57,9 +57,9 @@ from .bbc import ( BBCCoUkArticleIE, BBCIE, ) -from .beatportpro import BeatportProIE from .beeg import BeegIE from .behindkink import BehindKinkIE +from .beatportpro import BeatportProIE from .bet import BetIE from .bild import BildIE from .bilibili import BiliBiliIE @@ -83,8 +83,8 @@ from .camdemy import ( CamdemyIE, CamdemyFolderIE ) -from .canalc2 import Canalc2IE from .canalplus import CanalplusIE +from .canalc2 import Canalc2IE from .cbs import CBSIE from .cbsnews import CBSNewsIE from .cbssports import CBSSportsIE @@ -114,8 +114,8 @@ from .cnn import ( ) from .collegehumor import CollegeHumorIE from .collegerama import CollegeRamaIE -from .comcarcoff import ComCarCoffIE from .comedycentral import ComedyCentralIE, ComedyCentralShowsIE +from .comcarcoff import ComCarCoffIE from .commonmistakes import CommonMistakesIE, UnicodeBOMIE from .condenast import CondeNastIE from .cracked import CrackedIE @@ -146,11 +146,9 @@ from .dcn import ( ) from .dctp import DctpTvIE from .deezer import DeezerPlaylistIE -from .defense import DefenseGouvFrIE from .democracynow import DemocracynowIE from .dfb import DFBIE from .dhm import DHMIE -from .discovery import DiscoveryIE from .dotsub import DotsubIE from .douyutv import DouyuTVIE from .dplay import DPlayIE @@ -158,14 +156,16 @@ from .dramafever import ( DramaFeverIE, DramaFeverSeriesIE, ) -from .drbonanza import DRBonanzaIE from .dreisat import DreiSatIE -from .dropbox import DropboxIE +from .drbonanza import DRBonanzaIE from .drtuber import DrTuberIE from .drtv import DRTVIE +from .dvtv import DVTVIE from .dump import DumpIE from .dumpert import DumpertIE -from .dvtv import DVTVIE +from .defense import DefenseGouvFrIE +from .discovery import DiscoveryIE +from .dropbox import DropboxIE from .eagleplatform import EaglePlatformIE from .ebaumsworld import EbaumsWorldIE from .echomsk import EchoMskIE @@ -303,17 +303,17 @@ from .izlesene import IzleseneIE from .jadorecettepub import JadoreCettePubIE from .jeuxvideo import JeuxVideoIE from .jove import JoveIE -from .jpopsukitv import JpopsukiIE from .jwplatform import JWPlatformIE +from .jpopsukitv import JpopsukiIE from .kaltura import KalturaIE from .kanalplay import KanalPlayIE from .kankan import KankanIE from .karaoketv import KaraoketvIE from .karrierevideos import KarriereVideosIE -from .keek import KeekIE from .keezmovies import KeezMoviesIE from .khanacademy import KhanAcademyIE from .kickstarter import KickStarterIE +from .keek import KeekIE from .kontrtube import KontrTubeIE from .krasview import KrasViewIE from .ku6 import Ku6IE @@ -371,6 +371,7 @@ from .mit import TechTVMITIE, MITIE, OCWMITIE from .mitele import MiTeleIE from .mixcloud import MixcloudIE from .mlb import MLBIE +from .mpora import MporaIE from .moevideo import MoeVideoIE from .mofosex import MofosexIE from .mojvideo import MojvideoIE @@ -381,7 +382,6 @@ from .motherless import MotherlessIE from .motorsport import MotorsportIE from .movieclips import MovieClipsIE from .moviezine import MoviezineIE -from .mpora import MporaIE from .mtv import ( MTVIE, MTVServicesEmbeddedIE, @@ -415,6 +415,7 @@ from .ndr import ( NJoyEmbedIE, ) from .ndtv import NDTVIE +from .netzkino import NetzkinoIE from .nerdcubed import NerdCubedFeedIE from .nerdist import NerdistIE from .neteasemusic import ( @@ -426,7 +427,6 @@ from .neteasemusic import ( NetEaseMusicProgramIE, NetEaseMusicDjRadioIE, ) -from .netzkino import NetzkinoIE from .newgrounds import NewgroundsIE from .newstube import NewstubeIE from .nextmedia import ( @@ -480,11 +480,11 @@ from .nrk import ( ) from .ntvde import NTVDeIE from .ntvru import NTVRuIE -from .nuvid import NuvidIE from .nytimes import ( NYTimesIE, NYTimesArticleIE, ) +from .nuvid import NuvidIE from .odnoklassniki import OdnoklassnikiIE from .oktoberfesttv import OktoberfestTVIE from .onionstudios import OnionStudiosIE @@ -508,8 +508,8 @@ from .philharmoniedeparis import PhilharmonieDeParisIE from .phoenix import PhoenixIE from .photobucket import PhotobucketIE from .pinkbike import PinkbikeIE -from .pladform import PladformIE from .planetaplay import PlanetaPlayIE +from .pladform import PladformIE from .played import PlayedIE from .playfm import PlayFMIE from .playtvak import PlaytvakIE @@ -544,10 +544,10 @@ from .qqmusic import ( from .qqvideo import QqVideoIE from .quickvid import QuickVidIE from .r7 import R7IE -from .radiobremen import RadioBremenIE from .radiode import RadioDeIE -from .radiofrance import RadioFranceIE from .radiojavan import RadioJavanIE +from .radiobremen import RadioBremenIE +from .radiofrance import RadioFranceIE from .rai import ( RaiTVIE, RaiIE, @@ -565,8 +565,8 @@ from .rottentomatoes import RottenTomatoesIE from .roxwel import RoxwelIE from .rtbf import RTBFIE from .rte import RteIE, RteRadioIE -from .rtl2 import RTL2IE from .rtlnl import RtlNlIE +from .rtl2 import RTL2IE from .rtp import RTPIE from .rts import RTSIE from .rtve import RTVEALaCartaIE, RTVELiveIE, RTVEInfantilIE @@ -581,11 +581,11 @@ from .rutube import ( ) from .rutv import RUTVIE from .ruutu import RuutuIE +from .sandia import SandiaIE from .safari import ( SafariIE, SafariCourseIE, ) -from .sandia import SandiaIE from .sapo import SapoIE from .savefrom import SaveFromIE from .sbs import SBSIE @@ -643,6 +643,7 @@ from .spankwire import SpankwireIE from .spiegel import SpiegelIE, SpiegelArticleIE from .spiegeltv import SpiegeltvIE from .spike import SpikeIE +from .stitcher import StitcherIE from .sport5 import Sport5IE from .sportbox import ( SportBoxIE, @@ -657,7 +658,6 @@ from .srmediathek import SRMediathekIE from .ssa import SSAIE from .stanfordoc import StanfordOpenClassroomIE from .steam import SteamIE -from .stitcher import StitcherIE from .streamcloud import StreamcloudIE from .streamcz import StreamCZIE from .streetvoice import StreetVoiceIE @@ -698,10 +698,6 @@ from .theplatform import ( from .thesixtyone import TheSixtyOneIE from .thisamericanlife import ThisAmericanLifeIE from .thisav import ThisAVIE -from .thvideo import ( - THVideoIE, - THVideoPlaylistIE -) from .tinypic import TinyPicIE from .tlc import TlcDeIE from .tmz import ( @@ -714,6 +710,10 @@ from .tnaflix import ( MovieFapIE, ) from .toggle import ToggleIE +from .thvideo import ( + THVideoIE, + THVideoPlaylistIE +) from .toutv import TouTvIE from .toypics import ToypicsUserIE, ToypicsIE from .traileraddict import TrailerAddictIE @@ -802,10 +802,6 @@ from .vidzi import VidziIE from .vier import VierIE, VierVideosIE from .viewster import ViewsterIE from .viidea import ViideaIE -from .viki import ( - VikiIE, - VikiChannelIE, -) from .vimeo import ( VimeoIE, VimeoAlbumIE, @@ -821,6 +817,10 @@ from .vine import ( VineIE, VineUserIE, ) +from .viki import ( + VikiIE, + VikiChannelIE, +) from .vk import ( VKIE, VKUserVideosIE,