• 0.3.1 0bda2efa26

    0.3.1 Stable

    Hirad released this 2025-10-16 10:22:21 +03:30 | 4 commits to master since this release

    SyncFM 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/wrapper instead of f/decorated_function)
    • Renamed method _populate_sync_table_for_compare to _prepare_sync_queue for 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 with str(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.git
    

    Feedback

    We welcome feedback and bug reports. Please open an issue on the repository if you encounter any problems with this release.

    Downloads
  • 0.3.0 2e23355174

    0.3.0 Stable

    Hirad released this 2025-10-15 11:19:42 +03:30 | 8 commits to master since this release

    SyncFM 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 compare command has been removed and its functionality is now available through the sync command with appropriate flags
    • Existing scripts or workflows that used the compare command will need to be updated to use sync with 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
  • 0.2.0 876c79042e

    0.2.0 Stable

    Hirad released this 2025-10-06 11:26:39 +03:30 | 14 commits to master since this release

    SyncFM 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 available
    

    We 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
  • 0.1.0 234b0f056d

    Hirad released this 2025-09-22 11:31:03 +03:30 | 36 commits to master since this release

    SyncFM 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.yaml file 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 --gui
    

    Graphical Interface

    Launch the GUI with:

    syncfm --gui
    

    The 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