[neteasemusic] Encoding fixes for Python 2.6 and 3.x

This commit is contained in:
Yen Chi Hsuan 2015-07-10 18:43:38 +08:00
parent 15830339ef
commit 397a8ea96e

View File

@ -11,6 +11,7 @@ from .common import InfoExtractor
from ..compat import ( from ..compat import (
compat_urllib_request, compat_urllib_request,
compat_urllib_parse, compat_urllib_parse,
compat_str,
) )
@ -21,14 +22,14 @@ class NetEaseMusicBaseIE(InfoExtractor):
@classmethod @classmethod
def _encrypt(cls, dfsid): def _encrypt(cls, dfsid):
salt_bytes = bytearray(cls._NETEASE_SALT, 'utf-8') salt_bytes = bytearray(cls._NETEASE_SALT.encode('utf-8'))
string_bytes = bytearray(str(dfsid)) string_bytes = bytearray(compat_str(dfsid).encode('ascii'))
salt_len = len(salt_bytes) salt_len = len(salt_bytes)
for i in range(len(string_bytes)): for i in range(len(string_bytes)):
string_bytes[i] = string_bytes[i] ^ salt_bytes[i % salt_len] string_bytes[i] = string_bytes[i] ^ salt_bytes[i % salt_len]
m = md5() m = md5()
m.update(string_bytes) m.update(bytes(string_bytes))
result = b64encode(m.digest()) result = b64encode(m.digest()).decode('ascii')
return result.replace('/', '_').replace('+', '-') return result.replace('/', '_').replace('+', '-')
@classmethod @classmethod