From a7d44de6da0a44e2034ecd1e997a738e94fe70e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20El=20Amri?= Date: Sat, 20 Jul 2019 20:02:48 +0200 Subject: [PATCH] Reverting the removal of TwitchVideoIE and TwitchChapterIE --- youtube_dl/extractor/extractors.py | 2 ++ youtube_dl/extractor/twitch.py | 39 ++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index a974eed55f..555fadfaf7 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -1231,6 +1231,8 @@ from .twentythreevideo import TwentyThreeVideoIE from .twitcasting import TwitCastingIE from .twitch import ( + TwitchVideoIE, + TwitchChapterIE, TwitchVodIE, TwitchProfileIE, TwitchAllVideosIE, diff --git a/youtube_dl/extractor/twitch.py b/youtube_dl/extractor/twitch.py index be90669d8d..bc8f32936d 100644 --- a/youtube_dl/extractor/twitch.py +++ b/youtube_dl/extractor/twitch.py @@ -205,6 +205,43 @@ def _real_extract(self, url): return self._extract_media(self._match_id(url)) +class TwitchVideoIE(TwitchItemBaseIE): + IE_NAME = 'twitch:video' + _VALID_URL = r'%s/[^/]+/b/(?P\d+)' % TwitchBaseIE._VALID_URL_BASE + _ITEM_TYPE = 'video' + _ITEM_SHORTCUT = 'a' + + _TEST = { + 'url': 'http://www.twitch.tv/riotgames/b/577357806', + 'info_dict': { + 'id': 'a577357806', + 'title': 'Worlds Semifinals - Star Horn Royal Club vs. OMG', + }, + 'playlist_mincount': 12, + 'skip': 'HTTP Error 404: Not Found', + } + + +class TwitchChapterIE(TwitchItemBaseIE): + IE_NAME = 'twitch:chapter' + _VALID_URL = r'%s/[^/]+/c/(?P\d+)' % TwitchBaseIE._VALID_URL_BASE + _ITEM_TYPE = 'chapter' + _ITEM_SHORTCUT = 'c' + + _TESTS = [{ + 'url': 'http://www.twitch.tv/acracingleague/c/5285812', + 'info_dict': { + 'id': 'c5285812', + 'title': 'ACRL Off Season - Sports Cars @ Nordschleife', + }, + 'playlist_mincount': 3, + 'skip': 'HTTP Error 404: Not Found', + }, { + 'url': 'http://www.twitch.tv/tsm_theoddone/c/2349361', + 'only_matching': True, + }] + + class TwitchVodIE(TwitchItemBaseIE): IE_NAME = 'twitch:vod' _VALID_URL = r'''(?x) @@ -510,6 +547,8 @@ class TwitchStreamIE(TwitchBaseIE): def suitable(cls, url): return (False if any(ie.suitable(url) for ie in ( + TwitchVideoIE, + TwitchChapterIE, TwitchVodIE, TwitchProfileIE, TwitchAllVideosIE,