diff options
author | DmitryScaletta <DmitryScaletta@users.noreply.github.com> | 2024-03-09 18:46:11 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-09 15:46:11 +0000 |
commit | d3d4187da90a6b85f4ebae4bb07693cc9b412d75 (patch) | |
tree | e93aac6dcedef3f7be11760c08c7198b0b2dbc12 | |
parent | c8c9039e640495700f76a13496e3418bdd4382ba (diff) |
[ie/duboku] Fix m3u8 formats extraction (#9161)
Closes #9159
Authored by: DmitryScaletta
-rw-r--r-- | yt_dlp/extractor/duboku.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/yt_dlp/extractor/duboku.py b/yt_dlp/extractor/duboku.py index fc9564cef..626e577e7 100644 --- a/yt_dlp/extractor/duboku.py +++ b/yt_dlp/extractor/duboku.py @@ -1,4 +1,6 @@ +import base64 import re +import urllib.parse from .common import InfoExtractor from ..compat import compat_urlparse @@ -129,11 +131,15 @@ class DubokuIE(InfoExtractor): data_url = player_data.get('url') if not data_url: raise ExtractorError('Cannot find url in player_data') - data_from = player_data.get('from') + player_encrypt = player_data.get('encrypt') + if player_encrypt == 1: + data_url = urllib.parse.unquote(data_url) + elif player_encrypt == 2: + data_url = urllib.parse.unquote(base64.b64decode(data_url).decode('ascii')) # if it is an embedded iframe, maybe it's an external source headers = {'Referer': webpage_url} - if data_from == 'iframe': + if player_data.get('from') == 'iframe': # use _type url_transparent to retain the meaningful details # of the video. return { |