[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