Create deezer.py

This commit is contained in:
deezerdl 2017-05-24 13:17:24 +00:00 committed by GitHub
parent e2cc9a9c5b
commit d9fff7fc39

View File

@ -0,0 +1,40 @@
from Crypto.Cipher import Blowfish
import binascii
from .common import FileDownloader
from ..utils import sanitized_Request
def blowfishDecrypt(data, key):
""" CBC decrypt data with key """
c = Blowfish.new(key, Blowfish.MODE_CBC, binascii.a2b_hex("0001020304050607"))
return c.decrypt(data)
def decryptfile(fh, key, fo):
"""
Decrypt data from file <fh>, and write to file <fo>.
decrypt using blowfish with <key>.
Only every third 2048 byte block is encrypted.
"""
i = 0
while True:
data = fh.read(2048)
if not data:
break
if (i % 3)==0 and len(data)==2048:
data = blowfishDecrypt(data, key)
fo.write(data)
i += 1
class DeezerDownloader(FileDownloader):
def real_download(self, filename, info_dict):
url = info_dict['url']
request = sanitized_Request(url, None, {})
data = self.ydl.urlopen(request)
with open(filename, "wb") as fo:
decryptfile(data, info_dict['key'], fo)