Releases: slmlm2009/SubFast
v3.2.1
SubFast v3.2.1 Changelog
Release Date: 28-OCT-2025
🚀 Enhanced Pattern Features
1. Versioning Support
Patterns Enhanced: 26, 27, 28, 29
Feature: Allow for optional version tags after episode numbers (allow for letter v or V followed by only by one digit after episode number)
Examples:
Show - 15v2.mkv→ S01E15 (wasn't detected in v3.2.0)Show - 15vv2.mkv→ None (Intended behavior)Show - 15v22.mkv→ None (Intended behavior)
2. Pattern 26 Specific Enhancements
Before: Basic ## - ## matching with potential complications errors when digits found before the pattern
After: Enhanced to prevents digits before pattern the help with cases where show name is ending with a digit
Examples:
[Crunchyroll] Kaiju8 - 01.mkv→ S01E1 (was detected as S08E01 in v3.2.0)
v3.2.0
SubFast v3.2.0 Changelog
SubFast v3.2.0 - Smarter. Faster. Better tested. 🚀
Release Date: 17-OCT-2025
From Version: 3.1.0 (Internal release focusing on project directory restructure, refactoring and sub-moduleing)
Major Focus: Pattern recognition expansion and bug fixes + internal development comprehensive testing framework
🎯 Change Summary
Version 3.2.0 represents a major milestone in SubFast's maturity, delivering:
- 7 New Episode Patterns - Expanded the total to 30 patterns
- FINAL SEASON Logic - Intelligent contextual matching for anime final seasons
- Comprehensive Testing Infrastructure (For development) - Complete test framework with seamless new pattern integratio
- mkvmerge updated to latest stable version (v.95)
🔄 Migration Notes
From v3.0 to v3.2:
Just paste the subfast folder in in the root of C drive C:\ and accept any file replacements
🚀 Major Features
Adding 7 New Patterns + Enhancement for Existing Patterns
New Patterns Added:
Pattern 23: Season [space] Ep[space]number
Show Season 2 Ep 15
Pattern 24: Ep[number] (no season, defaults to S01)
Show Ep05 → S01E05
Pattern 25: E[number] (no season, defaults to S01)
Show E10 → S01E10
Pattern 26: [number] - [number] (season - episode, no prefix)
Show 2 - 15 → S02E15
Pattern 27: [number]-[number] (season-episode, hyphen only)
Show 2-15 → S02E15
Pattern 28: [square brackets][number][square brackets]
Show [15] → S01E15
Pattern 29: Underscore [number] (episode only, defaults to S01)
Show_09 → S01E09
Note: Patterns 24-29 are all low priority and only considered of there are no other matches before them
Supporting FINAL SEASON Contextual Matching ⭐ NEW
Intelligent season inference for anime final seasons
Problem Solved:
Anime final seasons often released with "FINAL SEASON" in filename but no season number:
Subtitle: Boku no Hero Academia FINAL SEASON - 01.ass (defaults to S01E01)
Video: My.Hero.Academia.S08E01.mkv (actual S08E01)
Result: NO MATCH ❌ (S01 ≠ S08)
Solution - Pattern 30:
Contextual matching with bidirectional season inference
Subtitle: Boku no Hero Academia FINAL SEASON - 01.ass (inferred from subtitle file S08E01)
Video: My.Hero.Academia.S08E01.mkv (actual S08E01)
Result: MATCH ✅
Bug Fixed and other Enhancements:
Movie Mode Activation Bug
- Issue: Movie mode activating incorrectly with multiple episode files
- Fix: Changed condition to check total files (not remaining)
Pattern - {XX} Hardening:
Enhanced to support OnePiece-style long episode numbers (1000+)
Pattern 25 now excludes:
- Years (1900-2099) to prevent false matches
- Resolution patterns (720p, 1080p, etc.)
- Codec patterns (x264, x265, AV1, etc.)
# Enhanced regex with negative lookbehind
r'(?<!(?:19|20)\d{2})[\s._-](?P<episode>\d{3,})(?!p)(?!\s*(?:x264|x265|AV1|AAC))'Existing Patterns Enhancements:
- Pattern 1 (S[#]E[#]): Added VAR4-VAR6 with flexible separators
- Pattern 4 (S[#]-E[#]): Added VAR4-VAR5 with underscore separator
- Pattern 5 (S[#]-EP[#]): Added VAR4-VAR6 with space variations
Pattern Reordering:
Old Order: Old original ID assignment (20, 21, 22...)
New Order: By specificity (high to low)
Reordering Rationale:
- High Specificity First: Patterns with unique markers processed first
- Prevent False Matches: More specific patterns capture intent before generic ones
Pattern Hardening:
Applied to Patterns 26, 27, 28:
- Episode number range validation (1-9999)
- Season number validation (1-99)
- Prevents year/resolution false matches
v3.0.0
SubFast - Version 3.0.0 Release Notes
Release Date: 09-OCT-2025
Major Version Update: v2.5.0 → v3.0.0
🎉 What's New in v3.0.0
SubFast v3.0.0 is a major release that brings a new SubFast branding and a second brand new major feature which is automatic soft-subtitle embedding into detected MKV videos matches (Automatic implementation of mkvmerge of the MKVToolNix suite)
🌟 Major Changes
1. Embed Subtitles Feature
Soft-subtitle embedding of external subtitle files directly into detected MKV video files matches for seamless playback.
- Automatic subtitle/video match identification using same renaming logic (No need for renaming)
- Language code detection and configuration
- Default subtitle flag control
- Backup management
- Batch processing with progress tracking
- Configurable CSV export for reporting the results
2. Dual-Feature Windows Context Menu
- New: Unified "SubFast" cascading menu when right click:
- SubFast (parent menu with icon)
- → Rename subtitles
- → Embed subtitles
- SubFast (parent menu with icon)
3. Smart Console Behavior
- Auto-close on success - No manual window closing needed
- Stay open on errors - Review error messages before closing
- Configurable via
keep_console_openin config.ini
📦 Migration Guide: Upgrading from v2.x to v3.0.0
Step 1: Remove Old Context Menu (Required)
-
Navigate to your old installation folder:
C:\rename_subtitles_to_match_videos_ar\ -
If you have v2.0.0 or newer:
- Double-click:
remove_subtitle_rename_menu.reg - Click "Yes" to remove
- Double-click:
-
Verify removal:
- Right-click in any folder
- Old context menu entries should be gone
-
Delete the entire folder
C:\rename_subtitles_to_match_videos_ar\
Step 2: Delete Old Installation (Safe to Remove)
- Close any open Explorer windows in the old folder
- Delete the entire folder:
C:\rename_subtitles_to_match_videos_ar\
Step 3: Install SubFast v3.0.0
-
Download SubFast v3.0.0 ZIP file (two bundles with one of them pre-configured for Arabic locals)
-
Extract to the new location:
C:\subfast\IMPORTANT: The exact path must be
C:\subfast
Step 4: Install New Context Menu
-
Navigate to:
C:\subfast\ -
Double-click:
add_subfast_menu.reg -
Click "Yes" when prompted to merge registry keys
-
Approve UAC if prompted
-
Verify installation:
- Right-click in any folder
- Look for SubFast menu with icon
- Expand it to see:
- Rename subtitles
- Embed subtitles
🔧 Configuration Changes
v3.0.0 format:
[General]
detected_video_extensions = mkv, mp4
detected_subtitle_extensions = srt, ass
keep_console_open = false
[Renaming]
renaming_report = true
renaming_language_suffix = ar
[Embedding]
mkvmerge_path = bin\mkvmerge.exe
embedding_language_code = ara
default_flag = true
embedding_report = trueChanges:
- ✅ Split into separate
[Renaming]and[Embedding]sections - ✅ Added
keep_console_openfor console behavior
🛠️ Technical Improvements
Error Handling
- Improved error messages with specific file paths
- Better validation of required files
- Clear troubleshooting guidance
Project Directory Structure
-
Old:
rename_subtitles_to_match_videos_ar/ ├── rename_subtitles_to_match_videos_ar.py ├── config.ini ├── ARAB_STREAMS_LOGO.ico ├── CONFIGURATION_README.md ├── ARAB_STREAMS_LOGO.ico ├── add_subtitle_rename_menu.reg └── remove_subtitle_rename_menu.reg -
New: Organized folder hierarchy
subfast/ ├── scripts/ ← Python scripts ├── bin/ ← Binary tools (mkvmerge) ├── resources/ ← Logo and documentation ├── config.ini ← Root level for easy access └── registry files... ← Root level for easy installation
SubFast-v3.0.0-preview
Preview release for v3.0.0 with "SubFast" full rebranding and initial implementation of subtitle auto embedding feature (using mkvmerge to merge subtitle into mkv files).
- Extract the zipped file
- Drop
preview_rename_subtitles_to_match_videos_arto your "C" drive rootC:\preview_rename_subtitles_to_match_videos_ar\ - Double click
add_subtitle_rename_menu.regandadd_subtitle_embed_menu.regand approve.
If you have old registry files from v2.5.0 or earlier remove them first (using v2.5.0 or earlierremove_subtitle_rename_menu.regotherwise you will have extra option in your right click menu.
Now you can merge subtitle files to matching .mkv episodes with one click by clicking "SubFast - Ember" in windows right click context menu
Enjoy!
v.2.5.0
Changelog
[v2.5.0] - 2025-02-10
Major Performance Optimizations 🚀
- Performance gain on Large datasets (sample of 1145 episodes and their respective subtitles):
- Before: 10.707 seconds
- After: 0.892 seconds
- Speedup: 12.00x faster! 🚀
Enhanced Episode Pattern Detection 📁 (9 new patterns adding to a total of 25)
S## - ##format (e.g., ShowName S01 - 05.mkv → S01E05)S## - E##format (e.g., ShowName S2 - E10.srt → S02E10)S## - EP##format (e.g., ShowName S01 - EP05.mkv → S01E05)- Ordinal season patterns (1st/2nd/3rd/etc. Season)
- With dash:
ShowName 1st Season - 05.mkv→ S01E05 - With E:
ShowName 2nd Season E10.srt→ S02E10 - With EP:
ShowName 3rd Season EP8.mp4→ S03E08
- With dash:
Full Configuration System via config.ini 🔧
- Configurable language suffix (default:
.ar) - Configurable video file formats (default:
.mkv,.mp4) - Configurable subtitle file formats (default:
.srt,.ass) - CSV export enable/disable control
Performance Tracking
- Improved CSV report includes execution time in the summary section for benchmarking
- Console PERFORMANCE section showing time, files processed, and rename count
Fixed
- Hotfix: ##x## Pattern and Media Resolution Conflict
- Bug: Negative "Subtitles Missing Videos" Count in Movie Mode
v2.0.0
Version 2.0.0 Release Overview
🚀 Major Updates & New Features
Enhanced Pattern Recognition
- Massive expansion of supported episode patterns - now recognizes 15+ different naming conventions
- Added support for
Season X Episode Ypatterns with various separators and spacing - New support for
SeasonXEpY,S##Ep##, and##x##formats - Better handling of episodes with 100+ numbers (no forced zero-padding)
- Context-aware episode matching that handles inconsistent padding (e.g., S02E015 vs S02E15)
Windows Integration
- Right-click context menu integration for seamless Windows Explorer usage
- No more command line required - just right-click in any folder
- Custom icon integration for professional appearance
- Registry files included for easy installation/removal
Robust Error Handling
- Comprehensive edge case handling tested across 65+ scenarios
- Better handling of special characters in filenames
- Improved file extension detection (.mkv, .mp4, .srt, .ass)
- Safe renaming with conflict resolution
Enhanced Reporting
- Detailed analysis summary showing formatted and readable matched and unmatched episodes in console
- CSV export functionality with comprehensive renaming records, it will be auto-generated by default in the working directory under the name renaming_report.csv (can be enabled/disabled by commenting out the export_analysis_to_csv() function at the end of rename_subtitles_to_match_videos_ar.py)
🔧 Technical Improvements
- Optimized regex patterns for better performance and accuracy
- Memory-efficient processing for large file collections
- Consistent sorting algorithms for predictable behavior
- Modular code structure with separated analysis and renaming functions
📁 Package Contents
rename_subtitles_to_match_videos_ar.py- Main script with all enhancementsadd_subtitle_rename_menu.reg- Windows context menu installer (one-time registry modification)remove_subtitle_rename_menu.reg- Context menu removal tool (one-time registry modification)ARAB_STREAMS_LOGO.ico- Custom icon for context menu
Usage
Windows Context Menu (v2.0.0+)
- Navigate to folder containing video and subtitle files
- Right-click in empty folder space
- Select "Rename subtitle files"
- Script runs automatically and renaming_report.csv auto-generated in the same directory to review the whole renaming records in readable format with informative details
Command Line
- Open terminal/command prompt in the folder containing the video and subtitle files
- Run the Python script {> python .\rename_subtitles_to_match_videos_ar.py}
- Review the detailed output and analysis printed in console
📋 Requirements
- Windows Operating System
- Python 3.x installed
- Python Launcher (py.exe) installed in default location
- Administrator privileges for registry modification (one-time setup)
Initial v.1.0.0
Initial release with limited functionality