1
0
mirror of https://github.com/ytdl-org/youtube-dl.git synced 2025-07-12 13:26:19 +00:00

Merge 52cde825e19b66e1495036d4c9b78440c2fc9593 into c5098961b04ce83f4615f2a846c84f803b072639

This commit is contained in:
Teemu Ikonen 2024-08-21 21:49:02 -04:00 committed by GitHub
commit 80f693e29b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 65 additions and 0 deletions

View File

@ -1012,6 +1012,7 @@ from .radiode import RadioDeIE
from .radiojavan import RadioJavanIE from .radiojavan import RadioJavanIE
from .radiobremen import RadioBremenIE from .radiobremen import RadioBremenIE
from .radiofrance import RadioFranceIE from .radiofrance import RadioFranceIE
from .radioplay import RadioplayIE
from .rai import ( from .rai import (
RaiPlayIE, RaiPlayIE,
RaiPlayLiveIE, RaiPlayLiveIE,

View File

@ -0,0 +1,64 @@
# coding: utf-8
from __future__ import unicode_literals
from .common import InfoExtractor
from ..utils import (
unified_strdate,
)
class RadioplayIE(InfoExtractor):
IE_DESC = 'radioplay.fi'
_VALID_URL = r'https?://(?:www\.)?radioplay\.fi/podcast/[^/]*/listen/(?P<id>\d+)/?'
_TESTS = [
{
'url': 'https://radioplay.fi/podcast/auta-antti/listen/15723/',
'md5': '6e194a6021132b1aed15a9faa3d55c8f',
'info_dict': {
'id': '15723',
'ext': 'm4a',
'title': 'Ystävyydestä',
'description': 'md5:17b9893c3ad4b05360eb1dd3efd13a0c',
'thumbnail': r're:^https?://.*\.jpg$',
'duration': 3176,
'upload_date': '20190405',
'age_limit': 0,
'season_number': 2,
'episode_number': 3,
'channel': 'Auta Antti!',
'channel_id': '278',
},
},
]
def _real_extract(self, url):
episode_id = self._match_id(url)
webpage = self._download_webpage(url, episode_id)
_json = self._parse_json(self._search_regex(
r'window\.__PRELOADED_STATE__\s*=\s*({.+})',
webpage, 'nowPlaying'), episode_id)
ep = _json['player']['nowPlaying']
ch = _json['podcastsApi']['data']['channel']
assert str(ep['PodcastRadioplayId']) == episode_id
return {
'id': episode_id,
'title': ep['PodcastTitle'],
'description': ep.get('PodcastDescription', None),
'thumbnail': ep.get('PodcastImageUrl', None),
'duration': ep.get('PodcastDuration', None),
'upload_date': unified_strdate(ep.get('PodcastPublishDate', None)),
'age_limit': 18 if ep.get('PodcastExplicit', 0) != 0 else 0,
'season_number': ep.get('PodcastSeasonNumber', None),
'episode': ep['PodcastTitle'],
'episode_number': ep.get('PodcastEpisodeNumber', None),
'channel': ch['PodcastChannelTitle'],
'channel_id': str(ch['PodcastChannelId']),
'formats': [{
'format_id': 'audio',
'url': ep['PodcastExtMediaUrl'],
'vcodec': 'none',
}]
}