diff --git a/.mypy.ini b/.mypy.ini index ce71e24..ac8d379 100644 --- a/.mypy.ini +++ b/.mypy.ini @@ -39,3 +39,6 @@ ignore_missing_imports = True [mypy-deezer.*] ignore_missing_imports = True + +[mypy-appdirs.*] +ignore_missing_imports = True diff --git a/rip/config.py b/rip/config.py index fec572c..6e2e133 100644 --- a/rip/config.py +++ b/rip/config.py @@ -7,8 +7,8 @@ import shutil from pprint import pformat from typing import Any, Dict -from click import style, secho import tomlkit +from click import secho from streamrip.exceptions import InvalidSourceError diff --git a/rip/constants.py b/rip/constants.py index 3ea27ba..a1039d4 100644 --- a/rip/constants.py +++ b/rip/constants.py @@ -2,9 +2,10 @@ import os import re -from appdirs import user_config_dir from pathlib import Path +from appdirs import user_config_dir + APPNAME = "streamrip" APP_DIR = user_config_dir(APPNAME) HOME = Path.home() diff --git a/rip/core.py b/rip/core.py index 2fddcda..1a9535c 100644 --- a/rip/core.py +++ b/rip/core.py @@ -10,8 +10,8 @@ from hashlib import md5 from string import Formatter from typing import Dict, Generator, List, Optional, Tuple, Type, Union -from click import style, secho import requests +from click import secho, style from tqdm import tqdm from streamrip.clients import ( diff --git a/streamrip/clients.py b/streamrip/clients.py index 9c675b7..ebfe11d 100644 --- a/streamrip/clients.py +++ b/streamrip/clients.py @@ -11,10 +11,9 @@ from abc import ABC, abstractmethod from pprint import pformat from typing import Any, Dict, Generator, Optional, Sequence, Tuple, Union -from click import style, secho import deezer -import requests -from Cryptodome.Cipher import AES, Blowfish # type: ignore +from click import secho +from Cryptodome.Cipher import AES from .constants import ( AGENT, @@ -588,40 +587,6 @@ class DeezerClient(Client): AES.new("jo6aey6haid2Teih".encode(), AES.MODE_ECB).encrypt(data) ).decode("utf-8") - def _decrypt_stream(self, url: str, meta_id: str, output_stream): - headers = {"User-Agent": AGENT} - chunk_len = 0 - # isCryptedStream = ( - # "/mobile/" in track.downloadURL or "/media/" in track.downloadURL - # ) - - # itemData = { - # "id": track.id, - # "title": track.title, - # "artist": track.mainArtist.name, - # } - - with requests.get(url, headers=headers, stream=True, timeout=10) as request: - request.raise_for_status() - blowfish_key = generate_blowfish_key(meta_id) - - file_size = int(request.headers["Content-Length"]) - if file_size == 0: - raise Exception - - for chunk in request.iter_content(2048 * 3): - if len(chunk) >= 2048: - chunk = decrypt_chunk(blowfish_key, chunk[0:2048]) + chunk[2048:] - - output_stream.write(chunk) - chunk_len += len(chunk) - - # except (SSLError, u3SSLError): - # streamTrack(outputStream, track, chunkLength, downloadObject, listener) - # except (RequestsConnectionError, ReadTimeout, ChunkedEncodingError): - # sleep(2) - # streamTrack(outputStream, track, start, downloadObject, listener) - @staticmethod def _quality_id_from_filetype(filetype: str) -> Optional[int]: return { diff --git a/streamrip/exceptions.py b/streamrip/exceptions.py index 1f3cf10..198526d 100644 --- a/streamrip/exceptions.py +++ b/streamrip/exceptions.py @@ -1,7 +1,7 @@ """Streamrip specific exceptions.""" from typing import List -from click import style, secho +from click import echo, style class AuthenticationError(Exception): diff --git a/streamrip/media.py b/streamrip/media.py index c7d68a0..8bc8740 100644 --- a/streamrip/media.py +++ b/streamrip/media.py @@ -15,7 +15,7 @@ import subprocess from tempfile import gettempdir from typing import Any, Dict, Generator, Iterable, List, Optional, Tuple, Union -from click import style, secho +from click import echo, secho, style from mutagen.flac import FLAC, Picture from mutagen.id3 import APIC, ID3, ID3NoHeaderError from mutagen.mp4 import MP4, MP4Cover diff --git a/streamrip/metadata.py b/streamrip/metadata.py index d278fe2..e065025 100644 --- a/streamrip/metadata.py +++ b/streamrip/metadata.py @@ -10,7 +10,6 @@ from typing import Generator, Hashable, Iterable, Optional, Union from .constants import ( ALBUM_KEYS, COPYRIGHT, - COVER_SIZES, FLAC_KEY, MP3_KEY, MP4_KEY, @@ -19,7 +18,7 @@ from .constants import ( TRACK_KEYS, ) from .exceptions import InvalidContainerError, InvalidSourceError -from .utils import get_cover_urls, get_quality_id, safe_get, tidal_cover_url +from .utils import get_cover_urls, get_quality_id, safe_get logger = logging.getLogger("streamrip") diff --git a/streamrip/utils.py b/streamrip/utils.py index ae97507..82ebd40 100644 --- a/streamrip/utils.py +++ b/streamrip/utils.py @@ -11,8 +11,8 @@ from collections import OrderedDict from string import Formatter from typing import Dict, Hashable, Iterator, Optional, Tuple, Union -from click import secho import requests +from click import secho, style from Cryptodome.Cipher import Blowfish from pathvalidate import sanitize_filename from requests.packages import urllib3 diff --git a/tests/tests.py b/tests/tests.py index 02693c9..5954254 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -2,7 +2,7 @@ import os import shutil import subprocess -from click import style, secho, echo +from click import echo, secho test_urls = { "qobuz": "https://www.qobuz.com/us-en/album/blackest-blue-morcheeba/h4nngz0wgqesc",