Commit Graph

15 Commits

Author SHA1 Message Date
√(noham)²
ae5035c6a8 optimize DASH probing and segment download paths
- Switch bruteforce probes from GET to HEAD to avoid downloading
  full segment bodies (only the status code is needed)
- Cap bruteforce concurrency with a semaphore (default 100) instead of issuing one task per tick, and cancel leftover tasks on early exit
- Reuse a single aiohttp session / event loop for the manifest mode's AVC/HEVC/audio bruteforces to keep TCP connections alive
- Hoist the per-request segment headers into a module-level constant
- Use a set for the already-downloaded resume check in save_segments
- Replace read()-into-memory copies with shutil.copyfileobj in   merge_segments and decrypt
2026-08-13 17:40:06 +02:00
√(noham)²
e51a108d28 Chunked decryption, resume & selection fixes
Implement chunked decryption of .m4s segments (avoid loading entire stream into memory) by changing decrypt() to accept a segment directory, process ~1GB chunks with mp4ff-decrypt, and concatenate results. Add resume support in segment downloader by skipping already downloaded .m4s files and initializing successful counter accordingly. Improve manifest handling: gracefully handle missing AVC/HEVC tracks, bruteforce ticks conditionally, and mark representations for removal when no valid tick is found. Add fallback unfiltered selection in select_track when filtered lookup yields no candidates. Replace naive UTC offset logic with explicit Europe/Paris timezone utilities and adjust related time conversion signatures. Bump project version to 1.0.
2026-06-17 16:49:49 +02:00
√(noham)²
3fb78d2dc0 Use media4 host and remove IPv6 note from READMEs 2026-02-08 21:26:08 +01:00
√(noham)²
181a2c9fa3 Update stream.py 2026-01-11 11:51:10 +01:00
√(noham)²
b75027c750 Lint 2026-01-09 19:49:49 +01:00
√(noham)²
279be1d6bf Add MPD manifest generation utilities 2026-01-09 19:46:24 +01:00
√(noham)²
a01b199475 Add batch downloading and retry logic to save_segments
Enhanced the save_segments function to download media segments in configurable batches and added retry logic for failed downloads. Improved logging and progress reporting, and updated the function signature and docstring to reflect these changes.
2025-12-29 11:48:51 +01:00
√(noham)²
31f87a6a99 Refactor logging to use parameterized messages 2025-12-20 12:52:35 +01:00
√(noham)²
debd884e2d Integrate structured logging across project 2025-12-20 12:46:28 +01:00
√(noham)²
2823fb6e2e Lint and clean up codebase for consistency 2025-12-20 12:20:59 +01:00
√(noham)²
5dc55dbf62 Add CLI mode and refactor Oqee downloader workflow
Introduces a command-line interface to main.py for Oqee TV downloads, supporting argument parsing for channel, date, quality, and keys. Refactors stream selection, segment download, decryption, and merging logic for both CLI and interactive modes. Adds new utility modules for DRM key retrieval, segment merging, and decryption. Cleans up and simplifies Oqee client, input, stream, and time utilities for improved maintainability and usability.
2025-12-20 11:43:01 +01:00
√(noham)²
764df27f09 Add tqdm and tabulate, improve bruteforce progress reporting 2025-11-30 16:14:49 +01:00
√(noham)²
0ada591c0a Refactor manifest URL to use format_id variable 2025-11-20 20:42:25 +01:00
√(noham)²
52e0d24d18 Remove pssh.py and add PSSH generation to stream utils 2025-11-16 21:05:03 +01:00
√(noham)²
33fed17030 Initial project setup with main modules and utilities
Add main application logic, utility modules for stream and time handling, DRM key fetching, and manifest parsing. Includes example environment file, requirements, .gitignore, and README with project goals and todos.
2025-11-16 16:46:50 +01:00