-
0.2.0 Stable
released this
2025-10-06 07:56:39 +00:00 | 87 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 08:01:03 +00:00 | 109 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