aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2018-01-23 22:23:12 +0700
committerSergey M․ <dstftw@gmail.com>2018-01-23 22:23:12 +0700
commitcf2820710d61742818a906af07f6d6c9669d58a9 (patch)
tree49da7e89124bcbfd9d297906d8436ff1cd107820
parent5d7d805ca90992cac1cdffbe5d3df3d894d2b979 (diff)
downloadyoutube-dl-cf2820710d61742818a906af07f6d6c9669d58a9.tar.xz
Switch codebase to use compat_b64decode
-rw-r--r--youtube_dl/aes.py4
-rw-r--r--youtube_dl/downloader/f4m.py6
-rw-r--r--youtube_dl/extractor/adn.py10
-rw-r--r--youtube_dl/extractor/bigflix.py10
-rw-r--r--youtube_dl/extractor/chilloutzone.py4
-rw-r--r--youtube_dl/extractor/chirbit.py5
-rw-r--r--youtube_dl/extractor/crunchyroll.py6
-rw-r--r--youtube_dl/extractor/daisuki.py3
-rw-r--r--youtube_dl/extractor/dumpert.py4
-rw-r--r--youtube_dl/extractor/einthusan.py8
-rw-r--r--youtube_dl/extractor/hotnewhiphop.py5
-rw-r--r--youtube_dl/extractor/infoq.py5
-rw-r--r--youtube_dl/extractor/leeco.py4
-rw-r--r--youtube_dl/extractor/mangomolo.py11
-rw-r--r--youtube_dl/extractor/mixcloud.py1
-rw-r--r--youtube_dl/extractor/ooyala.py11
-rw-r--r--youtube_dl/extractor/rtl2.py8
-rw-r--r--youtube_dl/extractor/rtve.py3
-rw-r--r--youtube_dl/extractor/shared.py10
-rw-r--r--youtube_dl/extractor/teamcoco.py8
-rw-r--r--youtube_dl/extractor/tutv.py9
21 files changed, 70 insertions, 65 deletions
diff --git a/youtube_dl/aes.py b/youtube_dl/aes.py
index c5bb3c4ef..461bb6d41 100644
--- a/youtube_dl/aes.py
+++ b/youtube_dl/aes.py
@@ -1,8 +1,8 @@
from __future__ import unicode_literals
-import base64
from math import ceil
+from .compat import compat_b64decode
from .utils import bytes_to_intlist, intlist_to_bytes
BLOCK_SIZE_BYTES = 16
@@ -180,7 +180,7 @@ def aes_decrypt_text(data, password, key_size_bytes):
"""
NONCE_LENGTH_BYTES = 8
- data = bytes_to_intlist(base64.b64decode(data.encode('utf-8')))
+ data = bytes_to_intlist(compat_b64decode(data))
password = bytes_to_intlist(password.encode('utf-8'))
key = password[:key_size_bytes] + [0] * (key_size_bytes - len(password))
diff --git a/youtube_dl/downloader/f4m.py b/youtube_dl/downloader/f4m.py
index fdb80f42a..15e71be9a 100644
--- a/youtube_dl/downloader/f4m.py
+++ b/youtube_dl/downloader/f4m.py
@@ -1,12 +1,12 @@
from __future__ import division, unicode_literals
-import base64
import io
import itertools
import time
from .fragment import FragmentFD
from ..compat import (
+ compat_b64decode,
compat_etree_fromstring,
compat_urlparse,
compat_urllib_error,
@@ -312,7 +312,7 @@ class F4mFD(FragmentFD):
boot_info = self._get_bootstrap_from_url(bootstrap_url)
else:
bootstrap_url = None
- bootstrap = base64.b64decode(node.text.encode('ascii'))
+ bootstrap = compat_b64decode(node.text)
boot_info = read_bootstrap_info(bootstrap)
return boot_info, bootstrap_url
@@ -349,7 +349,7 @@ class F4mFD(FragmentFD):
live = boot_info['live']
metadata_node = media.find(_add_ns('metadata'))
if metadata_node is not None:
- metadata = base64.b64decode(metadata_node.text.encode('ascii'))
+ metadata = compat_b64decode(metadata_node.text)
else:
metadata = None
diff --git a/youtube_dl/extractor/adn.py b/youtube_dl/extractor/adn.py
index cffdab6ca..64fb755da 100644
--- a/youtube_dl/extractor/adn.py
+++ b/youtube_dl/extractor/adn.py
@@ -1,13 +1,15 @@
# coding: utf-8
from __future__ import unicode_literals
-import base64
import json
import os
from .common import InfoExtractor
from ..aes import aes_cbc_decrypt
-from ..compat import compat_ord
+from ..compat import (
+ compat_b64decode,
+ compat_ord,
+)
from ..utils import (
bytes_to_intlist,
ExtractorError,
@@ -48,9 +50,9 @@ class ADNIE(InfoExtractor):
# http://animedigitalnetwork.fr/components/com_vodvideo/videojs/adn-vjs.min.js
dec_subtitles = intlist_to_bytes(aes_cbc_decrypt(
- bytes_to_intlist(base64.b64decode(enc_subtitles[24:])),
+ bytes_to_intlist(compat_b64decode(enc_subtitles[24:])),
bytes_to_intlist(b'\x1b\xe0\x29\x61\x38\x94\x24\x00\x12\xbd\xc5\x80\xac\xce\xbe\xb0'),
- bytes_to_intlist(base64.b64decode(enc_subtitles[:24]))
+ bytes_to_intlist(compat_b64decode(enc_subtitles[:24]))
))
subtitles_json = self._parse_json(
dec_subtitles[:-compat_ord(dec_subtitles[-1])].decode(),
diff --git a/youtube_dl/extractor/bigflix.py b/youtube_dl/extractor/bigflix.py
index b4ce767af..28e3e59f6 100644
--- a/youtube_dl/extractor/bigflix.py
+++ b/youtube_dl/extractor/bigflix.py
@@ -1,11 +1,13 @@
# coding: utf-8
from __future__ import unicode_literals
-import base64
import re
from .common import InfoExtractor
-from ..compat import compat_urllib_parse_unquote
+from ..compat import (
+ compat_b64decode,
+ compat_urllib_parse_unquote,
+)
class BigflixIE(InfoExtractor):
@@ -39,8 +41,8 @@ class BigflixIE(InfoExtractor):
webpage, 'title')
def decode_url(quoted_b64_url):
- return base64.b64decode(compat_urllib_parse_unquote(
- quoted_b64_url).encode('ascii')).decode('utf-8')
+ return compat_b64decode(compat_urllib_parse_unquote(
+ quoted_b64_url)).decode('utf-8')
formats = []
for height, encoded_url in re.findall(
diff --git a/youtube_dl/extractor/chilloutzone.py b/youtube_dl/extractor/chilloutzone.py
index d4769da75..5aac21299 100644
--- a/youtube_dl/extractor/chilloutzone.py
+++ b/youtube_dl/extractor/chilloutzone.py
@@ -1,11 +1,11 @@
from __future__ import unicode_literals
import re
-import base64
import json
from .common import InfoExtractor
from .youtube import YoutubeIE
+from ..compat import compat_b64decode
from ..utils import (
clean_html,
ExtractorError
@@ -58,7 +58,7 @@ class ChilloutzoneIE(InfoExtractor):
base64_video_info = self._html_search_regex(
r'var cozVidData = "(.+?)";', webpage, 'video data')
- decoded_video_info = base64.b64decode(base64_video_info.encode('utf-8')).decode('utf-8')
+ decoded_video_info = compat_b64decode(base64_video_info).decode('utf-8')
video_info_dict = json.loads(decoded_video_info)
# get video information from dict
diff --git a/youtube_dl/extractor/chirbit.py b/youtube_dl/extractor/chirbit.py
index 4815b34be..8d75cdf19 100644
--- a/youtube_dl/extractor/chirbit.py
+++ b/youtube_dl/extractor/chirbit.py
@@ -1,10 +1,10 @@
# coding: utf-8
from __future__ import unicode_literals
-import base64
import re
from .common import InfoExtractor
+from ..compat import compat_b64decode
from ..utils import parse_duration
@@ -44,8 +44,7 @@ class ChirbitIE(InfoExtractor):
# Reverse engineered from https://chirb.it/js/chirbit.player.js (look
# for soundURL)
- audio_url = base64.b64decode(
- data_fd[::-1].encode('ascii')).decode('utf-8')
+ audio_url = compat_b64decode(data_fd[::-1]).decode('utf-8')
title = self._search_regex(
r'class=["\']chirbit-title["\'][^>]*>([^<]+)', webpage, 'title')
diff --git a/youtube_dl/extractor/crunchyroll.py b/youtube_dl/extractor/crunchyroll.py
index b92f25447..3efdc8c21 100644
--- a/youtube_dl/extractor/crunchyroll.py
+++ b/youtube_dl/extractor/crunchyroll.py
@@ -3,13 +3,13 @@ from __future__ import unicode_literals
import re
import json
-import base64
import zlib
from hashlib import sha1
from math import pow, sqrt, floor
from .common import InfoExtractor
from ..compat import (
+ compat_b64decode,
compat_etree_fromstring,
compat_urllib_parse_urlencode,
compat_urllib_request,
@@ -272,8 +272,8 @@ class CrunchyrollIE(CrunchyrollBaseIE):
}
def _decrypt_subtitles(self, data, iv, id):
- data = bytes_to_intlist(base64.b64decode(data.encode('utf-8')))
- iv = bytes_to_intlist(base64.b64decode(iv.encode('utf-8')))
+ data = bytes_to_intlist(compat_b64decode(data))
+ iv = bytes_to_intlist(compat_b64decode(iv))
id = int(id)
def obfuscate_key_aux(count, modulo, start):
diff --git a/youtube_dl/extractor/daisuki.py b/youtube_dl/extractor/daisuki.py
index 5c9ac68a0..dbc1aa5d4 100644
--- a/youtube_dl/extractor/daisuki.py
+++ b/youtube_dl/extractor/daisuki.py
@@ -10,6 +10,7 @@ from ..aes import (
aes_cbc_decrypt,
aes_cbc_encrypt,
)
+from ..compat import compat_b64decode
from ..utils import (
bytes_to_intlist,
bytes_to_long,
@@ -93,7 +94,7 @@ class DaisukiMottoIE(InfoExtractor):
rtn = self._parse_json(
intlist_to_bytes(aes_cbc_decrypt(bytes_to_intlist(
- base64.b64decode(encrypted_rtn)),
+ compat_b64decode(encrypted_rtn)),
aes_key, iv)).decode('utf-8').rstrip('\0'),
video_id)
diff --git a/youtube_dl/extractor/dumpert.py b/youtube_dl/extractor/dumpert.py
index c9fc9b5a9..be2e3d378 100644
--- a/youtube_dl/extractor/dumpert.py
+++ b/youtube_dl/extractor/dumpert.py
@@ -1,10 +1,10 @@
# coding: utf-8
from __future__ import unicode_literals
-import base64
import re
from .common import InfoExtractor
+from ..compat import compat_b64decode
from ..utils import (
qualities,
sanitized_Request,
@@ -42,7 +42,7 @@ class DumpertIE(InfoExtractor):
r'data-files="([^"]+)"', webpage, 'data files')
files = self._parse_json(
- base64.b64decode(files_base64.encode('utf-8')).decode('utf-8'),
+ compat_b64decode(files_base64).decode('utf-8'),
video_id)
quality = qualities(['flv', 'mobile', 'tablet', '720p'])
diff --git a/youtube_dl/extractor/einthusan.py b/youtube_dl/extractor/einthusan.py
index 3f6268637..4485bf8c1 100644
--- a/youtube_dl/extractor/einthusan.py
+++ b/youtube_dl/extractor/einthusan.py
@@ -1,13 +1,13 @@
# coding: utf-8
from __future__ import unicode_literals
-import base64
import json
from .common import InfoExtractor
from ..compat import (
- compat_urlparse,
+ compat_b64decode,
compat_str,
+ compat_urlparse,
)
from ..utils import (
extract_attributes,
@@ -36,9 +36,9 @@ class EinthusanIE(InfoExtractor):
# reversed from jsoncrypto.prototype.decrypt() in einthusan-PGMovieWatcher.js
def _decrypt(self, encrypted_data, video_id):
- return self._parse_json(base64.b64decode((
+ return self._parse_json(compat_b64decode((
encrypted_data[:10] + encrypted_data[-1] + encrypted_data[12:-1]
- ).encode('ascii')).decode('utf-8'), video_id)
+ )).decode('utf-8'), video_id)
def _real_extract(self, url):
video_id = self._match_id(url)
diff --git a/youtube_dl/extractor/hotnewhiphop.py b/youtube_dl/extractor/hotnewhiphop.py
index 34163725f..4703e1894 100644
--- a/youtube_dl/extractor/hotnewhiphop.py
+++ b/youtube_dl/extractor/hotnewhiphop.py
@@ -1,8 +1,7 @@
from __future__ import unicode_literals
-import base64
-
from .common import InfoExtractor
+from ..compat import compat_b64decode
from ..utils import (
ExtractorError,
HEADRequest,
@@ -48,7 +47,7 @@ class HotNewHipHopIE(InfoExtractor):
if 'mediaKey' not in mkd:
raise ExtractorError('Did not get a media key')
- redirect_url = base64.b64decode(video_url_base64).decode('utf-8')
+ redirect_url = compat_b64decode(video_url_base64).decode('utf-8')
redirect_req = HEADRequest(redirect_url)
req = self._request_webpage(
redirect_req, video_id,
diff --git a/youtube_dl/extractor/infoq.py b/youtube_dl/extractor/infoq.py
index c3e892feb..391c2f5d0 100644
--- a/youtube_dl/extractor/infoq.py
+++ b/youtube_dl/extractor/infoq.py
@@ -2,9 +2,8 @@
from __future__ import unicode_literals
-import base64
-
from ..compat import (
+ compat_b64decode,
compat_urllib_parse_unquote,
compat_urlparse,
)
@@ -61,7 +60,7 @@ class InfoQIE(BokeCCBaseIE):
encoded_id = self._search_regex(
r"jsclassref\s*=\s*'([^']*)'", webpage, 'encoded id', default=None)
- real_id = compat_urllib_parse_unquote(base64.b64decode(encoded_id.encode('ascii')).decode('utf-8'))
+ real_id = compat_urllib_parse_unquote(compat_b64decode(encoded_id).decode('utf-8'))
playpath = 'mp4:' + real_id
return [{
diff --git a/youtube_dl/extractor/leeco.py b/youtube_dl/extractor/leeco.py
index 0a07c1320..ffe10154b 100644
--- a/youtube_dl/extractor/leeco.py
+++ b/youtube_dl/extractor/leeco.py
@@ -1,7 +1,6 @@
# coding: utf-8
from __future__ import unicode_literals
-import base64
import datetime
import hashlib
import re
@@ -9,6 +8,7 @@ import time
from .common import InfoExtractor
from ..compat import (
+ compat_b64decode,
compat_ord,
compat_str,
compat_urllib_parse_urlencode,
@@ -329,7 +329,7 @@ class LetvCloudIE(InfoExtractor):
raise ExtractorError('Letv cloud returned an unknwon error')
def b64decode(s):
- return base64.b64decode(s.encode('utf-8')).decode('utf-8')
+ return compat_b64decode(s).decode('utf-8')
formats = []
for media in play_json['data']['video_info']['media'].values():
diff --git a/youtube_dl/extractor/mangomolo.py b/youtube_dl/extractor/mangomolo.py
index dbd761a67..482175a34 100644
--- a/youtube_dl/extractor/mangomolo.py
+++ b/youtube_dl/extractor/mangomolo.py
@@ -1,13 +1,12 @@
# coding: utf-8
from __future__ import unicode_literals
-import base64
-
from .common import InfoExtractor
-from ..compat import compat_urllib_parse_unquote
-from ..utils import (
- int_or_none,
+from ..compat import (
+ compat_b64decode,
+ compat_urllib_parse_unquote,
)
+from ..utils import int_or_none
class MangomoloBaseIE(InfoExtractor):
@@ -51,4 +50,4 @@ class MangomoloLiveIE(MangomoloBaseIE):
_IS_LIVE = True
def _get_real_id(self, page_id):
- return base64.b64decode(compat_urllib_parse_unquote(page_id).encode()).decode()
+ return compat_b64decode(compat_urllib_parse_unquote(page_id)).decode()
diff --git a/youtube_dl/extractor/mixcloud.py b/youtube_dl/extractor/mixcloud.py
index 785b99bc3..a56b7690f 100644
--- a/youtube_dl/extractor/mixcloud.py
+++ b/youtube_dl/extractor/mixcloud.py
@@ -1,6 +1,5 @@
from __future__ import unicode_literals
-import base64
import functools
import itertools
import re
diff --git a/youtube_dl/extractor/ooyala.py b/youtube_dl/extractor/ooyala.py
index 52580baed..ad8bf03f8 100644
--- a/youtube_dl/extractor/ooyala.py
+++ b/youtube_dl/extractor/ooyala.py
@@ -1,9 +1,13 @@
from __future__ import unicode_literals
+
import re
-import base64
from .common import InfoExtractor
-from ..compat import compat_str
+from ..compat import (
+ compat_b64decode,
+ compat_str,
+ compat_urllib_parse_urlencode,
+)
from ..utils import (
determine_ext,
ExtractorError,
@@ -12,7 +16,6 @@ from ..utils import (
try_get,
unsmuggle_url,
)
-from ..compat import compat_urllib_parse_urlencode
class OoyalaBaseIE(InfoExtractor):
@@ -44,7 +47,7 @@ class OoyalaBaseIE(InfoExtractor):
url_data = try_get(stream, lambda x: x['url']['data'], compat_str)
if not url_data:
continue
- s_url = base64.b64decode(url_data.encode('ascii')).decode('utf-8')
+ s_url = compat_b64decode(url_data).decode('utf-8')
if not s_url or s_url in urls:
continue
urls.append(s_url)
diff --git a/youtube_dl/extractor/rtl2.py b/youtube_dl/extractor/rtl2.py
index 666e90e90..18a327d81 100644
--- a/youtube_dl/extractor/rtl2.py
+++ b/youtube_dl/extractor/rtl2.py
@@ -1,12 +1,12 @@
# coding: utf-8
from __future__ import unicode_literals
-import base64
import re
from .common import InfoExtractor
from ..aes import aes_cbc_decrypt
from ..compat import (
+ compat_b64decode,
compat_ord,
compat_str,
)
@@ -142,11 +142,11 @@ class RTL2YouIE(RTL2YouBaseIE):
stream_data = self._download_json(
self._BACKWERK_BASE_URL + 'stream/video/' + video_id, video_id)
- data, iv = base64.b64decode(stream_data['streamUrl']).decode().split(':')
+ data, iv = compat_b64decode(stream_data['streamUrl']).decode().split(':')
stream_url = intlist_to_bytes(aes_cbc_decrypt(
- bytes_to_intlist(base64.b64decode(data)),
+ bytes_to_intlist(compat_b64decode(data)),
bytes_to_intlist(self._AES_KEY),
- bytes_to_intlist(base64.b64decode(iv))
+ bytes_to_intlist(compat_b64decode(iv))
))
if b'rtl2_you_video_not_found' in stream_url:
raise ExtractorError('video not found', expected=True)
diff --git a/youtube_dl/extractor/rtve.py b/youtube_dl/extractor/rtve.py
index fa60ffd5e..ce9db0629 100644
--- a/youtube_dl/extractor/rtve.py
+++ b/youtube_dl/extractor/rtve.py
@@ -7,6 +7,7 @@ import time
from .common import InfoExtractor
from ..compat import (
+ compat_b64decode,
compat_struct_unpack,
)
from ..utils import (
@@ -21,7 +22,7 @@ from ..utils import (
def _decrypt_url(png):
- encrypted_data = base64.b64decode(png.encode('utf-8'))
+ encrypted_data = compat_b64decode(png)
text_index = encrypted_data.find(b'tEXt')
text_chunk = encrypted_data[text_index - 4:]
length = compat_struct_unpack('!I', text_chunk[:4])[0]
diff --git a/youtube_dl/extractor/shared.py b/youtube_dl/extractor/shared.py
index 89e19e927..b2250afdd 100644
--- a/youtube_dl/extractor/shared.py
+++ b/youtube_dl/extractor/shared.py
@@ -1,8 +1,7 @@
from __future__ import unicode_literals
-import base64
-
from .common import InfoExtractor
+from ..compat import compat_b64decode
from ..utils import (
ExtractorError,
int_or_none,
@@ -22,8 +21,8 @@ class SharedBaseIE(InfoExtractor):
video_url = self._extract_video_url(webpage, video_id, url)
- title = base64.b64decode(self._html_search_meta(
- 'full:title', webpage, 'title').encode('utf-8')).decode('utf-8')
+ title = compat_b64decode(self._html_search_meta(
+ 'full:title', webpage, 'title')).decode('utf-8')
filesize = int_or_none(self._html_search_meta(
'full:size', webpage, 'file size', fatal=False))
@@ -92,5 +91,4 @@ class VivoIE(SharedBaseIE):
r'InitializeStream\s*\(\s*(["\'])(?P<url>(?:(?!\1).)+)\1',
webpage, 'stream', group='url'),
video_id,
- transform_source=lambda x: base64.b64decode(
- x.encode('ascii')).decode('utf-8'))[0]
+ transform_source=lambda x: compat_b64decode(x).decode('utf-8'))[0]
diff --git a/youtube_dl/extractor/teamcoco.py b/youtube_dl/extractor/teamcoco.py
index 75346393b..9056c8cbc 100644
--- a/youtube_dl/extractor/teamcoco.py
+++ b/youtube_dl/extractor/teamcoco.py
@@ -1,18 +1,20 @@
# coding: utf-8
from __future__ import unicode_literals
-import base64
import binascii
import re
import json
from .common import InfoExtractor
+from ..compat import (
+ compat_b64decode,
+ compat_ord,
+)
from ..utils import (
ExtractorError,
qualities,
determine_ext,
)
-from ..compat import compat_ord
class TeamcocoIE(InfoExtractor):
@@ -97,7 +99,7 @@ class TeamcocoIE(InfoExtractor):
for i in range(len(cur_fragments)):
cur_sequence = (''.join(cur_fragments[i:] + cur_fragments[:i])).encode('ascii')
try:
- raw_data = base64.b64decode(cur_sequence)
+ raw_data = compat_b64decode(cur_sequence)
if compat_ord(raw_data[0]) == compat_ord('{'):
return json.loads(raw_data.decode('utf-8'))
except (TypeError, binascii.Error, UnicodeDecodeError, ValueError):
diff --git a/youtube_dl/extractor/tutv.py b/youtube_dl/extractor/tutv.py
index 822372ea1..362318b24 100644
--- a/youtube_dl/extractor/tutv.py
+++ b/youtube_dl/extractor/tutv.py
@@ -1,9 +1,10 @@
from __future__ import unicode_literals
-import base64
-
from .common import InfoExtractor
-from ..compat import compat_parse_qs
+from ..compat import (
+ compat_b64decode,
+ compat_parse_qs,
+)
class TutvIE(InfoExtractor):
@@ -26,7 +27,7 @@ class TutvIE(InfoExtractor):
data_content = self._download_webpage(
'http://tu.tv/flvurl.php?codVideo=%s' % internal_id, video_id, 'Downloading video info')
- video_url = base64.b64decode(compat_parse_qs(data_content)['kpt'][0].encode('utf-8')).decode('utf-8')
+ video_url = compat_b64decode(compat_parse_qs(data_content)['kpt'][0]).decode('utf-8')
return {
'id': internal_id,