-
0.3.1 Stable
released this
2025-10-16 10:22:21 +03:30 | 4 commits to master since this releaseSyncFM v0.3.1 Release Notes
Release Date: October 16, 2025
Overview
SyncFM v0.3.1 is a maintenance release that includes important cleanup functionality, code quality improvements, and various refactorings to enhance the stability and maintainability of the application.
What's New
Added
- Cleanup functionality: Added cleanup of comparison tables after sync operations in both CLI and GUI controllers to ensure temporary tables are properly removed after sync completion
Changes & Improvements
Code Quality
- Refactored CLI error handling decorator with better naming (using
func/wrapperinstead off/decorated_function) - Renamed method
_populate_sync_table_for_compareto_prepare_sync_queuefor better clarity - Improved type hinting and parameter formatting in GUI controller
- Added docstrings to worker classes for better documentation
- Improved exception handling with proper chaining in network models
- Formatted long function calls and parameter lists for better readability
- Replaced
network.__str__()calls withstr(network)for consistency - Added logging in CLI controller for better debugging
- Removed unused imports in GUI main window
- Added module docstrings for better code documentation
Fixes
- Fixed conditional logic in NetworkFactory to properly handle LONESTAR network type
- Cleaned up unused enum values in SyncStatus that were previously commented out
- Fixed formatting of long function calls in scrobble service
Technical Improvements
- Better error handling with proper exception chaining
- Improved code consistency and readability
- Enhanced logging for debugging purposes
- More maintainable code structure
Breaking Changes
There are no breaking changes in this release. The update is backward compatible with previous versions.
Installation
To upgrade to the latest version:
pip install git+https://git.hirad.it/Hirad/SyncFM.gitFeedback
We welcome feedback and bug reports. Please open an issue on the repository if you encounter any problems with this release.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.3.0 Stable
released this
2025-10-15 11:19:42 +03:30 | 8 commits to master since this releaseSyncFM v0.3.0 Release Notes
Release Date: October 15, 2025
🎉 What's New
Enhanced Sync Command
- Added a new
--number(-n) option to the sync command that allows users to specify the number of recent tracks to compare - The compare functionality has been integrated directly into the sync command for a more streamlined workflow
Improved User Experience
- Added a success message dialog in the GUI that appears after sync completion
- Better track status handling in the CLI interface with improved status display
- Enhanced error handling and null check for track data during metadata fetching
🔧 Improvements
Architecture Refinements
- Refactored CLI controller sync workflow for more efficient track comparison
- Enhanced scrobble service with better logging for troubleshooting
- Improved track counting methods with more flexible status handling
- Updated comparison logic between source and target tracks for more accurate sync
Code Quality
- Removed the separate compare command as its functionality is now part of the sync command
- Fixed null track data handling in ConsoleUI during metadata fetching
- Improved cleanup of comparison tables after sync operations
🐛 Fixes
- Fixed track status display in UI to properly show processing states
- Resolved issues with comparison logic between source and target tracks
- Added proper null checks to prevent errors during metadata fetching
📋 Migration Notes
- The
comparecommand has been removed and its functionality is now available through thesynccommand with appropriate flags - Existing scripts or workflows that used the
comparecommand will need to be updated to usesyncwith the appropriate flags instead
🚀 Getting Started
To upgrade to v0.3.0:
pip install git+https://git.hirad.it/Hirad/SyncFM.git💬 Feedback
We value your feedback! If you encounter any issues or have suggestions for future improvements, please open an issue on our GitHub repository.
Enjoy the new release!
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Added a new
-
0.2.0 Stable
released this
2025-10-06 11:26:39 +03:30 | 14 commits to master since this releaseSyncFM v0.2.0 Release Notes
Release Date: October 6, 2025
Overview
We're excited to announce the release of SyncFM v0.2.0, a major update that brings significant architectural improvements, enhanced user experience, and expanded functionality. This release focuses on improving the reliability and maintainability of the application while adding valuable new features for users.
🚀 New Features
Enhanced GUI Experience
- Improved Status Updates: Real-time status updates in the GUI now show track-by-track scrobbling progress with detailed information
- Color-coded Track Status: Visual indicators help users quickly identify the status of each track
- Better Cancellation Handling: Users can now cancel ongoing fetch operations with proper cleanup
- Dynamic UI Updates: The main window now dynamically updates table rows as tracks are processed
Improved CLI Functionality
- Enhanced Debugging: Added debug log when launching GUI for easier troubleshooting
- Better CLI Architecture: Refactored CLI architecture for improved functionality and user experience
🔧 Improvements
Architecture Refinements
- Service Architecture Overhaul: Complete refactoring of service architecture with enhanced GUI workers for better performance
- Lazy Loading: Implemented lazy loading for network instances and comparison databases, improving startup time and memory usage
- Dependency Injection: Improved dependency injection patterns throughout the application
- Better Error Handling: Enhanced error handling and logging throughout the application
Network Implementation Updates
- Official pylast Migration: Migrated from a custom pylast fork to the official pylast 6.0.0, ensuring better compatibility and maintenance
- Simplified Network Factory: Replaced custom NetworkFactory with a simplified NetworkType enum for cleaner code
- Network Configuration: Updated network configuration to use hostname instead of server for better flexibility
- Lazy-loaded Network Instances: Network instances are now loaded on-demand for improved performance
Database & Sync Enhancements
- Improved Synchronization: Enhanced track synchronization logic with better progress tracking
- Timestamp Handling: Fixed timestamp handling to ensure integer values for compatibility
- Comparison Logic: Improved comparison logic for identifying track differences between services
🐛 Bug Fixes
- Fixed album null value handling in scrobbling process
- Resolved timestamp conversion issues
- Fixed encoding conversion problems
- Corrected UI update race conditions in GUI workers
- Fixed configuration structure issues
- Addressed various pylint warnings for better code quality
- Resolved memory management issues for large track collections
📦 Dependency Updates
- Updated to official pylast 6.0.0
- Updated anyio from 4.10.0 to 4.11.0
- Added dateparser dependency for flexible date handling
🏗️ Architectural Changes
- Refactored networking and service modules for better maintainability
- Introduced lazy initialization for database and comparer components
- Improved track status handling with more granular states
- Enhanced worker cleanup after completion for better resource management
📈 Performance Improvements
- Better memory management during sync operations
- Optimized database queries and sync operations
- Reduced startup time through lazy loading
- More efficient progress tracking during scrobbling
Migration Notes
Users upgrading from v0.1.0 should experience a seamless transition. The application will continue to use existing configuration files but with improved compatibility due to the migration to the official pylast library.
Contributors
Thank you to all contributors who helped make this release possible through code contributions, bug reports, and feature suggestions.
Try It Out
To upgrade to SyncFM v0.2.0:
# If using the development version: git pull origin master # Or install via package manager when availableWe encourage users to upgrade and experience the improved stability and new features of v0.2.0. As always, we welcome feedback and bug reports through our issue tracker.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
released this
2025-09-22 11:31:03 +03:30 | 36 commits to master since this releaseSyncFM v0.1.0 - First Release
Overview
This is the first official release of SyncFM, a Python CLI tool designed to sync Last.fm scrobbles with custom GNU.fm instances like LoneStar. SyncFM provides both command-line and graphical interfaces for seamless music scrobble synchronization.
Features
Core Functionality
- Scrobble Syncing: Transfer your Last.fm listening history to GNU.fm instances
- Two-Way Comparison: Compare tracks between Last.fm and GNU.fm to identify differences
- Metadata Enrichment: Automatically fetch track metadata including MusicBrainz IDs and durations
- Smart Sync: Only sync tracks that don't already exist on the target platform
User Interfaces
- Command-Line Interface: Full-featured terminal-based interface with progress tracking
- Rich Terminal UI: Beautiful, interactive terminal interface with live progress updates
- Graphical User Interface: Modern desktop application built with PySide6
- Real-time Logging: Both CLI and GUI modes provide detailed operation logs
Technical Features
- Configurable: YAML-based configuration for account credentials and preferences
- Robust Error Handling: Automatic retry mechanisms for network failures
- Database Management: SQLite-backed local storage for efficient track management
- Cross-Platform: Works on Linux, macOS, and Windows (Python 3.10+)
Installation
# Install using pip pip install syncfm # Or install in development mode git clone https://git.hirad.it/Hirad/SyncFM.git cd SyncFM pip install -e .Configuration
Create a
config.yamlfile with your account credentials:accounts: lastfm: username: "your_lastfm_username" password: "your_lastfm_password" lonestar: username: "your_lonestar_username" password: "your_lonestar_password" api: key: "your_lastfm_api_key" secret: "your_lastfm_api_secret" networks: source: "lastfm" target: "lonestar"Usage
Command Line Interface
# Basic sync syncfm sync # Quick sync (resume from last synced track) syncfm sync --quick # Sync specific date range syncfm sync --from 1609459200 --to 1640995200 # Compare last 100 tracks syncfm compare --number 100 # Launch graphical interface syncfm --guiGraphical Interface
Launch the GUI with:
syncfm --guiThe GUI provides:
- Date range selection
- Visual progress tracking
- Real-time status updates
- Simple one-click sync operations
Requirements
- Python 3.10 or higher
- Last.fm API key and secret
- Accounts on both Last.fm and your target GNU.fm instance
Dependencies
- click: Command-line interface framework
- colorlog: Colored logging
- platformdirs: Cross-platform directory handling
- pylast: Last.fm API wrapper
- PyYAML: Configuration file parsing
- rich: Rich text formatting in terminal
- PySide6: GUI framework (for graphical interface)
Changelog
v0.1.0 - Initial Release
- Initial implementation of core syncing functionality
- Support for both CLI and GUI interfaces
- Configuration management system
- Database-backed track storage
- Metadata fetching from Last.fm
- Progress tracking and logging
- Error handling and retry mechanisms
License
GNU General Public License v3.0 or later (GPLv3+)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
For issues, feature requests, or questions, please visit the project repository at https://git.hirad.it/Hirad/SyncFM
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
0 downloads