[zdf] extract episode info if available

This commit is contained in:
Jakob Klepp 2020-04-03 20:19:32 +02:00
parent 049c0486bb
commit d6f100b960

View File

@ -1,6 +1,7 @@
# coding: utf-8
from __future__ import unicode_literals
import json
import re
from .common import InfoExtractor
@ -17,7 +18,7 @@ from ..utils import (
update_url_query,
url_or_none,
urljoin,
)
JSON_LD_RE)
class ZDFBaseIE(InfoExtractor):
@ -37,6 +38,19 @@ class ZDFBaseIE(InfoExtractor):
group='json'),
video_id)
def _extract_episode_info(self, webpage):
season_number = self._search_regex(r"Staffel\ ([0-9]+)", webpage, "season", fatal=False)
episode_number = self._search_regex(r"Folge\ ([0-9]+)", webpage, "episode", fatal=False)
json_ld = json.loads(self._search_regex(JSON_LD_RE, webpage, 'JSON-LD', group='json_ld', fatal=False))
episode = json_ld.get("name")
series = json_ld.get("publisher", {}).get("name")
return dict(
season_number=int_or_none(season_number),
episode_number=int_or_none(episode_number),
episode=episode.strip(),
series=series.strip()
)
class ZDFIE(ZDFBaseIE):
_VALID_URL = r'https?://www\.zdf\.de/(?:[^/]+/)*(?P<id>[^/?]+)\.html'
@ -231,7 +245,10 @@ class ZDFIE(ZDFBaseIE):
if webpage:
player = self._extract_player(webpage, url, fatal=False)
if player:
return self._extract_regular(url, player, video_id)
extracted = self._extract_regular(url, player, video_id)
episode_info = self._extract_episode_info(webpage)
extracted.update(episode_info)
return extracted
return self._extract_mobile(video_id)