• Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Strawberry Music Player Forums
    2. Sharky-PI
    3. Best
    • Profile
    • Following 0
    • Followers 0
    • Topics 10
    • Posts 50
    • Best 4
    • Controversial 0
    • Groups 0

    Best posts made by Sharky-PI

    • Multi genre support: implement semicolon split for Genre grouping in Collection

      This is as much of a discussion than a specific request.

      Previously requested here, (separate with ; ), here (for Subsonic, also separates with ; ), and here (general discussion).

      Foobar & some others support using ; to separate within field.

      OneTagger supports it but uses subgenres - I'm not fully sure how, though one option is by using a custom separate field; more info here.

      Beets has canonical nested genres which is pretty cool.

      Already in Strawberry if you tag a track with multiple genres split by ; e.g. "Microhouse;ClownPenis", that track will appear in a search for genre:microhouse and also genre:clownpenis, so that's great already. Similarly smart playlists work for "genre contains" any of multiple semicolon-separated terms.

      A downside is that if you group your collection by genre, the full term is shown, not both separate terms, which will cause the genres grouping to become nightmarishly messy.

      fd1ad5b6-ba92-413a-bf33-afe7ccda0968-image.png

      So I think feature request 1 is to allow Collection views which contain Genre to split tracks by semicolon and display the same track under both (or more) genre dropdowns.

      Keen for your thoughts. Cheers!

      posted in Feature Suggestions genre tagging collection
      Sharky-PIS
      Sharky-PI
    • Search term containing hyphen/dash in playlist doesn't return results despite them being present
      1. Find an album name with a hyphen/dash in it, e.g. "Enter The Wu-Tang (36 Chambers)"
      2. Make 2 new playlists with that album in it.
      3. From playlist 1, copy that name exactly (I love that you can hit F2 to make editable)
      4. In playlist 2, paste that name in the search bar. Nothing is returned until you delete the hyphen/dash.
      posted in Technical Help
      Sharky-PIS
      Sharky-PI
    • RE: Syncing the playlists to disk

      Strawberry Playlist Sync Tool

      Sync your Strawberry Music Player playlists to disk M3U files with duplicate detection, automatic backups, and smart conflict resolution.

      Features

      • Duplicate Detection: Find and remove duplicate tracks within playlists
        • Exact duplicates (same file added multiple times)
        • Optional fuzzy matching (same title/artist, different files)
      • Playlist Sync: Export database playlists to M3U files
        • Creates timestamped backups before overwriting
        • Shows what's added/removed before syncing
        • Add-only mode to preserve disk entries
        • Recursive subdirectory scanning
        • Multiple playlist directory support
      • Backup Rotation: Automatically clean up old backup files
        • Keep N backups per playlist (default: 3)
        • Delete backups older than N days (default: 60)
        • Count takes priority (always keeps minimum backups)
      • Never-Sync List: Skip utility playlists you don't want exported
        • Managed via neversync.txt in your playlist folder
        • Interactive prompts to add playlists during review

      Requirements

      • Python 3.6+ (standard library only, no pip installs needed)
      • Linux, macOS, or Windows

      Installation

      1. Save the script to your preferred location, e.g.:
        ~/.local/share/strawberry/strawberry/strawberry-playlist-sync.py
      2. Make it executable (Linux/macOS):
        chmod +x strawberry-playlist-sync.py
      3. Optionally create a desktop shortcut (see below).

      Usage

      Interactive Mode

      ./strawberry-playlist-sync.py
      Presents a menu to choose between duplicate checking, syncing, and backup cleanup.

      Command-Line Mode

      Dry run (preview changes without writing):
      ./strawberry-playlist-sync.py -s -p ~/Music/playlists --dry-run

      Dry run with full track details:
      ./strawberry-playlist-sync.py -s -p ~/Music/playlists --dry-run -v

      Sync playlists to disk:
      ./strawberry-playlist-sync.py -s -p ~/Music/playlists

      Sync including subdirectories:
      ./strawberry-playlist-sync.py -s -p ~/Music/playlists -r

      Check for duplicates:
      ./strawberry-playlist-sync.py -d

      Include fuzzy duplicates (same song, different files):
      ./strawberry-playlist-sync.py -d --fuzzy

      Clean up old backups:
      ./strawberry-playlist-sync.py -c -n 5 -a 30
      (Keep 5 backups, delete those older than 30 days)

      Run all operations:
      ./strawberry-playlist-sync.py -d -s -c -p ~/Music/playlists

      Automated mode (no prompts):
      ./strawberry-playlist-sync.py -s -p ~/Music/playlists -y

      Multiple Directories

      ./strawberry-playlist-sync.py -s -p ~/Music/playlists -p /media/usb/playlists

      Command-Line Options
      ┌─────────────────────────┬─────────────────────────────────────────────────┐
      │ Option │ Description │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ -d, --check-duplicates │ Find and remove duplicate tracks │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ --fuzzy │ Include fuzzy duplicates in check │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ -s, --sync │ Sync database playlists to disk │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ -c, --cleanup-backups │ Clean up old backup files │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ -p, --playlist-dir PATH │ Playlist folder (can be used multiple times) │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ -r, --recursive │ Scan subdirectories for M3U files │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ --add-only │ Only add tracks, preserve existing disk entries │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ --db-path PATH │ Path to strawberry.db (auto-detects if not set) │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ -n, --keep-count N │ Backups to keep per playlist (default: 3) │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ -a, --max-age DAYS │ Max backup age in days (default: 60) │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ --dry-run │ Preview changes without writing │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ -v, --verbose │ Show full track details (with --dry-run) │
      ├─────────────────────────┼─────────────────────────────────────────────────┤
      │ -y, --yes │ Skip confirmation prompts │
      └─────────────────────────┴─────────────────────────────────────────────────┘
      Never-Sync List

      To exclude playlists from syncing (e.g., utility playlists for finding missing metadata):

      1. During interactive review, when you skip a playlist, you'll be asked if you want to add it to the never-sync list.
      2. Or manually edit neversync.txt in your playlist folder:

      Playlists listed here will be skipped during sync operations.

      NoComposerSP
      BitrateLessThan129SP
      UnratedSP

      Desktop Shortcut (Linux)

      Create a shell script on your desktop:

      #!/bin/bash

      Strawberry Playlist Sync

      ~/.local/share/strawberry/strawberry/strawberry-playlist-sync.py -s -p ~/Music/playlists -r

      Save as strawberry-playlist-sync.sh and make executable with chmod +x.

      Database Locations

      The script auto-detects Strawberry's database in these locations:

      • Linux: ~/.local/share/strawberry/strawberry/strawberry.db
      • macOS: ~/Library/Application Support/Strawberry/strawberry/strawberry.db
      • Windows: ~/AppData/Local/strawberry/strawberry/strawberry.db

      Use --db-path to specify a custom location.

      Notes

      • Safe to run with Strawberry open: The script only reads from the database (except for duplicate removal), so syncing while Strawberry is running is fine. For
        duplicate removal, close Strawberry first.
      • Backups: Before overwriting any M3U file, a timestamped backup is created in a backups/ subfolder.
      • M3U Format: Uses extended M3U with #EXTINF:seconds,Artist - Title lines.
      • Path Handling: Automatically converts database file:// URLs to filesystem paths and handles URL-encoded characters.

      License

      Public domain / CC0. Use however you like.

      Created by me and Claude Code tonight.

      posted in Feature Suggestions
      Sharky-PIS
      Sharky-PI
    • RE: Multi genre support: implement semicolon split for Genre grouping in Collection

      @jonas any thoughts about this, chap?

      posted in Feature Suggestions
      Sharky-PIS
      Sharky-PI