Skip to content

Commit d4dd6bd

Browse files
committed
watch_extraction: fix ejs_decrypt encoding
Read/write js files in binary mode and decode/encode using utf-8 explicitly.
1 parent bf48e99 commit d4dd6bd

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

youtube/yt_data_extract/watch_extraction.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,12 +1000,12 @@ def ejs_decrypt(player_version, nsig, sig=[]):
10001000
processed_cache = os.path.join(settings.data_dir, f'processed_{player_version}.js')
10011001
code_fd, code_tempfile = tempfile.mkstemp(prefix='yt-ejs-', suffix='.js')
10021002
if not os.path.isfile(processed_cache):
1003-
with open(player_cache, 'r') as file:
1004-
player = file.read()
1003+
with open(player_cache, 'rb') as file:
1004+
player = file.read().decode('utf-8')
10051005
has_preprocessed = False
10061006
else:
1007-
with open(processed_cache, 'r') as file:
1008-
preprocessed_player = file.read()
1007+
with open(processed_cache, 'rb') as file:
1008+
preprocessed_player = file.read().decode('utf-8')
10091009
has_preprocessed = True
10101010
payload = {}
10111011
if has_preprocessed:
@@ -1035,8 +1035,8 @@ def ejs_decrypt(player_version, nsig, sig=[]):
10351035
result.check_returncode()
10361036
result_json = json.loads(result.stdout.decode('utf-8'))
10371037
if not has_preprocessed:
1038-
with open(processed_cache, 'w') as file:
1039-
file.write(result_json['preprocessed_player'])
1038+
with open(processed_cache, 'wb') as file:
1039+
file.write(result_json['preprocessed_player'].encode('utf-8'))
10401040
result_json.pop('preprocessed_player')
10411041
actual_result = result_json['responses']
10421042
os.remove(code_tempfile)

0 commit comments

Comments
 (0)