mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-11-14 04:55:07 +00:00
feat(track): add optional per-track session parameter (#96)
Originally authored by panitan103 — adds optional session parameter to Track class allowing services to pass per-track sessions with different headers/cookies/auth. Changes for dev branch integration: - Fix type hints to support both requests.Session and RnetSession - Fix session fallback in dl.py: track.session or service.session - Remove redundant `session or None` assignment Co-Authored-By: panitan103 <panitan103@users.noreply.github.com>
This commit is contained in:
@@ -2069,7 +2069,7 @@ class dl:
|
||||
(
|
||||
pool.submit(
|
||||
track.download,
|
||||
session=service.session,
|
||||
session=track.session or service.session,
|
||||
prepare_drm=partial(
|
||||
partial(self.prepare_drm, table=download_table),
|
||||
track=track,
|
||||
|
||||
@@ -45,6 +45,7 @@ class Track:
|
||||
name: Optional[str] = None,
|
||||
drm: Optional[Iterable[DRM_T]] = None,
|
||||
edition: Optional[str] = None,
|
||||
session: Optional[Union[Session, "RnetSession"]] = None,
|
||||
downloader: Optional[Callable] = None,
|
||||
downloader_args: Optional[dict] = None,
|
||||
from_file: Optional[Path] = None,
|
||||
@@ -99,6 +100,7 @@ class Track:
|
||||
self.name = name
|
||||
self.drm = drm
|
||||
self.edition: list[str] = [edition] if isinstance(edition, str) else (edition or [])
|
||||
self.session = session
|
||||
self.downloader = downloader
|
||||
self.downloader_args = downloader_args
|
||||
self.from_file = from_file
|
||||
@@ -180,7 +182,7 @@ class Track:
|
||||
|
||||
def download(
|
||||
self,
|
||||
session: Session,
|
||||
session: Union[Session, "RnetSession"],
|
||||
prepare_drm: partial,
|
||||
max_workers: Optional[int] = None,
|
||||
progress: Optional[partial] = None,
|
||||
|
||||
Reference in New Issue
Block a user