Repository: yt-dlp/yt-dlp

Issue:
Mediaklikk
### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

- [X] I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field

### Checklist

- [X] I'm reporting that yt-dlp is broken on a **supported** site
- [X] I've verified that I'm running yt-dlp version **2023.07.06** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required

### Region

Worldwide

### Provide a description that is worded well enough to be understood

The mediaklikk.hu videos download gave error message.
Example:
yt-dlp.exe https://mediaklikk.hu/filmajanlo/cikk/nezze-vissza-a-folyo-cimu-filmet/
[MediaKlikk] Extracting URL: https://mediaklikk.hu/filmajanlo/cikk/nezze-vissza-a-folyo-cimu-filmet/
[MediaKlikk] nezze-vissza-a-folyo-cimu-filmet: Downloading webpage
[MediaKlikk] 6313567: Downloading webpage
ERROR: [MediaKlikk] nezze-vissza-a-folyo-cimu-filmet: Unable to extract playlist_url; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

The result is same with any video from the MediaKlikk site.
https://mediaklikk.hu/musor/filmtar/

My yt-dlp.exe vertion is:
"yt-dlp.exe -vU
[debug] Command-line config: ['-vU']
[debug] Encodings: locale cp1250, fs utf-8, pref cp1250, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2023.07.06 [b532a3481] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg N-109474-gc94988a781-20230103 (setts), ffprobe N-109474-gc94988a781-20230103
[debug] Optional libraries: Cryptodome-3.18.0, brotli-1.0.9, certifi-2023.05.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.3
[debug] Proxy map: {}
[debug] Loaded 1855 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version: stable@2023.07.06, Current version: stable@2023.07.06
Current Build Hash: 5ff3e702171a50175c34397494e2d18ce35d771c2110b1e59bd173ec2fb352aa
yt-dlp is up to date (stable@2023.07.06)"




### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [ ] If using API, add `'verbose': True` to `YoutubeDL` params instead
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
yt-dlp -vU https://mediaklikk.hu/filmajanlo/cikk/nezze-vissza-a-folyo-cimu-filmet/
[debug] Command-line config: ['-vU', 'https://mediaklikk.hu/filmajanlo/cikk/nezze-vissza-a-folyo-cimu-filmet/']
[debug] Encodings: locale cp1250, fs utf-8, pref cp1250, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2023.07.06 [b532a3481] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg N-109474-gc94988a781-20230103 (setts), ffprobe N-109474-gc94988a781-20230103
[debug] Optional libraries: Cryptodome-3.18.0, brotli-1.0.9, certifi-2023.05.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.3
[debug] Proxy map: {}
[debug] Loaded 1855 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
ERROR: Unable to obtain version info (<urlopen error timed out>); Please try again later or visit  https://github.com/yt-dlp/yt-dlp/releases/latest
[MediaKlikk] Extracting URL: https://mediaklikk.hu/filmajanlo/cikk/nezze-vissza-a-folyo-cimu-filmet/
[MediaKlikk] nezze-vissza-a-folyo-cimu-filmet: Downloading webpage
[MediaKlikk] 6313567: Downloading webpage
ERROR: [MediaKlikk] nezze-vissza-a-folyo-cimu-filmet: Unable to extract playlist_url; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "yt_dlp\extractor\common.py", line 710, in extract
  File "yt_dlp\extractor\mediaklikk.py", line 88, in _real_extract
  File "yt_dlp\extractor\common.py", line 1294, in _html_search_regex
  File "yt_dlp\extractor\common.py", line 1258, in _search_regex
```

Mediaklikk
### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

- [X] I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field

### Checklist

- [X] I'm reporting that yt-dlp is broken on a **supported** site
- [X] I've verified that I'm running yt-dlp version **2023.07.06** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required

### Region

Worldwide

### Provide a description that is worded well enough to be understood

The mediaklikk.hu videos download gave error message.
Example:
yt-dlp.exe https://mediaklikk.hu/filmajanlo/cikk/nezze-vissza-a-folyo-cimu-filmet/
[MediaKlikk] Extracting URL: https://mediaklikk.hu/filmajanlo/cikk/nezze-vissza-a-folyo-cimu-filmet/
[MediaKlikk] nezze-vissza-a-folyo-cimu-filmet: Downloading webpage
[MediaKlikk] 6313567: Downloading webpage
ERROR: [MediaKlikk] nezze-vissza-a-folyo-cimu-filmet: Unable to extract playlist_url; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

The result is same with any video from the MediaKlikk site.
https://mediaklikk.hu/musor/filmtar/

My yt-dlp.exe vertion is:
"yt-dlp.exe -vU
[debug] Command-line config: ['-vU']
[debug] Encodings: locale cp1250, fs utf-8, pref cp1250, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2023.07.06 [b532a3481] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg N-109474-gc94988a781-20230103 (setts), ffprobe N-109474-gc94988a781-20230103
[debug] Optional libraries: Cryptodome-3.18.0, brotli-1.0.9, certifi-2023.05.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.3
[debug] Proxy map: {}
[debug] Loaded 1855 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version: stable@2023.07.06, Current version: stable@2023.07.06
Current Build Hash: 5ff3e702171a50175c34397494e2d18ce35d771c2110b1e59bd173ec2fb352aa
yt-dlp is up to date (stable@2023.07.06)"




### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [ ] If using API, add `'verbose': True` to `YoutubeDL` params instead
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
yt-dlp -vU https://mediaklikk.hu/filmajanlo/cikk/nezze-vissza-a-folyo-cimu-filmet/
[debug] Command-line config: ['-vU', 'https://mediaklikk.hu/filmajanlo/cikk/nezze-vissza-a-folyo-cimu-filmet/']
[debug] Encodings: locale cp1250, fs utf-8, pref cp1250, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2023.07.06 [b532a3481] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg N-109474-gc94988a781-20230103 (setts), ffprobe N-109474-gc94988a781-20230103
[debug] Optional libraries: Cryptodome-3.18.0, brotli-1.0.9, certifi-2023.05.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.3
[debug] Proxy map: {}
[debug] Loaded 1855 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
ERROR: Unable to obtain version info (<urlopen error timed out>); Please try again later or visit  https://github.com/yt-dlp/yt-dlp/releases/latest
[MediaKlikk] Extracting URL: https://mediaklikk.hu/filmajanlo/cikk/nezze-vissza-a-folyo-cimu-filmet/
[MediaKlikk] nezze-vissza-a-folyo-cimu-filmet: Downloading webpage
[MediaKlikk] 6313567: Downloading webpage
ERROR: [MediaKlikk] nezze-vissza-a-folyo-cimu-filmet: Unable to extract playlist_url; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "yt_dlp\extractor\common.py", line 710, in extract
  File "yt_dlp\extractor\mediaklikk.py", line 88, in _real_extract
  File "yt_dlp\extractor\common.py", line 1294, in _html_search_regex
  File "yt_dlp\extractor\common.py", line 1258, in _search_regex
```



Discussion:
i don't undersand "If using API, add 'verbose': True to YoutubeDL params instead"
> i don't undersand "If using API, add 'verbose': True to YoutubeDL params instead"

Don't worry about it, you did what was needed with the exe

This fixes the extractor:

```diff
diff --git a/yt_dlp/extractor/mediaklikk.py b/yt_dlp/extractor/mediaklikk.py
index 46365081b..12214e397 100644
--- a/yt_dlp/extractor/mediaklikk.py
+++ b/yt_dlp/extractor/mediaklikk.py
@@ -1,5 +1,8 @@
 from ..utils import (
-    unified_strdate
+    ExtractorError,
+    traverse_obj,
+    unified_strdate,
+    url_or_none,
 )
 from .common import InfoExtractor
 from ..compat import (
@@ -84,8 +87,12 @@ def _real_extract(self, url):
 
         player_data['video'] = player_data.pop('token')
         player_page = self._download_webpage('https://player.mediaklikk.hu/playernew/player.php', video_id, query=player_data)
-        playlist_url = self._proto_relative_url(compat_urllib_parse_unquote(
-            self._html_search_regex(r'\"file\":\s*\"(\\?/\\?/.*playlist\.m3u8)\"', player_page, 'playlist_url')).replace('\\/', '/'))
+        player_json = self._search_json(
+            r'\bpl\.setup\s*\(', player_page, 'player json', video_id, end_pattern=r'\);')
+        playlist_url = traverse_obj(
+            player_json, ('playlist', lambda _, v: v['type'] == 'hls', 'file', {url_or_none}), get_all=False)
+        if not playlist_url:
+            raise ExtractorError('Unable to extract playlist url')
 
         formats = self._extract_wowza_formats(
             playlist_url, video_id, skip_protocols=['f4m', 'smil', 'dash'])
```
Hi!

Sorry, I can't solve my problem based on your code, because
- the Windows don't recognise the diff as a program, or batch
- I am a simple Windows user, I use only the yt-dlp.exe.
- I have never used the GitHub before I reported this MediaKlikk download
error.
- I am not a programer, but I can see which lines I should replace in the
python source code
- I will try to find the lines of code and replace them in the downloaded
yt-dlp source code pack
- how can I do from the source code a new exe?

Could you help me?

Br, Gyula



bashonly ***@***.***> ezt írta (időpont: 2023. szept. 7., Cs,
18:52):

> i don't undersand "If using API, add 'verbose': True to YoutubeDL params
> instead"
>
> Don't worry about it, you did what was needed with the exe
>
> This fixes the extractor:
>
> diff --git a/yt_dlp/extractor/mediaklikk.py b/yt_dlp/extractor/mediaklikk.py
> index 46365081b..12214e397 100644
> --- a/yt_dlp/extractor/mediaklikk.py
> +++ b/yt_dlp/extractor/mediaklikk.py
> @@ -1,5 +1,8 @@
>  from ..utils import (
> -    unified_strdate
> +    ExtractorError,
> +    traverse_obj,
> +    unified_strdate,
> +    url_or_none,
>  )
>  from .common import InfoExtractor
>  from ..compat import (
> @@ -84,8 +87,12 @@ def _real_extract(self, url):
>
>          player_data['video'] = player_data.pop('token')
>          player_page = self._download_webpage('https://player.mediaklikk.hu/playernew/player.php', video_id, query=player_data)
> -        playlist_url = self._proto_relative_url(compat_urllib_parse_unquote(
> -            self._html_search_regex(r'\"file\":\s*\"(\\?/\\?/.*playlist\.m3u8)\"', player_page, 'playlist_url')).replace('\\/', '/'))
> +        player_json = self._search_json(
> +            r'\bpl\.setup\s*\(', player_page, 'player json', video_id, end_pattern=r'\);')
> +        playlist_url = traverse_obj(
> +            player_json, ('playlist', lambda _, v: v['type'] == 'hls', 'file', {url_or_none}), get_all=False)
> +        if not playlist_url:
> +            raise ExtractorError('Unable to extract playlist url')
>
>          formats = self._extract_wowza_formats(
>              playlist_url, video_id, skip_protocols=['f4m', 'smil', 'dash'])
>
> —
> Reply to this email directly, view it on GitHub
> <https://github.com/yt-dlp/yt-dlp/issues/8053#issuecomment-1710487461>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/BCNLOA265P5SPNFZFGBOETLXZH3UPANCNFSM6AAAAAA4PDHQME>
> .
> You are receiving this because you authored the thread.Message ID:
> ***@***.***>
>

i don't undersand "If using API, add 'verbose': True to YoutubeDL params instead"
> i don't undersand "If using API, add 'verbose': True to YoutubeDL params instead"

Don't worry about it, you did what was needed with the exe

This fixes the extractor:

```diff
diff --git a/yt_dlp/extractor/mediaklikk.py b/yt_dlp/extractor/mediaklikk.py
index 46365081b..12214e397 100644
--- a/yt_dlp/extractor/mediaklikk.py
+++ b/yt_dlp/extractor/mediaklikk.py
@@ -1,5 +1,8 @@
 from ..utils import (
-    unified_strdate
+    ExtractorError,
+    traverse_obj,
+    unified_strdate,
+    url_or_none,
 )
 from .common import InfoExtractor
 from ..compat import (
@@ -84,8 +87,12 @@ def _real_extract(self, url):
 
         player_data['video'] = player_data.pop('token')
         player_page = self._download_webpage('https://player.mediaklikk.hu/playernew/player.php', video_id, query=player_data)
-        playlist_url = self._proto_relative_url(compat_urllib_parse_unquote(
-            self._html_search_regex(r'\"file\":\s*\"(\\?/\\?/.*playlist\.m3u8)\"', player_page, 'playlist_url')).replace('\\/', '/'))
+        player_json = self._search_json(
+            r'\bpl\.setup\s*\(', player_page, 'player json', video_id, end_pattern=r'\);')
+        playlist_url = traverse_obj(
+            player_json, ('playlist', lambda _, v: v['type'] == 'hls', 'file', {url_or_none}), get_all=False)
+        if not playlist_url:
+            raise ExtractorError('Unable to extract playlist url')
 
         formats = self._extract_wowza_formats(
             playlist_url, video_id, skip_protocols=['f4m', 'smil', 'dash'])
```
Hi!

Sorry, I can't solve my problem based on your code, because
- the Windows don't recognise the diff as a program, or batch
- I am a simple Windows user, I use only the yt-dlp.exe.
- I have never used the GitHub before I reported this MediaKlikk download
error.
- I am not a programer, but I can see which lines I should replace in the
python source code
- I will try to find the lines of code and replace them in the downloaded
yt-dlp source code pack
- how can I do from the source code a new exe?

Could you help me?

Br, Gyula



bashonly ***@***.***> ezt írta (időpont: 2023. szept. 7., Cs,
18:52):

> i don't undersand "If using API, add 'verbose': True to YoutubeDL params
> instead"
>
> Don't worry about it, you did what was needed with the exe
>
> This fixes the extractor:
>
> diff --git a/yt_dlp/extractor/mediaklikk.py b/yt_dlp/extractor/mediaklikk.py
> index 46365081b..12214e397 100644
> --- a/yt_dlp/extractor/mediaklikk.py
> +++ b/yt_dlp/extractor/mediaklikk.py
> @@ -1,5 +1,8 @@
>  from ..utils import (
> -    unified_strdate
> +    ExtractorError,
> +    traverse_obj,
> +    unified_strdate,
> +    url_or_none,
>  )
>  from .common import InfoExtractor
>  from ..compat import (
> @@ -84,8 +87,12 @@ def _real_extract(self, url):
>
>          player_data['video'] = player_data.pop('token')
>          player_page = self._download_webpage('https://player.mediaklikk.hu/playernew/player.php', video_id, query=player_data)
> -        playlist_url = self._proto_relative_url(compat_urllib_parse_unquote(
> -            self._html_search_regex(r'\"file\":\s*\"(\\?/\\?/.*playlist\.m3u8)\"', player_page, 'playlist_url')).replace('\\/', '/'))
> +        player_json = self._search_json(
> +            r'\bpl\.setup\s*\(', player_page, 'player json', video_id, end_pattern=r'\);')
> +        playlist_url = traverse_obj(
> +            player_json, ('playlist', lambda _, v: v['type'] == 'hls', 'file', {url_or_none}), get_all=False)
> +        if not playlist_url:
> +            raise ExtractorError('Unable to extract playlist url')
>
>          formats = self._extract_wowza_formats(
>              playlist_url, video_id, skip_protocols=['f4m', 'smil', 'dash'])
>
> —
> Reply to this email directly, view it on GitHub
> <https://github.com/yt-dlp/yt-dlp/issues/8053#issuecomment-1710487461>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/BCNLOA265P5SPNFZFGBOETLXZH3UPANCNFSM6AAAAAA4PDHQME>
> .
> You are receiving this because you authored the thread.Message ID:
> ***@***.***>
>


Resolving patch:
diff --git a/yt_dlp/extractor/mediaklikk.py b/yt_dlp/extractor/mediaklikk.py
--- a/yt_dlp/extractor/mediaklikk.py
+++ b/yt_dlp/extractor/mediaklikk.py
@@ -1,5 +1,8 @@
 from ..utils import (
-    unified_strdate
+    ExtractorError,
+    traverse_obj,
+    unified_strdate,
+    url_or_none,
 )
 from .common import InfoExtractor
 from ..compat import (
@@ -15,7 +18,7 @@ class MediaKlikkIE(InfoExtractor):
                         (?P<id>[^/#?_]+)'''
 
     _TESTS = [{
-        # mediaklikk. date in html.
+        # (old) mediaklikk. date in html.
         'url': 'https://mediaklikk.hu/video/hazajaro-delnyugat-bacska-a-duna-menten-palankatol-doroszloig/',
         'info_dict': {
             'id': '4754129',
@@ -23,9 +26,21 @@ class MediaKlikkIE(InfoExtractor):
             'ext': 'mp4',
             'upload_date': '20210901',
             'thumbnail': 'http://mediaklikk.hu/wp-content/uploads/sites/4/2014/02/hazajarouj_JO.jpg'
+        },
+        'skip': 'Webpage redirects to 404 page',
+    }, {
+        # mediaklikk. date in html.
+        'url': 'https://mediaklikk.hu/video/hazajaro-fabova-hegyseg-kishont-koronaja/',
+        'info_dict': {
+            'id': '6696133',
+            'title': 'Hazajáró, Fabova-hegység - Kishont koronája',
+            'display_id': 'hazajaro-fabova-hegyseg-kishont-koronaja',
+            'ext': 'mp4',
+            'upload_date': '20230903',
+            'thumbnail': 'https://mediaklikk.hu/wp-content/uploads/sites/4/2014/02/hazajarouj_JO.jpg'
         }
     }, {
-        # m4sport
+        # (old) m4sport
         'url': 'https://m4sport.hu/video/2021/08/30/gyemant-liga-parizs/',
         'info_dict': {
             'id': '4754999',
@@ -33,6 +48,18 @@ class MediaKlikkIE(InfoExtractor):
             'ext': 'mp4',
             'upload_date': '20210830',
             'thumbnail': 'http://m4sport.hu/wp-content/uploads/sites/4/2021/08/vlcsnap-2021-08-30-18h21m20s10-1024x576.jpg'
+        },
+        'skip': 'Webpage redirects to 404 page',
+    }, {
+        # m4sport
+        'url': 'https://m4sport.hu/sportkozvetitesek/video/2023/09/08/atletika-gyemant-liga-brusszel/',
+        'info_dict': {
+            'id': '6711136',
+            'title': 'Atlétika – Gyémánt Liga, Brüsszel',
+            'display_id': 'atletika-gyemant-liga-brusszel',
+            'ext': 'mp4',
+            'upload_date': '20230908',
+            'thumbnail': 'https://m4sport.hu/wp-content/uploads/sites/4/2023/09/vlcsnap-2023-09-08-22h43m18s691.jpg'
         }
     }, {
         # m4sport with *video/ url and no date
@@ -40,20 +67,33 @@ class MediaKlikkIE(InfoExtractor):
         'info_dict': {
             'id': '4492099',
             'title': 'Real Madrid - Chelsea 1-1',
+            'display_id': 'real-madrid-chelsea-1-1',
             'ext': 'mp4',
-            'thumbnail': 'http://m4sport.hu/wp-content/uploads/sites/4/2021/04/Sequence-01.Still001-1024x576.png'
+            'thumbnail': 'https://m4sport.hu/wp-content/uploads/sites/4/2021/04/Sequence-01.Still001-1024x576.png'
         }
     }, {
-        # hirado
+        # (old) hirado
         'url': 'https://hirado.hu/videok/felteteleket-szabott-a-fovaros/',
         'info_dict': {
             'id': '4760120',
             'title': 'Feltételeket szabott a főváros',
             'ext': 'mp4',
             'thumbnail': 'http://hirado.hu/wp-content/uploads/sites/4/2021/09/vlcsnap-2021-09-01-20h20m37s165.jpg'
+        },
+        'skip': 'Webpage redirects to video list page',
+    }, {
+        # hirado
+        'url': 'https://hirado.hu/belfold/video/2023/09/11/marad-az-eves-elszamolas-a-napelemekre-beruhazo-csaladoknal',
+        'info_dict': {
+            'id': '6716068',
+            'title': 'Marad az éves elszámolás a napelemekre beruházó családoknál',
+            'display_id': 'marad-az-eves-elszamolas-a-napelemekre-beruhazo-csaladoknal',
+            'ext': 'mp4',
+            'upload_date': '20230911',
+            'thumbnail': 'https://hirado.hu/wp-content/uploads/sites/4/2023/09/vlcsnap-2023-09-11-09h16m09s882.jpg'
         }
     }, {
-        # petofilive
+        # (old) petofilive
         'url': 'https://petofilive.hu/video/2021/06/07/tha-shudras-az-akusztikban/',
         'info_dict': {
             'id': '4571948',
@@ -61,6 +101,18 @@ class MediaKlikkIE(InfoExtractor):
             'ext': 'mp4',
             'upload_date': '20210607',
             'thumbnail': 'http://petofilive.hu/wp-content/uploads/sites/4/2021/06/vlcsnap-2021-06-07-22h14m23s915-1024x576.jpg'
+        },
+        'skip': 'Webpage redirects to empty page',
+    }, {
+        # petofilive
+        'url': 'https://petofilive.hu/video/2023/09/09/futball-fesztival-a-margitszigeten/',
+        'info_dict': {
+            'id': '6713233',
+            'title': 'Futball Fesztivál a Margitszigeten',
+            'display_id': 'futball-fesztival-a-margitszigeten',
+            'ext': 'mp4',
+            'upload_date': '20230909',
+            'thumbnail': 'https://petofilive.hu/wp-content/uploads/sites/4/2023/09/Clipboard11-2.jpg'
         }
     }]
 
@@ -84,8 +136,12 @@ def _real_extract(self, url):
 
         player_data['video'] = player_data.pop('token')
         player_page = self._download_webpage('https://player.mediaklikk.hu/playernew/player.php', video_id, query=player_data)
-        playlist_url = self._proto_relative_url(compat_urllib_parse_unquote(
-            self._html_search_regex(r'\"file\":\s*\"(\\?/\\?/.*playlist\.m3u8)\"', player_page, 'playlist_url')).replace('\\/', '/'))
+        player_json = self._search_json(
+            r'\bpl\.setup\s*\(', player_page, 'player json', video_id, end_pattern=r'\);')
+        playlist_url = traverse_obj(
+            player_json, ('playlist', lambda _, v: v['type'] == 'hls', 'file', {url_or_none}), get_all=False)
+        if not playlist_url:
+            raise ExtractorError('Unable to extract playlist url')
 
         formats = self._extract_wowza_formats(
             playlist_url, video_id, skip_protocols=['f4m', 'smil', 'dash'])


Test patch: