-
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