[twitch] Add support for mobile URLs (closes #16146)
This commit is contained in:
		| @@ -28,7 +28,7 @@ from ..utils import ( | ||||
|  | ||||
|  | ||||
| class TwitchBaseIE(InfoExtractor): | ||||
|     _VALID_URL_BASE = r'https?://(?:(?:www|go)\.)?twitch\.tv' | ||||
|     _VALID_URL_BASE = r'https?://(?:(?:www|go|m)\.)?twitch\.tv' | ||||
|  | ||||
|     _API_BASE = 'https://api.twitch.tv' | ||||
|     _USHER_BASE = 'https://usher.ttvnw.net' | ||||
| @@ -226,7 +226,7 @@ class TwitchVodIE(TwitchItemBaseIE): | ||||
|     _VALID_URL = r'''(?x) | ||||
|                     https?:// | ||||
|                         (?: | ||||
|                             (?:(?:www|go)\.)?twitch\.tv/(?:[^/]+/v|videos)/| | ||||
|                             (?:(?:www|go|m)\.)?twitch\.tv/(?:[^/]+/v|videos)/| | ||||
|                             player\.twitch\.tv/\?.*?\bvideo=v | ||||
|                         ) | ||||
|                         (?P<id>\d+) | ||||
| @@ -279,6 +279,9 @@ class TwitchVodIE(TwitchItemBaseIE): | ||||
|     }, { | ||||
|         'url': 'https://www.twitch.tv/videos/6528877', | ||||
|         'only_matching': True, | ||||
|     }, { | ||||
|         'url': 'https://m.twitch.tv/beagsandjam/v/247478721', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
| @@ -390,14 +393,17 @@ class TwitchProfileIE(TwitchPlaylistBaseIE): | ||||
|     _VALID_URL = r'%s/(?P<id>[^/]+)/profile/?(?:\#.*)?$' % TwitchBaseIE._VALID_URL_BASE | ||||
|     _PLAYLIST_TYPE = 'profile' | ||||
|  | ||||
|     _TEST = { | ||||
|     _TESTS = [{ | ||||
|         'url': 'http://www.twitch.tv/vanillatv/profile', | ||||
|         'info_dict': { | ||||
|             'id': 'vanillatv', | ||||
|             'title': 'VanillaTV', | ||||
|         }, | ||||
|         'playlist_mincount': 412, | ||||
|     } | ||||
|     }, { | ||||
|         'url': 'http://m.twitch.tv/vanillatv/profile', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|  | ||||
| class TwitchVideosBaseIE(TwitchPlaylistBaseIE): | ||||
| @@ -411,14 +417,17 @@ class TwitchAllVideosIE(TwitchVideosBaseIE): | ||||
|     _PLAYLIST_PATH = TwitchVideosBaseIE._PLAYLIST_PATH + 'archive,upload,highlight' | ||||
|     _PLAYLIST_TYPE = 'all videos' | ||||
|  | ||||
|     _TEST = { | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://www.twitch.tv/spamfish/videos/all', | ||||
|         'info_dict': { | ||||
|             'id': 'spamfish', | ||||
|             'title': 'Spamfish', | ||||
|         }, | ||||
|         'playlist_mincount': 869, | ||||
|     } | ||||
|     }, { | ||||
|         'url': 'https://m.twitch.tv/spamfish/videos/all', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|  | ||||
| class TwitchUploadsIE(TwitchVideosBaseIE): | ||||
| @@ -427,14 +436,17 @@ class TwitchUploadsIE(TwitchVideosBaseIE): | ||||
|     _PLAYLIST_PATH = TwitchVideosBaseIE._PLAYLIST_PATH + 'upload' | ||||
|     _PLAYLIST_TYPE = 'uploads' | ||||
|  | ||||
|     _TEST = { | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://www.twitch.tv/spamfish/videos/uploads', | ||||
|         'info_dict': { | ||||
|             'id': 'spamfish', | ||||
|             'title': 'Spamfish', | ||||
|         }, | ||||
|         'playlist_mincount': 0, | ||||
|     } | ||||
|     }, { | ||||
|         'url': 'https://m.twitch.tv/spamfish/videos/uploads', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|  | ||||
| class TwitchPastBroadcastsIE(TwitchVideosBaseIE): | ||||
| @@ -443,14 +455,17 @@ class TwitchPastBroadcastsIE(TwitchVideosBaseIE): | ||||
|     _PLAYLIST_PATH = TwitchVideosBaseIE._PLAYLIST_PATH + 'archive' | ||||
|     _PLAYLIST_TYPE = 'past broadcasts' | ||||
|  | ||||
|     _TEST = { | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://www.twitch.tv/spamfish/videos/past-broadcasts', | ||||
|         'info_dict': { | ||||
|             'id': 'spamfish', | ||||
|             'title': 'Spamfish', | ||||
|         }, | ||||
|         'playlist_mincount': 0, | ||||
|     } | ||||
|     }, { | ||||
|         'url': 'https://m.twitch.tv/spamfish/videos/past-broadcasts', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|  | ||||
| class TwitchHighlightsIE(TwitchVideosBaseIE): | ||||
| @@ -459,14 +474,17 @@ class TwitchHighlightsIE(TwitchVideosBaseIE): | ||||
|     _PLAYLIST_PATH = TwitchVideosBaseIE._PLAYLIST_PATH + 'highlight' | ||||
|     _PLAYLIST_TYPE = 'highlights' | ||||
|  | ||||
|     _TEST = { | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://www.twitch.tv/spamfish/videos/highlights', | ||||
|         'info_dict': { | ||||
|             'id': 'spamfish', | ||||
|             'title': 'Spamfish', | ||||
|         }, | ||||
|         'playlist_mincount': 805, | ||||
|     } | ||||
|     }, { | ||||
|         'url': 'https://m.twitch.tv/spamfish/videos/highlights', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|  | ||||
| class TwitchStreamIE(TwitchBaseIE): | ||||
| @@ -474,7 +492,7 @@ class TwitchStreamIE(TwitchBaseIE): | ||||
|     _VALID_URL = r'''(?x) | ||||
|                     https?:// | ||||
|                         (?: | ||||
|                             (?:(?:www|go)\.)?twitch\.tv/| | ||||
|                             (?:(?:www|go|m)\.)?twitch\.tv/| | ||||
|                             player\.twitch\.tv/\?.*?\bchannel= | ||||
|                         ) | ||||
|                         (?P<id>[^/#?]+) | ||||
| @@ -508,6 +526,9 @@ class TwitchStreamIE(TwitchBaseIE): | ||||
|     }, { | ||||
|         'url': 'https://go.twitch.tv/food', | ||||
|         'only_matching': True, | ||||
|     }, { | ||||
|         'url': 'https://m.twitch.tv/food', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|     @classmethod | ||||
|   | ||||
		Reference in New Issue
	
	Block a user