feat: make chunk size configurable
This commit is contained in:
@@ -9,7 +9,7 @@ import audible
|
|||||||
import httpx
|
import httpx
|
||||||
from audible.activation_bytes import get_activation_bytes
|
from audible.activation_bytes import get_activation_bytes
|
||||||
|
|
||||||
from .constants import CACHE_DIR, DEFAULT_CODEC, DOWNLOAD_URL, MIN_FILE_SIZE
|
from .constants import CACHE_DIR, DEFAULT_CHUNK_SIZE, DEFAULT_CODEC, DOWNLOAD_URL, MIN_FILE_SIZE
|
||||||
|
|
||||||
StatusCallback = Callable[[str], None]
|
StatusCallback = Callable[[str], None]
|
||||||
|
|
||||||
@@ -18,13 +18,19 @@ class DownloadManager:
|
|||||||
"""Handle retrieval and download of Audible titles."""
|
"""Handle retrieval and download of Audible titles."""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, auth: audible.Authenticator, client: audible.Client, cache_dir: Path = CACHE_DIR
|
self,
|
||||||
|
auth: audible.Authenticator,
|
||||||
|
client: audible.Client,
|
||||||
|
cache_dir: Path = CACHE_DIR,
|
||||||
|
chunk_size: int = DEFAULT_CHUNK_SIZE,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.auth = auth
|
self.auth = auth
|
||||||
self.client = client
|
self.client = client
|
||||||
self.cache_dir = cache_dir
|
self.cache_dir = cache_dir
|
||||||
self.cache_dir.mkdir(parents=True, exist_ok=True)
|
self.cache_dir.mkdir(parents=True, exist_ok=True)
|
||||||
self._http_client = httpx.Client(auth=auth, timeout=30.0, follow_redirects=False)
|
self.chunk_size = chunk_size
|
||||||
|
self._http_client = httpx.Client(
|
||||||
|
auth=auth, timeout=30.0, follow_redirects=False)
|
||||||
|
|
||||||
def get_or_download(self, asin: str, notify: StatusCallback | None = None) -> Path | None:
|
def get_or_download(self, asin: str, notify: StatusCallback | None = None) -> Path | None:
|
||||||
"""Get local path of AAX file, downloading if missing."""
|
"""Get local path of AAX file, downloading if missing."""
|
||||||
@@ -136,7 +142,7 @@ class DownloadManager:
|
|||||||
downloaded = 0
|
downloaded = 0
|
||||||
|
|
||||||
with open(dest_path, "wb") as file_handle:
|
with open(dest_path, "wb") as file_handle:
|
||||||
for chunk in response.iter_bytes(chunk_size=8192):
|
for chunk in response.iter_bytes(chunk_size=self.chunk_size):
|
||||||
file_handle.write(chunk)
|
file_handle.write(chunk)
|
||||||
downloaded += len(chunk)
|
downloaded += len(chunk)
|
||||||
if total_size > 0 and notify:
|
if total_size > 0 and notify:
|
||||||
|
|||||||
Reference in New Issue
Block a user