• 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