# coding: utf-8 from __future__ import unicode_literals import re from .common import InfoExtractor from ..utils import ( int_or_none, try_get, unified_strdate, unified_timestamp, ) class P3IE(InfoExtractor): _VALID_URL = r'https?://(?P[a-z]+)\.p3\.no/(episoder/sesong-(?P\d+)/episode-(?P\d+)/?|\d{4}/\d{2}/\d{2})/(?P[^/]*)/?' _TESTS = [ { 'url': 'https://blank.p3.no/2019/03/17/sees-24-mars/', 'info_dict': { 'id': 'blank-sees-24-mars', 'title': 'Sees 24. mars', 'ext': 'mp4', 'upload_date': '20190317', 'description': 'Zehra er 19 år. Hun bor hjemme og studerer farmasi på OsloMet med bestevenninnen Amina.', 'timestamp': 1552820100, }, 'params': { 'skip_download': True, }, }, { 'url': 'http://skam.p3.no/2017/06/24/kjaere-sana/', 'info_dict': { 'id': 'skam-kjaere-sana', 'title': 'Kjære Sana', 'ext': 'mp4', 'upload_date': '20170624', 'description': 'SKAM sesong 4 følger Sana gjennom siste semester i andreklasse på Hartvig Nissen vgs i Oslo.', 'timestamp': 1498336860, }, 'params': { 'skip_download': True, }, }, { 'url': 'http://skam.p3.no/episoder/sesong-1/episode-1/', 'info_dict': { 'id': 'skam-s01e01', 'ext': 'mp4', 'upload_date': '20150925', 'title': 'Episode 1:11', 'description': 'Du ser ut som en slut', 'timestamp': 1443205800, }, 'params': { 'skip_download': True, }, } ] def _real_extract(self, url): mobj = re.search(self._VALID_URL, url) if mobj.group("season") and mobj.group("episode"): video_id = 's%02de%02d' % (int(mobj.group("season")), int(mobj.group("episode"))) else: video_id = self._match_id(url) video_id = mobj.group("name") + '-' + video_id webpage = self._download_webpage(url, video_id) manifest_id = (re.search(r'querySelector\(\'.*?\'\), \'(.*?)\', ludoOptions', webpage) or re.search(r'data-nrk-id="([^"]*)"', webpage)).group(1) folder = "clip" if re.search(r'-', manifest_id) else "program" meta = self._download_json('https://psapi.nrk.no/playback/manifest/%s/%s' % (folder, manifest_id), video_id, 'Downloading video JSON') # video_id = try_get(meta, lambda x: x['id']) title = self._html_search_regex(r'[^<]*\s*

\s*\s*
\s*