• 0.2.0 876c79042e

    0.2.0 Stable

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