diff --git a/youtube_dl/extractor/tvp.py b/youtube_dl/extractor/tvp.py index 22f71588d..40b284057 100644 --- a/youtube_dl/extractor/tvp.py +++ b/youtube_dl/extractor/tvp.py @@ -254,25 +254,87 @@ class TVPWebsiteIE(InfoExtractor): class TVPappIE(InfoExtractor): IE_NAME = 'tvp:app' - _VALID_URL = r'https://vod.tvp.pl/[^/]+/[^,]+,(?P[0-9]+)/[^,]+,[^,]+,(?P[0-9]+)' - _TESTS = [{ - # series - 'url': 'https://vod.tvp.pl/seriale,18/korona-krolow-jagiellonowie-odcinki,292227/odcinek-37,S01E37,392532', - 'info_dict': { - 'id': '392532', - 'ext': 'mp4', + # https://vod.tvp.pl/seriale,18/korona-krolow-jagiellonowie-odcinki,292227/odcinek-37,S01E37,392532 + # https://vod.tvp.pl/programy,88/korona-krolow-taka-historia-odcinki,283653/odcinek-1,S02E01,386064 + # https://vod.tvp.pl/filmy-dokumentalne,163/jurek,376503 + # https://vod.tvp.pl/dla-dzieci,24/zubr-pompik-odcinki,282014/odcinek-1,S01E01,319853 + # https://vod.tvp.pl/teatr-telewizji,202/barwy-uczuc,392420 + # https://vod.tvp.pl/filmy-fabularne,136/rozlam,390638 + _VALID_URL = r'https://vod.tvp.pl/(seriale|filmy-fabularne|programy|filmy-dokumentalne|dla-dzieci|teatr-telewizji|informacje-i-publicystyka),[0-9]+/([^,]+,[0-9]+/)?[^,]+,([^,]+,)?(?P[0-9]+)' + _TESTS = [ + { + # series + 'url': 'https://vod.tvp.pl/seriale,18/korona-krolow-jagiellonowie-odcinki,292227/odcinek-37,S01E37,392532', + 'info_dict': { + 'id': '392532', + 'ext': 'mp4', - 'series_id': 292227, - 'title': 'Korona królów. Jagiellonowie - Episode 37 - odc. 37 – Branka', - 'description': 'Wiosna 1407. Anna z Goraja znika z Wawelu. Jej matka - Beata z Bożego Daru rozpacza. Anna Cylejska zarządza poszukiwania, a Sofia tajemniczo się uśmiecha. Elżbieta i Katarzyna Gorajskie wyjawiają, że ich siostra pojechała do klasztoru klarysek w Sączu. Na Wawel dociera wieść o śmierci Wielkiego Mistrza Konrada von Jungingena. Rozpoczyna się walka o władzę w Malborku. Jan Falkenberg ma list do papieża, w którym wyjawia sekret Trąby. Bdzigost i Ciołek zdobywają to pismo. Król Jagiełło poznaje wreszcie sekret Mikołaja Trąby i znajduje sposób, by go ochronić.', - 'thumbnail': r're:^https?://.*\.jpg$', - 'episode_number': 37, - }, - 'params': { - 'skip_download': True, - 'format': 'dash-f1-v1-x3', - } - }] + 'series_id': 292227, + 'title': 'Korona królów. Jagiellonowie - Episode 37 - odc. 37 – Branka', + 'description': 'Wiosna 1407. Anna z Goraja znika z Wawelu. Jej matka - Beata z Bożego Daru rozpacza. Anna Cylejska zarządza poszukiwania, a Sofia tajemniczo się uśmiecha. Elżbieta i Katarzyna Gorajskie wyjawiają, że ich siostra pojechała do klasztoru klarysek w Sączu. Na Wawel dociera wieść o śmierci Wielkiego Mistrza Konrada von Jungingena. Rozpoczyna się walka o władzę w Malborku. Jan Falkenberg ma list do papieża, w którym wyjawia sekret Trąby. Bdzigost i Ciołek zdobywają to pismo. Król Jagiełło poznaje wreszcie sekret Mikołaja Trąby i znajduje sposób, by go ochronić.', + 'thumbnail': r're:^https?://.*\.jpg$', + 'episode_number': 37, + }, + 'params': { + 'skip_download': True, + 'format': 'dash-f1-v1-x3', + } + }, + { + # programs + 'url': 'https://vod.tvp.pl/programy,88/korona-krolow-taka-historia-odcinki,283653/odcinek-1,S02E01,386064', + 'info_dict': { + 'id': '386064', + 'ext': 'mp4', + + 'series_id': 283653, + 'title': 'Korona królów. Taka historia... - Episode 1 - odc. 1 – Jagiełło: życie po Jadwidze', + 'description': 'Jogaiła był Wielkim Księciem Litewskim, synem Olgierda i wnukiem Giedymina. W 1386 roku został polskim królem, bowiem został mężem polskiej monarchini – Jadwigi Andegaweńskiej. Dwa trony i dwóch władców mających pełnię władzy. Kiedy w 1399 roku Jadwiga zmarła, najważniejsi polscy możni za potwierdzenie praw Jagiełły do korony zapragnęli więcej wpływów na władzę, w następstwie czego Władysław Jagiełło postanowił zrzec się tronu i wrócić na Litwę. Zaczęły się rozmowy i negocjacje. Obu stronom zależało, żeby król pozostał królem. Możni zaproponowali Jagielle kandydatkę na nową żonę – Annę Cylejską. Dziewczyna była wnuczką Kazimierza Wielkiego, więc uznano ją za prawowitą dziedziczkę polskiego tronu, czym miała wzmacniać rolę Jagiełły. Przeprowadzono powtórną elekcję i ustanowiono warunki współpracy z Litwą.', + 'thumbnail': r're:^https?://.*\.jpg$', + 'episode_number': 1, + }, + 'params': { + 'skip_download': True, + 'format': 'dash-f1-v1-x3', + } + }, + { + # filmy-dokumentalne + 'url': 'https://vod.tvp.pl/filmy-dokumentalne,163/jurek,376503', + 'info_dict': { + 'id': '376503', + 'ext': 'mp4', + + 'series_id': None, + 'title': 'Jurek', + 'description': 'Obraz człowieka, który pnie się do góry w sensie dosłownym, ale też metaforycznym i symbolicznym. Od socjalistycznego pracownika, po gwiazdę międzynarodowych mediów, od człowieka, który wspina się bez pieniędzy i sprzętu, po pełnoprawnego konkurenta Reinholda Messnera w walce o zdobycie Korony Himalajów i Karakorum. Skromnego, wyrazistego, kochającego góry. Rozmowy z rodziną i przyjaciółmi, archiwalia, zdjęcia, nagrania, fragmenty programów telewizyjnych i wywiadów składają się na portret całego środowiska himalaistów lat 80. To również obraz czasów, w jakich żyli – ciężkich i barwnych jednocześnie, kiedy idealizm miał większą wartość niż sława.', + 'thumbnail': r're:^https?://.*\.jpg$', + 'episode_number': None, + }, + 'params': { + 'skip_download': True, + 'format': 'dash-f1-v1-x3', + } + }, + { + # dla-dzieci + 'url': 'https://vod.tvp.pl/dla-dzieci,24/zubr-pompik-odcinki,282014/odcinek-1,S01E01,319853', + 'info_dict': { + 'id': '319853', + 'ext': 'mp4', + + 'series_id': 282014, + 'title': 'Żubr Pompik - Episode 1 - Odc. 1 – Duże i małe', + 'description': 'W głębinach wielkiej, dzikiej, zielonej puszczy mieszka żubr Pompik. Jest niewielki, do tego nie tak silny, szybki i skoczny, jak jego rówieśnicy. Początkowo bardzo się tym martwi. A co, jeżeli nigdy nie urośnie? Odkrywa jednak, że ma wiele innych zalet! Jest najbardziej ciekawskim ze zwierząt w puszczy. Interesuje go wszystko, co dzieje się dookoła. Nie ma takiej leśnej tajemnicy, której Pompik by nie rozwiązał dzięki uważnej obserwacji, cierpliwości i zadawaniu mnóstwa pytań.', + 'thumbnail': r're:^https?://.*\.jpg$', + 'episode_number': 1, + }, + 'params': { + 'skip_download': True, + 'format': 'dash-f1-v1-x3', + } + }, +] def _real_extract(self, url): video_id = self._match_id(url) @@ -282,6 +344,8 @@ class TVPappIE(InfoExtractor): _details = self._download_json(url % video_id, video_id, 'Downloading details') _playlist = self._download_json(url_p % video_id, video_id, 'Downloading playlist') + # import json + # print(json.dumps(_playlist, indent = 2)) formats = [] formats.extend(self._extract_mpd_formats(_playlist['sources']['DASH'][0]['src'], video_id, mpd_id='dash', fatal=False)) @@ -290,10 +354,10 @@ class TVPappIE(InfoExtractor): 'formats': formats, 'duraton': _details['duration'], - 'series_id': _details['season']['serial']['id'], + 'series_id': _details['season']['serial']['id'] if 'season' in _details else None, 'title': _details['statisticsParameters']['gemiusVideo']['fullTitle'], 'description': _details['description'], 'thumbnail': _details['images']['16x9'][0]['url'], - 'episode_number': _details['number'], + 'episode_number': _details['number'] if 'number' in _details else None, }