[extractor/oftv] Add extractors (#5134)

Closes #5017
Authored by: DoubleCouponDay
This commit is contained in:
sam 2022-11-05 23:13:05 +13:00 committed by GitHub
parent 2e30b46fe4
commit 0d113603ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 58 additions and 0 deletions

View file

@ -1254,6 +1254,10 @@ from .nzherald import NZHeraldIE
from .nzz import NZZIE from .nzz import NZZIE
from .odatv import OdaTVIE from .odatv import OdaTVIE
from .odnoklassniki import OdnoklassnikiIE from .odnoklassniki import OdnoklassnikiIE
from .oftv import (
OfTVIE,
OfTVPlaylistIE
)
from .oktoberfesttv import OktoberfestTVIE from .oktoberfesttv import OktoberfestTVIE
from .olympics import OlympicsReplayIE from .olympics import OlympicsReplayIE
from .on24 import On24IE from .on24 import On24IE

54
yt_dlp/extractor/oftv.py Normal file
View file

@ -0,0 +1,54 @@
from .common import InfoExtractor
from .zype import ZypeIE
from ..utils import traverse_obj
class OfTVIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?of.tv/video/(?P<id>\w+)'
_TESTS = [{
'url': 'https://of.tv/video/627d7d95b353db0001dadd1a',
'md5': 'cb9cd5db3bb9ee0d32bfd7e373d6ef0a',
'info_dict': {
'id': '627d7d95b353db0001dadd1a',
'ext': 'mp4',
'title': 'E1: Jacky vs Eric',
'thumbnail': r're:^https?://.*\.jpg',
'average_rating': 0,
'description': 'md5:dd16e3e2a8d27d922e7a989f85986853',
'display_id': '',
'duration': 1423,
'timestamp': 1652391300,
'upload_date': '20220512',
'view_count': 0,
'creator': 'This is Fire'
}
}]
def _real_extract(self, url):
video_id = self._match_id(url)
webpage = self._download_webpage(url, video_id)
info = next(ZypeIE.extract_from_webpage(self._downloader, url, webpage))
info['_type'] = 'url_transparent'
info['creator'] = self._search_regex(r'<a[^>]+class=\"creator-name\"[^>]+>([^<]+)', webpage, 'creator')
return info
class OfTVPlaylistIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?of.tv/creators/(?P<id>[a-zA-Z0-9-]+)/.?'
_TESTS = [{
'url': 'https://of.tv/creators/this-is-fire/',
'playlist_count': 8,
'info_dict': {
'id': 'this-is-fire'
}
}]
def _real_extract(self, url):
playlist_id = self._match_id(url)
webpage = self._download_webpage(url, playlist_id)
json_match = self._search_json(
r'var\s*remaining_videos\s*=', webpage, 'oftv playlists', playlist_id, contains_pattern=r'\[.+\]')
return self.playlist_from_matches(
traverse_obj(json_match, (..., 'discovery_url')), playlist_id)