diff options
Diffstat (limited to 'yt_dlp/extractor/footyroom.py')
-rw-r--r-- | yt_dlp/extractor/footyroom.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/yt_dlp/extractor/footyroom.py b/yt_dlp/extractor/footyroom.py new file mode 100644 index 0000000..4a1316b --- /dev/null +++ b/yt_dlp/extractor/footyroom.py @@ -0,0 +1,53 @@ +from .common import InfoExtractor +from .streamable import StreamableIE + + +class FootyRoomIE(InfoExtractor): + _VALID_URL = r'https?://footyroom\.com/matches/(?P<id>\d+)' + _TESTS = [{ + 'url': 'http://footyroom.com/matches/79922154/hull-city-vs-chelsea/review', + 'info_dict': { + 'id': '79922154', + 'title': 'VIDEO Hull City 0 - 2 Chelsea', + }, + 'playlist_count': 2, + 'add_ie': [StreamableIE.ie_key()], + }, { + 'url': 'http://footyroom.com/matches/75817984/georgia-vs-germany/review', + 'info_dict': { + 'id': '75817984', + 'title': 'VIDEO Georgia 0 - 2 Germany', + }, + 'playlist_count': 1, + 'add_ie': ['Playwire'] + }] + + def _real_extract(self, url): + playlist_id = self._match_id(url) + + webpage = self._download_webpage(url, playlist_id) + + playlist = self._parse_json(self._search_regex( + r'DataStore\.media\s*=\s*([^;]+)', webpage, 'media data'), + playlist_id) + + playlist_title = self._og_search_title(webpage) + + entries = [] + for video in playlist: + payload = video.get('payload') + if not payload: + continue + playwire_url = self._html_search_regex( + r'data-config="([^"]+)"', payload, + 'playwire url', default=None) + if playwire_url: + entries.append(self.url_result(self._proto_relative_url( + playwire_url, 'http:'), 'Playwire')) + + streamable_url = StreamableIE._extract_url(payload) + if streamable_url: + entries.append(self.url_result( + streamable_url, StreamableIE.ie_key())) + + return self.playlist_result(entries, playlist_id, playlist_title) |