Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

calsmith99/Soulseekarr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

51 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Soulseekarr

A bridge between Lidarr, Slskd and Subsonic server

This project contains a variety of scripts to help with organising your music library.

--- WARNING ---

This project currently makes a lot of assumptions about how you manage your music library. Please read this carefully to ensure you don't lose any media

  • The starred or favourited feature in subsonic/navidrome is used to determine which songs or albums are wanted and should be kept.
  • Starred albums will automatically get their missing songs requested and downloaded
  • Lidarr should be set to NOT automatically move any files, as this interferes with sorting between Incomplete and Not Owned

Features

Slskd Download Monitoring

Displays the progress and status of slskd downloads

Slskd search results

Displays the search results from slskd and which files were selected for download

Activity monitor

Displays a list of specific actions run by various scripts

Library Expiry

Displays how long each album in your library that is not starred has until it is removed

Scripts

Owned / Not Owned / Incomplete Library manager

Automatically organises media files based on music you own, and music you haven't bought yet but still want available. An additional organisation layer can be added to keep albums that have every song separate from albums containing just a few songs from playlists

I use this to keep 3 different libraries available in my subsonic player. So I can easily see full albums in my library when deciding what to listen to

Spotify playlist sync

Gets tracks from a spotify playlist and requests them for download from Slskd, and ensures the playlist is synced to your subsonic library

File cleanup

Remove tracks/albums after x days if they are not starred in subsonic. Expiry time can be managed with the env variable CLEANUP_DAYS

This is useful for downloading new releases to check out, or recommended albums without hoarding a bunch of un-needed music. Think of it like renting a new album


More info to add later

SoulSeekarr

A modern Lidarr-style web interface for managing your music automation scripts with real-time monitoring, persistent execution history, and professional arr-style design.

โœจ Features

  • ๐ŸŽจ Professional arr-style UI - Clean, dark interface inspired by Lidarr/Sonarr/Radarr
  • ๐Ÿ“Š Persistent execution queue - Survives container restarts with SQLite database
  • ๐Ÿ“ Live log viewing - Real-time script output with modal viewer
  • ๐Ÿ”„ Dynamic script discovery - Automatically detects scripts in /scripts folder
  • โšก Real-time status updates - Live progress tracking and status badges
  • ๏ฟฝ Download logs - Export execution logs as timestamped files
  • ๐Ÿท๏ธ Script metadata system - Rich descriptions, tags, and version info
  • ๐Ÿ—‚๏ธ Organized sections - Commands and Tests automatically categorized

๏ฟฝ Quick Start

  1. Start SoulSeekarr:

    docker-compose up -d
  2. Access the web interface: Open your browser and go to: http://localhost:5000

  3. Run scripts: Click "Run" or "Dry Run" for any script. Click any queue item to view detailed logs.

๏ฟฝ Script Organization

Scripts are automatically discovered from the /scripts folder with support for metadata:

#!/usr/bin/env python3
"""
Your Script Description

Name: Display Name
Author: SoulSeekarr
Version: 1.0
Section: commands  # or 'tests'
Tags: lidarr, automation, music
Supports dry run: true
"""

๐Ÿท๏ธ Tag Complete Albums ๐Ÿงช Testing

Checks all albums in Lidarr for completeness and tags complete albums as "Complete". Also removes the tag from albums that become incomplete. Recently fixed - currently being tested.

๐ŸŽฏ Track Starred Albums in Lidarr โ“ Untested

Automatically tracks all favorited albums from Navidrome in Lidarr with Standard quality profile. Adds missing artists and albums. Defaults to DRY-RUN mode for safety. New feature - needs testing.

๐ŸŽต Monitor Queue for Multipart Songs ๐Ÿšง Planned

Monitors playback queue to automatically queue multipart songs together (Pt. 1/2, Part I/II, etc.). Ensures song suites play continuously without interruption. Coming soon - placeholder only.

๐Ÿ”ง Test API โ“ Untested

Tests Navidrome API connectivity and basic functions. Basic API test - needs validation.

๐Ÿ“ฅ Process Downloads ๐Ÿ†• Enhanced

Automatically processes downloaded music files with audio fingerprinting and MusicBrainz metadata fixing before matching with Lidarr. Uses acoustic analysis to identify tracks even with missing metadata, then groups files by album, checks completeness, and organizes into appropriate directories. Features dual-strategy identification (audio + metadata) for maximum accuracy. Recently enhanced with AcoustID integration.

๐Ÿท๏ธ Development Status Legend

  • โœ… Tested - Thoroughly tested and production ready
  • ๐Ÿงช Testing - Functional but needs user testing
  • ๐Ÿ”ง Refinement - Works but could use improvements
  • ๐Ÿ†• Enhanced - Recently improved with new features
  • โ“ Untested - Needs initial user testing and validation
  • ๐Ÿšง Planned - Feature planned but not yet implemented
  • โš ๏ธ Experimental - Use with caution, may have issues

โš™๏ธ Configuration

All configuration is done through environment variables in the docker-compose.yml file:

environment:
  - USER=your_navidrome_username
  - PASS=your_navidrome_password  
  - BASE_URL=http://your-navidrome-ip:4533/rest
  - MUSIC_DIR=/music
  - CLEANUP_DAYS=1
  - DRY_RUN=true
  # Lidarr Configuration
  - LIDARR_URL=http://your-lidarr-ip:8686
  - LIDARR_API_KEY=your_lidarr_api_key

Key Settings:

  • USER/PASS: Your Navidrome login credentials
  • BASE_URL: Your Navidrome API endpoint
  • MUSIC_DIR: Path to your music directory inside the container
  • CLEANUP_DAYS: How many days old songs must be before cleanup
  • DRY_RUN: Set to false to actually delete files (default: true for safety)
  • LIDARR_URL: Your Lidarr base URL
  • LIDARR_API_KEY: Your Lidarr API key (found in Settings โ†’ General)

๐ŸŒ Web Interface Features

  • ๐ŸŽฎ One-Click Script Execution: Run any script with a single button click
  • ๐Ÿ“Š Real-Time Status: See which scripts are running, completed, or failed
  • ๐Ÿ“บ Live Output: Watch script output in real-time with auto-scrolling
  • ๐Ÿ“ Log Management: Download and browse historical log files
  • ๐Ÿ“ฑ Responsive Design: Works on desktop, tablet, and mobile devices
  • ๐Ÿ”„ Auto-Refresh: Status updates automatically every 2 seconds

๐Ÿ”ง Advanced Usage

Running in Dry-Run Mode (Recommended)

Always test your configuration first:

environment:
  - DRY_RUN=true

Production Mode

Once you're confident in your setup:

environment:
  - DRY_RUN=false

Custom Port

To run on a different port:

ports:
  - "8080:5000"  # Access via http://localhost:8080

๐Ÿ“ File Structure

navidrome-cleanup/
โ”œโ”€โ”€ app.py                     # Flask web application
โ”œโ”€โ”€ templates/
โ”‚   โ””โ”€โ”€ index.html            # Web interface template
โ”œโ”€โ”€ requirements.txt          # Python dependencies
โ”œโ”€โ”€ entrypoint.sh            # Container startup script
โ”œโ”€โ”€ docker-compose.yml       # Container configuration
โ”œโ”€โ”€ navidrome_cleanup_docker.sh        # Main cleanup script
โ”œโ”€โ”€ import_playlists.sh                # Playlist import script
โ”œโ”€โ”€ star_all_songs.sh                  # Star all songs script
โ”œโ”€โ”€ monitor_artists.sh                 # Artist monitoring script
โ”œโ”€โ”€ tag_complete_albums_mood.sh        # Complete album tagging script
โ”œโ”€โ”€ navidrome_to_lidarr_track.sh       # Track starred albums in Lidarr
โ”œโ”€โ”€ test_api.sh                        # API testing script
โ”œโ”€โ”€ PLAYLIST_IMPORT.md                 # Playlist import documentation
โ”œโ”€โ”€ TRACK_STARRED.md                   # Track starred albums documentation
โ””โ”€โ”€ logs/                              # Log files directory

๐Ÿ› ๏ธ Troubleshooting

Container Won't Start

  1. Check Docker logs: docker-compose logs music-management-tools
  2. Verify file permissions: chmod +x *.sh
  3. Check Python dependencies in requirements.txt

API Connection Issues

  1. Verify your Navidrome is running and accessible
  2. Check the BASE_URL setting
  3. Confirm your USER and PASS credentials
  4. Use the "Test API" script to diagnose connectivity

Scripts Not Running

  1. Check script permissions: ls -la *.sh
  2. Verify paths in the scripts match your setup
  3. Check logs in the web interface or container logs

Web Interface Not Loading

  1. Ensure port 5000 is available: netstat -tulpn | grep :5000
  2. Check firewall settings
  3. Try accessing via container IP directly

๐Ÿ”’ Security Notes

  • The web interface runs on port 5000 by default
  • No authentication is built-in - restrict network access as needed
  • Scripts run with the same permissions as the container user
  • Consider using Docker secrets for sensitive credentials in production

๐Ÿ“ Logs

All script outputs are logged to the /logs directory and can be:

  • Viewed in real-time through the web interface
  • Downloaded via the web interface
  • Accessed directly from the host filesystem

Log files are automatically organized by script and timestamp for easy tracking.


โš ๏ธ Important: Always run in dry-run mode first to verify your configuration before allowing actual file deletions!

About

A bridge between Lidarr, Slskd and Subsonic server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published