Apply suggestions

This commit is contained in:
doe1080 2025-05-25 16:21:14 +09:00
parent f3ab125a51
commit 81972480d0

View File

@ -7,12 +7,17 @@ from ..utils import (
parse_qs, parse_qs,
unified_strdate, unified_strdate,
) )
from ..utils.traversal import find_element, traverse_obj from ..utils.traversal import (
find_element,
require,
traverse_obj,
)
class SRMediathekIE(ARDMediathekBaseIE): class SRMediathekIE(ARDMediathekBaseIE):
IE_NAME = 'sr:mediathek' IE_NAME = 'sr:mediathek'
IE_DESC = 'Saarländischer Rundfunk' IE_DESC = 'Saarländischer Rundfunk'
CLS_COMMON = 'teaser__image__caption__text teaser__image__caption__text--'
_VALID_URL = r'https?://(?:www\.)?sr-mediathek\.de/index\.php\?.*?&id=(?P<id>\d+)' _VALID_URL = r'https?://(?:www\.)?sr-mediathek\.de/index\.php\?.*?&id=(?P<id>\d+)'
_TESTS = [{ _TESTS = [{
@ -70,29 +75,26 @@ class SRMediathekIE(ARDMediathekBaseIE):
player_url = traverse_obj(webpage, ( player_url = traverse_obj(webpage, (
{find_element(tag='div', id=f'player{video_id}', html=True)}, {find_element(tag='div', id=f'player{video_id}', html=True)},
{extract_attributes}, 'data-mediacollection-ardplayer', {extract_attributes}, 'data-mediacollection-ardplayer',
{lambda x: self._proto_relative_url(x)}, {self._proto_relative_url}, {require('player URL')}))
))
article = traverse_obj(webpage, ( article = traverse_obj(webpage, (
{find_element(cls='article__content')}, {find_element(cls='article__content')},
{find_element(tag='p')}, {clean_html}, {find_element(tag='p')}, {clean_html}))
))
cls_common = 'teaser__image__caption__text teaser__image__caption__text--'
return { return {
**self._extract_media_info(player_url, webpage, video_id), **self._extract_media_info(player_url, webpage, video_id),
'id': video_id, 'id': video_id,
'title': traverse_obj(webpage, ( 'title': traverse_obj(webpage, (
{find_element(cls='ardplayer-title')}, {str.strip})), {find_element(cls='ardplayer-title')}, {clean_html})),
'channel': traverse_obj(webpage, ( 'channel': traverse_obj(webpage, (
{find_element(cls=f'{cls_common}subheadline')}, {find_element(cls=f'{self.CLS_COMMON}subheadline')},
{lambda x: x.split('|')[0]}, {str.strip})), {lambda x: x.split('|')[0]}, {clean_html})),
'description': description, 'description': description,
'duration': parse_duration(self._search_regex( 'duration': parse_duration(self._search_regex(
r'(\d{2}:\d{2}:\d{2})', article, 'duration')), r'(\d{2}:\d{2}:\d{2})', article, 'duration')),
'release_date': unified_strdate(self._search_regex( 'release_date': unified_strdate(self._search_regex(
r'(\d{2}\.\d{2}\.\d{4})', article, 'release_date')), r'(\d{2}\.\d{2}\.\d{4})', article, 'release_date')),
'series': traverse_obj(webpage, ( 'series': traverse_obj(webpage, (
{find_element(cls=f'{cls_common}headline')}, {str.strip})), {find_element(cls=f'{self.CLS_COMMON}headline')}, {clean_html})),
'series_id': traverse_obj(webpage, ( 'series_id': traverse_obj(webpage, (
{find_element(cls='teaser__link', html=True)}, {find_element(cls='teaser__link', html=True)},
{extract_attributes}, 'href', {parse_qs}, 'sen', ..., {str}, any)), {extract_attributes}, 'href', {parse_qs}, 'sen', ..., {str}, any)),