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:
imSp4rky
2026-04-12 16:41:43 -06:00
co-authored by panitan103
parent cb3535215d
commit c56a92ed0c
2 changed files with 4 additions and 2 deletions
+1 -1
View File
@@ -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,
+3 -1
View File
@@ -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,