Changelog
All notable changes to the Ultimate Media Downloader project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Version 3.0.1
Release Date: July 2026
Added
- YouTube Music Handler: Integrated
youtube_music_handler.pyto properly detect and handlemusic.youtube.comlinks.
Version 3.0.0
Release Date: June 2026
This is a major release introducing massive platform expansion, AI integration, and enriched terminal experiences.
Added
- 14 New Platform Handlers:
- Music: Amazon Music, Boomplay, Audiomack
- Video/Streaming: Dailymotion, Vimeo, Rumble, Twitch, Kick, TED, BitChute, Flickr, PeerTube, Veoh, TrillerTV
- Concurrent Downloading: Added robust concurrent downloading support across all handlers to significantly speed up batch downloads.
- Terminal Image Rendering: Added
sixelsupport to render images (e.g. thumbnails, wallpapers) directly in modern terminal emulators. - AI-Powered YouTube Scoring: Introduced optional semantic matching (
sentence-transformersandtorch) to deeply improve the accuracy of YouTube searches when resolving music streams. - Dynamic Patching: Introduced
patch_handlers.pyto seamlessly manage handler overrides. - Testing Scripts: Expanded testing coverage with
test_new_handlers.pyandtest_video_handlers.py.
Changed
- Updated
ultimate_downloader.pyto seamlessly orchestrate the 14 new handlers. - Overhauled
requirements.txtto include new dependencies (sixel) and optional AI dependencies.
Version 2.2.1
Release Date: March 2026
Issue #15
Bug Description
Downloaded media files (e.g., .mp4) trigger a macOS security warning:
"Apple could not verify this file is free of malware that may harm your Mac or compromise your privacy."
This happens even though the file is a standard video file and expected to be safe.
Steps to Reproduce
- Use
umdto download a video (e.g., YouTube link) - Locate downloaded
.mp4file - Try opening it on macOS
- Warning appears
Expected Behavior
- Downloaded media files should open normally without security warnings
- Files should be recognized as safe by macOS
Actual Behavior
- macOS blocks the file
- Shows malware verification warning
- Requires manual override ("Open Anyway")
Environment
- OS: macOS (Ventura / Sonoma)
- Tool version: v2.2.1
- File type:
.mp4
Possible Cause
- Files are not signed/notarized, so macOS Gatekeeper flags them
- Extended attributes (
com.apple.quarantine) added during download
Fixed (Cross-Platform Download Security Markers)
- Added automatic post-download cleanup for OS security markers when present:
- macOS: removes
com.apple.quarantine - Windows: removes
Zone.Identifier(Mark-of-the-Web) - Linux: removes common origin/referrer xattrs (
user.xdg.origin.url,user.xdg.referrer.url)
- macOS: removes
- Cleanup now runs in both normal success flow and fallback file-detection success flow.
- Added clearer success/error messaging for marker cleanup in verbose mode.
Version 2.2.0
Release Date: February 2026
This release adds a dedicated wallpaper downloader module for 4kwallpapers.com with a full interactive browsing and download experience.
Added
- 4K Wallpapers Handler (
handlers/four_k_wallpapers_handler.py):- Interactive browsing with category, tag, and search menus
- Pagination support — browse up to 2400 wallpapers per session using
?page=N - Range-based selection (
1,3,4-7,10-12,all, or press Enter to skip) - Multi-resolution download (auto-picks highest available resolution per image)
- Parallel downloads with Rich progress bars
- Cloudflare bypass using bare
cloudscrapersession (no browser args) - Home/Featured, Recently Added, Browse by Tag, Categories, and Search modes
- Direct URL routing — paste any 4kwallpapers.com link to auto-detect mode
fetch_listing_paginated()with deduplication and early-termination- Graceful fallback when a page returns fewer than 20 results
- CLI flags (
cli_args.py):--wallpaper— open 4K Wallpapers interactive menu directly--wallpaper-search QUERY— jump straight to search results
- Interactive mode commands (
ultimate_downloader.py):- New commands
wallpaper,wallpapers,wpin interactive prompt - Pasting a 4kwallpapers.com URL is now auto-routed to the handler
- New commands
- Platform detection (
utils/platform_utils.py,utils/url_validator.py):4kwallpapers.comadded to supported platforms and URL validator
Changed
- Interactive banner and help menu updated to show
wallpaper / wpcommand ultimate_downloader.pyinstantiatesFourKWallpapersHandleron startup when availablehandlers/__init__.pyexportsFourKWallpapersHandler
Fixed
- Cloudflare challenge responses (8 KB page) caused by incorrect
cloudscraperbrowser args — fixed by removing browser emulation arguments from session creation - Pasting a 4kwallpapers.com URL in interactive mode no longer triggers a yt-dlp error
Technical Changes
- Added
four_k_wallpapers_handler.py(~950 lines) withFourKWallpapersHandlerclass - Implemented
_parse_selection(raw, total)for flexible range parsing - Implemented
fetch_listing_paginated(base_url, max_wallpapers)for multi-page scraping - Search results limited to one page (site restriction; 24 results max)
- Download URLs constructed as
https://4kwallpapers.com/images/wallpapers/<slug>-<WxH>-<id>.png
Version 2.1.0
Release Date: January 2026
This release focuses on social media platform support and handler improvements.
Added
- Instagram Handler with comprehensive features:
- Playwright-based browser automation for reliable extraction
- Cookie persistence for authenticated sessions
- Support for posts, reels, stories, and IGTV
- Profile downloads with interactive menu options
- Bulk download with progress tracking
- Range selection (download posts 1-10, 5-20, etc.)
- ZIP file creation for bundled downloads
- Multi-format support (images, videos, carousels)
- Story downloads before 24-hour expiration
- User agent rotation to avoid detection
- Error recovery for failed downloads
- Rich progress bars with detailed status
- JioSaavn Handler with full music platform support:
- Track, album, and playlist downloads via YouTube search
- Intelligent YouTube scoring for accurate matches
- Full metadata extraction and embedding
- Interactive song selection for albums/playlists
- Range and selective download support (1,3-5,7)
- High-quality audio with cover art embedding
- HTML entity decoding for proper character display
- Gaana Handler with comprehensive Indian music support:
- Track, album, playlist, and artist downloads
- Advanced web scraping with BeautifulSoup
- Interactive song selection with flexible input (all, 1-10, 1,3,5)
- YouTube search with intelligent scoring algorithm
- Full metadata extraction (title, artist, album, year)
- Cover art embedding from Gaana artwork
- HTML entity decoding for special characters
- Multiple format support (MP3, M4A, FLAC)
- Pinterest Handler with advanced features:
- Multi-tier download strategy (gallery-dl → pinterest-downloader → yt-dlp → web scraping)
- Interactive prompt for custom pin count
- Real-time progress tracking with file names
- High-quality media selection (1000px+ images)
- 10 regex patterns and 7 extraction methods for robust scraping
- Support for profiles, boards, and individual pins
- No metadata JSON files (clean downloads)
- LinkedIn Handler for professional content:
- Support for direct post URLs with media
- Rich progress bars with download speed and ETA
- No Selenium dependency (faster and more reliable)
- Video and image extraction from posts
- Simplified architecture for reliability
- Reddit Handler for social media content:
- Download posts with media (videos, images, GIFs)
- User profile content downloads
- PRAW integration for API access
- Automatic ZIP file creation for bulk downloads
- Support for v.redd.it and i.redd.it domains
- Gallery post support (multiple images)
- Fallback to yt-dlp and web scraping
- External library support:
playwright>=1.40.0for Instagram browser automationgallery-dl>=1.26.0for Pinterestpinterest-downloader>=1.0.0as alternativepraw>=7.7.1for Reddit API access
Changed
- Added six major platform handlers (Instagram, JioSaavn, Gaana, Pinterest, LinkedIn, Reddit)
- LinkedIn handler simplified to direct URLs only (no profile scraping)
- Pinterest handler replaced Selenium with advanced web scraping
- Instagram handler uses Playwright instead of traditional requests-only approach
- JioSaavn and Gaana handlers use intelligent YouTube search with scoring
- Improved progress display across all handlers
- Updated requirements.txt with Playwright and optional external libraries
- Enhanced metadata extraction for Indian music platforms
Fixed
- Selenium "Bad CPU type" errors (removed Selenium from LinkedIn and Pinterest)
- Pinterest metadata JSON files no longer created
- Instagram login and authentication handling via cookies
- JioSaavn and Gaana metadata extraction with proper HTML entity decoding
- Video quality now defaults to high
- Real-time progress tracking for downloads
- Character encoding issues in Indian music platforms
Technical Changes
- Implemented Playwright browser automation for Instagram
- Added cookie management system for Instagram sessions
- Created intelligent YouTube scoring algorithm for music platforms
- Implemented BeautifulSoup scraping for JioSaavn and Gaana
- Added flexible song selection parsing (ranges, lists, all)
- Implemented subprocess streaming for real-time gallery-dl output
- Added Rich progress bars to download operations
- Created multi-method fallback system for Pinterest
- Added PRAW integration for Reddit API access
- Removed Selenium dependencies where not needed
- Enhanced error handling for social media platforms
- Implemented HTML entity decoding for international characters
Version 2.0.0
Release Date: December 2025
This is a major release with significant architectural improvements and new features.
Added
- Modular handler system for platform-specific downloads
- Spotify handler with API integration and YouTube search fallback
- Apple Music handler with metadata extraction
- Tumblr handler for blog media downloads
- Pornhub, XNXX, and xHamster handlers
- HiAnime handler for anime series and episodes
- TikTok handler for TikTok video downloads with SSL bypass
- Eporner handler with advanced SSL/TLS handling
- HQPorner handler for high-quality video downloads
- Beeg handler with API integration and curl fallback
- Generic site downloader with advanced bypass capabilities
- YouTube scoring algorithm for accurate search results
- Rich CLI interface with progress bars and colored output
- Interactive mode for guided downloads
- Batch download support with parallel processing
- Configuration file support (config.json)
- Environment variable configuration
- Comprehensive documentation in
/documentationsfolder
Changed
- Refactored codebase into modular components
- Moved utility functions to dedicated modules in
/utils - Improved error handling with graceful degradation
- Enhanced logging system with warning/error counting
- Updated default download directory to
~/Downloads/UltimateDownloader - Improved filename sanitization for cross-platform compatibility
Fixed
- SSL certificate verification issues on certain sites
- Rate limiting detection and automatic delays
- Memory usage optimization for large playlists
- Resume functionality for interrupted downloads
Technical Changes
- Split monolithic code into handler modules
- Created utility layer with reusable functions
- Added browser automation utilities
- Implemented proxy rotation support
- Added Cloudflare bypass capabilities
Version 1.0.5
Release Date: October 2025
Added
- pipx installation support
- Global
umdcommand - Installation scripts for all platforms
- Basic playlist download support
Changed
- Improved installation process
- Better error messages
- Updated dependencies
Fixed
- PATH issues on various operating systems
- Permission problems on Linux/macOS
Version 1.0.0
Release Date: September 2025
Initial release of Ultimate Media Downloader.
Features
- YouTube video and audio downloads
- Basic playlist support
- Quality selection
- Format conversion
- Metadata embedding
- Command-line interface
Roadmap
Planned for Future Releases
Version 2.3.0
- GUI application using Electron or native toolkit
- Download scheduling and queue management
- Browser extension for one-click downloads
- Enhanced metadata from MusicBrainz and Discogs
- Mobile companion app
- Cloud storage integration
- Download history with search
- Automatic updates
Version 3.0.0
- Plugin system for community extensions
- REST API for remote control
- Docker containerization
- Multi-language support
Upgrade Guide
From 1.x to 2.0
-
Uninstall the old version:
pip uninstall ultimate-downloader #or run the script ./uninstall.sh #for mac .\uninstall.bat # for windows -
Clone the new repository:
git clone https://codeberg.org/nk2552003/umd.git cd umd -
Install the new version:
./scripts/install.sh -
Your existing downloads are not affected. The new version uses a different default directory.
Configuration Migration
If you had custom settings, create a new config.json based on the template provided in the repository.
Contributing to the Changelog
When contributing to the project:
- Add your changes under the "Unreleased" section
- Use the following categories:
- Added for new features
- Changed for changes in existing functionality
- Deprecated for soon-to-be removed features
- Removed for now removed features
- Fixed for any bug fixes
- Security for vulnerability fixes
Release Process
Releases follow this workflow:
Loading diagram...
- All changes are developed and tested
- Version number is updated in relevant files
- Changelog is updated with release notes
- Git tag is created for the release
- Release is published on Codeberg