From 5dde0d0c9fcef2ce57e486b2e563e0dff9b2845a Mon Sep 17 00:00:00 2001 From: sepro Date: Sat, 8 Nov 2025 10:51:21 +0100 Subject: [PATCH] [ie/ntv.ru] Rework extractor (#14934) Closes #14929, Closes #14761 Authored by: seproDev, anlar Co-authored-by: Anton Larionov <11796525+anlar@users.noreply.github.com> --- yt_dlp/extractor/ntvru.py | 143 ++++++++++++++++++++++++-------------- 1 file changed, 90 insertions(+), 53 deletions(-) diff --git a/yt_dlp/extractor/ntvru.py b/yt_dlp/extractor/ntvru.py index 1ab1be0f60..f05e96f5f3 100644 --- a/yt_dlp/extractor/ntvru.py +++ b/yt_dlp/extractor/ntvru.py @@ -1,17 +1,40 @@ from .common import InfoExtractor from ..utils import ( int_or_none, - strip_or_none, + parse_iso8601, unescapeHTML, + url_or_none, xpath_text, ) +from ..utils.traversal import traverse_obj class NTVRuIE(InfoExtractor): IE_NAME = 'ntv.ru' - _VALID_URL = r'https?://(?:www\.)?ntv\.ru/(?:[^/]+/)*(?P[^/?#&]+)' + _VALID_URL = r'https?://(?:www\.)?ntv\.ru/(?:[^/#?]+/)*(?P[^/?#&]+)' _TESTS = [{ + # JSON Api is geo restricted + 'url': 'https://www.ntv.ru/peredacha/svoya_igra/m58980/o818800', + 'md5': '818962a1b52747d446db7cd5be43e142', + 'info_dict': { + 'id': '2520563', + 'ext': 'mp4', + 'title': 'Участники: Ирина Петрова, Сергей Коновалов, Кристина Кораблина', + 'description': 'Участники: Ирина Петрова, Сергей Коновалов, Кристина Кораблина', + 'thumbnail': r're:^http://.*\.jpg', + 'duration': 2462, + 'view_count': int, + 'comment_count': int, + 'tags': ['игры и игрушки'], + 'timestamp': 1761821096, + 'upload_date': '20251030', + 'release_timestamp': 1761821096, + 'release_date': '20251030', + 'modified_timestamp': 1761821096, + 'modified_date': '20251030', + }, + }, { 'url': 'http://www.ntv.ru/novosti/863142/', 'md5': 'ba7ea172a91cb83eb734cad18c10e723', 'info_dict': { @@ -22,31 +45,35 @@ class NTVRuIE(InfoExtractor): 'thumbnail': r're:^http://.*\.jpg', 'duration': 136, 'view_count': int, + 'comment_count': int, + 'tags': ['ВМС', 'захват', 'митинги', 'Севастополь', 'Украина'], + 'timestamp': 1395222013, + 'upload_date': '20140319', + 'release_timestamp': 1395222013, + 'release_date': '20140319', + 'modified_timestamp': 1395222013, + 'modified_date': '20140319', }, }, { - 'url': 'http://www.ntv.ru/video/novosti/750370/', - 'md5': 'adecff79691b4d71e25220a191477124', - 'info_dict': { - 'id': '750370', - 'ext': 'mp4', - 'title': 'Родные пассажиров пропавшего Boeing не верят в трагический исход', - 'description': 'Родные пассажиров пропавшего Boeing не верят в трагический исход', - 'thumbnail': r're:^http://.*\.jpg', - 'duration': 172, - 'view_count': int, - }, - 'skip': '404 Not Found', - }, { + # Requires unescapeHTML 'url': 'http://www.ntv.ru/peredacha/segodnya/m23700/o232416', 'md5': '82dbd49b38e3af1d00df16acbeab260c', 'info_dict': { 'id': '747480', 'ext': 'mp4', - 'title': '«Сегодня». 21 марта 2014 года. 16:00', - 'description': '«Сегодня». 21 марта 2014 года. 16:00', + 'title': '«Сегодня». 21\xa0марта 2014\xa0года. 16:00 ', + 'description': '«Сегодня». 21\xa0марта 2014\xa0года. 16:00 ', 'thumbnail': r're:^http://.*\.jpg', 'duration': 1496, 'view_count': int, + 'comment_count': int, + 'tags': ['Брюссель', 'гражданство', 'ЕС', 'Крым', 'ОСАГО', 'саммит', 'санкции', 'события', 'чиновники', 'рейтинг'], + 'timestamp': 1395406951, + 'upload_date': '20140321', + 'release_timestamp': 1395406951, + 'release_date': '20140321', + 'modified_timestamp': 1395406951, + 'modified_date': '20140321', }, }, { 'url': 'https://www.ntv.ru/kino/Koma_film/m70281/o336036/video/', @@ -57,8 +84,16 @@ class NTVRuIE(InfoExtractor): 'title': 'Остросюжетный фильм «Кома»', 'description': 'Остросюжетный фильм «Кома»', 'thumbnail': r're:^http://.*\.jpg', - 'duration': 5592, + 'duration': 5608, 'view_count': int, + 'comment_count': int, + 'tags': ['кино'], + 'timestamp': 1432868572, + 'upload_date': '20150529', + 'release_timestamp': 1432868572, + 'release_date': '20150529', + 'modified_timestamp': 1432868572, + 'modified_date': '20150529', }, }, { 'url': 'http://www.ntv.ru/serial/Delo_vrachey/m31760/o233916/', @@ -71,6 +106,14 @@ class NTVRuIE(InfoExtractor): 'thumbnail': r're:^http://.*\.jpg', 'duration': 2590, 'view_count': int, + 'comment_count': int, + 'tags': ['врачи', 'больницы'], + 'timestamp': 1395882300, + 'upload_date': '20140327', + 'release_timestamp': 1395882300, + 'release_date': '20140327', + 'modified_timestamp': 1395882300, + 'modified_date': '20140327', }, }, { # Schemeless file URL @@ -78,48 +121,26 @@ class NTVRuIE(InfoExtractor): 'only_matching': True, }] - _VIDEO_ID_REGEXES = [ - r'