From 4a9bc8c3630378bc29f0266126b503f6190c0430 Mon Sep 17 00:00:00 2001
From: 1-Byte <1-Byte@users.noreply.github.com>
Date: Tue, 17 Sep 2024 21:17:05 +0200
Subject: [PATCH] [ie/NZZ] Fix extractor (#10461)

Closes #5653
Authored by: 1-Byte
---
 yt_dlp/extractor/nzz.py | 22 +++++++---------------
 1 file changed, 7 insertions(+), 15 deletions(-)

diff --git a/yt_dlp/extractor/nzz.py b/yt_dlp/extractor/nzz.py
index ac3b73156..047c4e1ac 100644
--- a/yt_dlp/extractor/nzz.py
+++ b/yt_dlp/extractor/nzz.py
@@ -1,9 +1,6 @@
 import re
 
 from .common import InfoExtractor
-from ..utils import (
-    extract_attributes,
-)
 
 
 class NZZIE(InfoExtractor):
@@ -22,19 +19,14 @@ class NZZIE(InfoExtractor):
         'playlist_count': 1,
     }]
 
+    def _entries(self, webpage, page_id):
+        for script in re.findall(r'(?s)<script[^>]* data-hid="jw-video-jw[^>]+>(.+?)</script>', webpage):
+            settings = self._search_json(r'var\s+settings\s*=[^{]*', script, 'settings', page_id, fatal=False)
+            if entry := self._parse_jwplayer_data(settings, page_id):
+                yield entry
+
     def _real_extract(self, url):
         page_id = self._match_id(url)
         webpage = self._download_webpage(url, page_id)
 
-        entries = []
-        for player_element in re.findall(
-                r'(<[^>]+class="kalturaPlayer[^"]*"[^>]*>)', webpage):
-            player_params = extract_attributes(player_element)
-            if player_params.get('data-type') not in ('kaltura_singleArticle',):
-                self.report_warning('Unsupported player type')
-                continue
-            entry_id = player_params['data-id']
-            entries.append(self.url_result(
-                'kaltura:1750922:' + entry_id, 'Kaltura', entry_id))
-
-        return self.playlist_result(entries, page_id)
+        return self.playlist_result(self._entries(webpage, page_id), page_id)