Skip to content

Releases: MPZ-00/voe-dl

v1.8.0: CLI and Abort Improvements

20 Nov 00:34
5f397ef

Choose a tag to compare

This release brings major improvements to the command-line interface, custom filename generation, and graceful abort handling for voe-dl.

New Features

Custom Filename Generation

  • --name flag: Set custom base names for downloaded videos
  • --numbering flag: Automatically add episode numbering in S##E## format
    • Extracts episode tags from URLs (e.g., S01E05, S2E10)
    • Generates sequential numbering if no tag is found
    • Supports flexible formats (S1E5 to S99E99)
    • Defaults to "Episode" prefix when used without --name
  • #: title prefix: Set a custom title for batch downloads by adding #: Title as the first line in your links file

Dry-Run Mode

  • --dry-run flag: Test your download setup without actually downloading files
  • Perfect for validating links, checking filename patterns, and testing configurations

Graceful Abort Handling

  • Ctrl+C support: Press Ctrl+C to gracefully abort all downloads
  • SIGINT signal handler: Immediate response to abort signals (no waiting for blocking I/O)
  • Interactive cleanup prompt: Choose whether to keep or delete .part files after abort
    • Keep: Resume downloads later
    • Delete: Start fresh next time
  • Progress hooks: yt-dlp downloads now respect abort signals during active transfers
  • Custom exception: New DownloadAbortedException for clearer error handling

Enhanced CLI

  • Mutually exclusive arguments: -u (single URL) and -l (list file) are now properly validated
  • Worker control: Configure parallel download threads with -w flag (default: 4)

Improvements

Multi-Threading Enhancements

  • Global stop event for coordinating abort across all threads
  • Proper executor shutdown with future cancellation on abort
  • Thread-safe argument passing using copy.copy()
  • Separate success and failure counters for better progress reporting
  • Eliminated code duplication with helper functions

Better User Experience

  • Output flushing to prevent interleaved messages from threads
  • Clear status messages for downloads in progress
  • Improved error reporting with detailed failure information

Bug Fixes

  • Fixed Ctrl+C not stopping downloads immediately
  • Fixed PermissionError when cleaning up .part files during active downloads
  • Fixed CancelledError tracebacks appearing in console
  • Fixed redundant future completion checks
  • Fixed signal handler being registered multiple times

Documentation

  • Comprehensive README updates with examples for all new features
  • CHANGELOG fully updated with all changes
  • Build instructions maintained in BUILD.md

Credits

Special thanks to all contributors and the GitHub Copilot review system for helping improve code quality!

Installation

Download voe-dl.exe from the releases page or run from source:

git clone https://github.com/MPZ-00/voe-dl.git
cd voe-dl
pip install -r requirements.txt
python dl.py -h

Example Usage

# Single download with custom name
voe-dl -u https://voe.sx/video --name "MyVideo"

# Batch download with episode numbering
voe-dl -l links.txt --name "Series Name" --numbering

# Test without downloading
voe-dl -l links.txt --dry-run

# 8 parallel downloads
voe-dl -l links.txt -w 8

Full Changelog: v1.7.3...v1.8.0

v1.7.3

28 May 18:29

Choose a tag to compare

Release Date: 2025-05-28

Added

  • Updated README.md for improved clarity and structure.

Changed

  • Improved formatting and consistency across documentation files.

v1.7.2

06 May 01:16

Choose a tag to compare

[v1.7.2] - Upstream Merge & Sync

Release Date: 2025-05-06

Added

  • Merged latest changes from upstream/main, including upstream's implementation of Method 7.

Removed

  • Redundant upstream Method 7 code block — already present and documented in earlier implementation.

Changed

  • Codebase synced with upstream while preserving local improvements and structure.

[v1.7.1] - Improved Bait Detection

Release Date: 2025-05-06

Added

  • Enhanced bait detection logic to include additional patterns for filenames and domains.

[v1.7.0] - Method 8 for Source Detection

Release Date: 2025-05-06

Added

  • Implemented Method 8 for source detection, contributed by @Domkeykong.
    • Decoding process includes multiple steps: ROT13, pattern replacement, Base64 decoding, character shifting, reversing, and final Base64 decoding.
    • Handles obfuscated JSON sources embedded in <script type="application/json"> tags.
    • Added helper functions for decoding and deobfuscation.

Changed

  • Updated help() function to include Method 8 in the version history.
  • Improved error handling for obfuscated JSON parsing.

v1.6.0

21 Apr 00:56

Choose a tag to compare

[v1.6.0] - Enhanced Source Detection with Method 7

Release Date: 2025-04-21

Added

  • Implemented Method 7 for source detection, contributed by @th3infinity and @ottobauer.
    • Decoding process includes multiple steps: ROT13, pattern replacement, underscore removal, Base64 decoding, character shifting, reversing, and final Base64 decoding.
    • Enhanced handling of encrypted and hidden sources.

Changed

  • Improved robustness of source detection logic to accommodate evolving site structures.

v1.5.1

06 Apr 01:57

Choose a tag to compare

Changelog

[v1.5.1] - Documentation Updates

Release Date: 2025-04-06

Added

  • Updated README.md with detailed usage instructions, including examples for single and batch downloads.
  • Added information about the -w argument for parallel downloads.
  • Included troubleshooting tips and common error fixes.

Changed

  • Improved the help() function to include a description of the -w argument.

[v1.5.0] - Improved Source Detection and Bait Handling

Release Date: 2025-04-06

Added

  • Introduced functionality to identify and ignore "bait" sources using a predefined list.
  • Enhanced Method 6 to support additional patterns like var a168c = '...' for extracting encoded sources.
  • Added a clean_base64 function to safely handle and validate Base64 strings.

Changed

  • Improved error handling and debugging output for better traceability.
  • Ensured flexibility by allowing easy extension of "bait" patterns and encoded source patterns.