mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-30 16:00:45 -05:00
[nrktv] Add support for new episode URL schema (closes #16909)
This commit is contained in:
parent
0685d9727b
commit
79fd7320e2
2 changed files with 38 additions and 1 deletions
|
@ -768,6 +768,7 @@
|
||||||
NRKSkoleIE,
|
NRKSkoleIE,
|
||||||
NRKTVIE,
|
NRKTVIE,
|
||||||
NRKTVDirekteIE,
|
NRKTVDirekteIE,
|
||||||
|
NRKTVEpisodeIE,
|
||||||
NRKTVEpisodesIE,
|
NRKTVEpisodesIE,
|
||||||
NRKTVSeriesIE,
|
NRKTVSeriesIE,
|
||||||
)
|
)
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
int_or_none,
|
int_or_none,
|
||||||
|
JSON_LD_RE,
|
||||||
parse_age_limit,
|
parse_age_limit,
|
||||||
parse_duration,
|
parse_duration,
|
||||||
)
|
)
|
||||||
|
@ -359,6 +360,40 @@ class NRKTVIE(NRKBaseIE):
|
||||||
}]
|
}]
|
||||||
|
|
||||||
|
|
||||||
|
class NRKTVEpisodeIE(InfoExtractor):
|
||||||
|
_VALID_URL = r'https?://tv\.nrk\.no/serie/(?P<id>[^/]+/sesong/\d+/episode/\d+)'
|
||||||
|
_TEST = {
|
||||||
|
'url': 'https://tv.nrk.no/serie/backstage/sesong/1/episode/8',
|
||||||
|
'info_dict': {
|
||||||
|
'id': 'MSUI14000816AA',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'Backstage 8:30',
|
||||||
|
'description': 'md5:de6ca5d5a2d56849e4021f2bf2850df4',
|
||||||
|
'duration': 1320,
|
||||||
|
'series': 'Backstage',
|
||||||
|
'season_number': 1,
|
||||||
|
'episode_number': 8,
|
||||||
|
'episode': '8:30',
|
||||||
|
},
|
||||||
|
'params': {
|
||||||
|
'skip_download': True,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
def _real_extract(self, url):
|
||||||
|
display_id = self._match_id(url)
|
||||||
|
|
||||||
|
webpage = self._download_webpage(url, display_id)
|
||||||
|
|
||||||
|
nrk_id = self._parse_json(
|
||||||
|
self._search_regex(JSON_LD_RE, webpage, 'JSON-LD', group='json_ld'),
|
||||||
|
display_id)['@id']
|
||||||
|
|
||||||
|
assert re.match(NRKTVIE._EPISODE_RE, nrk_id)
|
||||||
|
return self.url_result(
|
||||||
|
'nrk:%s' % nrk_id, ie=NRKIE.ie_key(), video_id=nrk_id)
|
||||||
|
|
||||||
|
|
||||||
class NRKTVDirekteIE(NRKTVIE):
|
class NRKTVDirekteIE(NRKTVIE):
|
||||||
IE_DESC = 'NRK TV Direkte and NRK Radio Direkte'
|
IE_DESC = 'NRK TV Direkte and NRK Radio Direkte'
|
||||||
_VALID_URL = r'https?://(?:tv|radio)\.nrk\.no/direkte/(?P<id>[^/?#&]+)'
|
_VALID_URL = r'https?://(?:tv|radio)\.nrk\.no/direkte/(?P<id>[^/?#&]+)'
|
||||||
|
@ -470,7 +505,8 @@ class NRKTVSeriesIE(InfoExtractor):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def suitable(cls, url):
|
def suitable(cls, url):
|
||||||
return False if NRKTVIE.suitable(url) else super(NRKTVSeriesIE, cls).suitable(url)
|
return (False if NRKTVIE.suitable(url) or NRKTVEpisodeIE.suitable(url)
|
||||||
|
else super(NRKTVSeriesIE, cls).suitable(url))
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
series_id = self._match_id(url)
|
series_id = self._match_id(url)
|
||||||
|
|
Loading…
Reference in a new issue