Compare commits

..

13 Commits

Author SHA1 Message Date
sickprodigy 9241527765 feat: add exclusions for Charli xcx, Pogo, Quinn XCII, and Sevdaliza 2026-06-14 11:16:49 -04:00
sickprodigy 021efbe114 fix: having issues with .git/ folder getting scanned now, so adding this here. wasn't working adding with /.git/ folder 2026-06-13 18:24:51 -04:00
sickprodigy 4fca42a9c6 fix: shorten limit list so playlist loads faster on phone and within navidrome ui 2026-06-13 18:24:02 -04:00
sickprodigy 9568ff629d fix: add missing commas in Top Classical and Top Trance playlist filters 2026-06-10 17:28:39 -04:00
sickprodigy 2b6d5af582 docs: update README to clarify repo purpose and add ratings sync tools 2026-06-07 12:24:02 -04:00
sickprodigy 3bc1ade0bc docs: add README for Navidrome smart playlists with usage instructions and examples 2026-06-07 12:06:28 -04:00
sickprodigy 3bee652903 fix: update rating threshold for Top Singer-Songwriter playlist filter 2026-06-07 11:45:05 -04:00
sickprodigy 2563a8bd75 fix: remove duplicate artist exclusions in Top Hip Hop playlist filter 2026-06-07 11:44:55 -04:00
sickprodigy e363af7e49 fix: update title and comment for Recently Added playlist for clarity 2026-06-07 11:44:45 -04:00
sickprodigy a45e10f164 fix: correct title formatting in Christmas Music playlist 2026-06-07 11:43:44 -04:00
sickprodigy 97ed269421 fix: update titles, comments, and rating thresholds for accurate decade playlists 2026-06-07 11:43:31 -04:00
sickprodigy 5e26bebbcc feat: add exclusions for Ambient Dub genre and specific artists in Top Ambient playlist filter 2026-06-03 18:11:20 -04:00
sickprodigy d6c9c43ec7 feat: add exclusion for Holiday genre in Top Alt-Rock playlist filter 2026-06-03 18:11:05 -04:00
22 changed files with 146 additions and 37 deletions
+2
View File
@@ -0,0 +1,2 @@
.git/
.git/**
+100
View File
@@ -0,0 +1,100 @@
# Navidrome Smart Playlists
This repo is here to help people build and use Navidrome smart playlists.
The `.NSP` files in this repo are smart playlist definitions, not static song lists. Each file is a set of JSON rules that Navidrome can read during a library scan and turn into a playlist.
## What Smart Playlists Do
Smart playlists stay dynamic. Instead of manually adding songs one by one, you define rules like:
- songs from a genre
- songs from a year range
- loved or high-rated tracks
- tracks from or excluded by certain artists, albums, or tags
Navidrome applies those rules automatically, so the playlist updates as your library changes.
## How To Use
1. Save the `.NSP` file in a folder that Navidrome scans for playlists.
2. Run a library scan or quick scan in Navidrome.
3. Open the playlist in Navidrome and check that the results match what you wanted.
If the playlist does not appear, the file is usually in the wrong folder, the JSON is invalid, or the scan has not run yet.
## Basic File Structure
Most smart playlists here follow the same pattern:
- `title` is the playlist name shown in Navidrome.
- `comment` is a short description.
- `all` means every rule in the list must match.
- `any` means only one rule needs to match.
- `sort` and `order` control the result order.
- `limit` caps how many tracks the playlist returns.
Example ideas used in this folder:
- genre playlists such as Rock, Pop, Hip Hop, Metal, and Country
- decade playlists such as 70s, 80s, 90s, 2000s, and 2010s
- utility playlists such as Recently Added, Unrated, and Un-Played
- favorites and jukebox-style playlists for quick access
## Excluding Folders
Navidrome uses a `.ndignore` file to exclude folders or files from being added to the library.
- Put an empty `.ndignore` file in a folder to ignore that folder and everything under it.
- Or place one `.ndignore` file in your parent music folder and use `.gitignore`-style rules inside it.
Example:
```gitignore
# Ignore specific folders
/untagged/
/unsorted/
# Ignore a file type
*.flac
# Allow one specific album back in
!/favorite-album/*.flac
```
## Filename Order
The first character of the filename is used as a simple sorting trick for how playlists appear in Navidrome.
For example, a filename like `! Top Hip Hop ;).NSP` will appear near the top. While '_ Top Hip Hop ;).NSP' will appear near the bottom.
In this library, the leading characters are used in a rough order like this:
```text
! # $ & ' (; * + , - . ; = > @ A-Z ^ _
```
That makes it easier to group important playlists at the top and push utility playlists lower down.
This does not work well with different apps. For example, amperfy (iphone sub-sonic app) sorts '_ Top Hip Hop ;).NSP' as the top playlist, and 'Top Hip Hop ;).NSP' as the last playlist.
So haven't quite figured out the best naming scheme that works well across all apps. For now, just be aware that the leading characters may affect playlist order differently in different apps.
## Further Reading
If you want to edit or create smart playlists, this Navidrome guide is a good reference:
- [How to Use Smart Playlists in Navidrome](https://gitea.sickgaming.net/sickprodigy/navidrome-smart-playlists/wiki/How-to-Use-Smart-Playlists-in-Navidrome)
It covers the JSON fields, operators, importing playlists, and a few examples you can adapt for your own Navidrome setup.
## Ratings Sync
A couple of community tools can help synchronize ratings between your Navidrome library and MusicBrainz.
- SPTNR — https://gitea.sickgaming.net/sickprodigy/sptnr
- Use this to apply ratings to your Navidrome/Subsonic library. API is used, so user/pass is needed. Once most of your library is rated, you will see them show up in your smart playlists that filter by rating. I have updated it so you can use Spotify, MusicBrainz, or Last.fm ratings as the source for your Navidrome ratings.
- MusicBrainz Ratings Helper — https://gitea.sickgaming.net/sickprodigy/musicbrainz-ratings-helper
- Use this to push ratings from Navidrome to MusicBrainz. Requires a MusicBrainz account. This helps the community by sharing your ratings with the MusicBrainz database, so others can benefit from your ratings when they sync their Navidrome library with MusicBrainz. You can also see your ratings on the MusicBrainz website and use them in other apps that pull from MusicBrainz.
Note: These are community tools. Review the documentation, test on a small subset, and back up your data before running a full sync.
+2 -2
View File
@@ -1,6 +1,6 @@
{
"title": "-Recently Added ;)",
"comment": "Recently added music to the library.",
"title": "^ Recently Added ;)",
"comment": "Recently added music to the library, within 90 days.",
"all": [
{"any": [
{"inTheLast": {"dateadded": "90"}}
+4 -4
View File
@@ -1,12 +1,12 @@
{
"title": "-Top 2000s Music ;)",
"comment": "Top rated songs from the 2000's by the admin.",
"title": "^ Top 2000s Music ;)",
"comment": "Top rated songs from the 2000's.",
"all": [
{ "any": [
{ "is": { "loved": true } },
{ "gt": { "rating": 2 } }]
{ "gt": { "rating": 3 } }]
},
{ "inTheRange": { "year": [2001, 2011] } }
{ "inTheRange": { "year": [2000, 2009] } }
],
"sort": "-year,-rating,title",
"limit": 1000
+4 -4
View File
@@ -1,12 +1,12 @@
{
"title": "-Top 2010s Music ;)",
"comment": "Top rated songs from the 2010's by the admin.",
"title": "^ Top 2010s Music ;)",
"comment": "Top rated songs from the 2010's.",
"all": [
{ "any": [
{ "is": { "loved": true } },
{ "gt": { "rating": 2 } }]
{ "gt": { "rating": 3 } }]
},
{ "inTheRange": { "year": [2011, 2021] } }
{ "inTheRange": { "year": [2010, 2019] } }
],
"sort": "-year,-rating,title",
"limit": 1000
+4 -4
View File
@@ -1,12 +1,12 @@
{
"title": "-Top 70s Music ;)",
"comment": "Top rated songs from the 1970's by the admin.",
"title": "^ Top 70s Music ;)",
"comment": "Top rated songs from the 1970's.",
"all": [
{ "any": [
{ "is": { "loved": true } },
{ "gt": { "rating": 2 } }]
{ "gt": { "rating": 3 } }]
},
{ "inTheRange": { "year": [1971, 1980] } }
{ "inTheRange": { "year": [1970, 1979] } }
],
"sort": "-year,-rating,title",
"limit": 1000
+4 -4
View File
@@ -1,12 +1,12 @@
{
"title": "-Top 80s Music ;)",
"comment": "Top rated songs from the 1980's by the admin.",
"title": "^ Top 80s Music ;)",
"comment": "Top rated songs from the 1980's.",
"all": [
{ "any": [
{ "is": { "loved": true } },
{ "gt": { "rating": 2 } }]
{ "gt": { "rating": 3 } }]
},
{ "inTheRange": { "year": [1981, 1990] } }
{ "inTheRange": { "year": [1980, 1989] } }
],
"sort": "-year,-rating,title",
"limit": 1000
+4 -4
View File
@@ -1,12 +1,12 @@
{
"title": "-Top 90s Music ;)",
"comment": "Top rated songs from the 1990's by the admin.",
"title": "^ Top 90s Music ;)",
"comment": "Top rated songs from the 1990's.",
"all": [
{ "any": [
{ "is": { "loved": true } },
{ "gt": { "rating": 2 } }]
{ "gt": { "rating": 3 } }]
},
{ "inTheRange": { "year": [1991, 2000] } }
{ "inTheRange": { "year": [1990, 1999] } }
],
"sort": "-year,-rating,title",
"limit": 1000
+1
View File
@@ -7,6 +7,7 @@
]},
{"gt": {"rating": 3}},
{"notContains": {"genre": "Christmas Music"}},
{"notContains": {"genre": "Holiday"}},
{"notContains": {"genre": "Latin"}},
{"isNot": {"artist": "Alec Benjamin"}},
{"isNot": {"artist": "Bad Bunny"}},
+5 -1
View File
@@ -6,7 +6,11 @@
{"contains": {"genre": "Ambient"}}
]},
{"gt": {"rating": 3}},
{"notContains": {"genre": "Christmas Music"}}
{"notContains": {"genre": "Ambient Dub"}},
{"notContains": {"genre": "Christmas Music"}},
{"isNot": {"artist": "Billie Eilish"}},
{"isNot": {"artist": "Coldplay"}},
{"isNot": {"artist": "Lana Del Rey"}}
],
"sort": "dateModified",
"limit": 1000
+1 -1
View File
@@ -3,7 +3,7 @@
"comment": "The highest rated Classical music.",
"all": [
{"contains": {"genre": "Classical"}},
{"gt": {"rating": 2}}
{"gt": {"rating": 2}},
{"notContains": {"genre": "Christmas Music"}},
{"notContains": {"genre": "Classical Crossover"}},
{"notContains": {"genre": "Electronic"}},
+4
View File
@@ -40,6 +40,7 @@
{"isNot": {"artist": "Bruno Mars"}},
{"isNot": {"artist": "BTS"}},
{"isNot": {"artist": "Camila Cabello"}},
{"isNot": {"artist": "Charli xcx"}},
{"isNot": {"artist": "Chase Atlantic"}},
{"isNot": {"artist": "Ciara"}},
{"isNot": {"artist": "Clams Casino"}},
@@ -110,7 +111,9 @@
{"isNot": {"artist": "P!nk"}},
{"isNot": {"artist": "Papa Roach"}},
{"isNot": {"artist": "Phora"}},
{"isNot": {"artist": "Pogo"}},
{"isNot": {"artist": "Postmodern Jukebox"}},
{"isNot": {"artist": "Quinn XCII"}},
{"isNot": {"artist": "Rage Against the Machine"}},
{"isNot": {"artist": "Red Hot Chili Peppers"}},
{"isNot": {"artist": "Rex Orange County"}},
@@ -121,6 +124,7 @@
{"isNot": {"artist": "Sam Hunt"}},
{"isNot": {"artist": "Sean Kingston"}},
{"isNot": {"artist": "Sean Paul"}},
{"isNot": {"artist": "Sevdaliza"}},
{"isNot": {"artist": "Selena Gomez"}},
{"isNot": {"artist": "Shiloh Dynasty"}},
{"isNot": {"artist": "Sia"}},
+1 -3
View File
@@ -20,8 +20,6 @@
{"isNot": {"artist": "Coldplay"}},
{"isNot": {"artist": "eevee"}},
{"isNot": {"artist": "Elijah Who"}},
{"isNot": {"artist": "eevee"}},
{"isNot": {"artist": "Elijah Who"}},
{"isNot": {"artist": "Hollywood Undead"}},
{"isNot": {"artist": "Katy Perry"}},
{"isNot": {"artist": "Kero Kero Bonito"}},
@@ -45,5 +43,5 @@
],
"sort": "dateModified",
"order": "desc",
"limit": 2500
"limit": 1000
}
+1 -1
View File
@@ -11,5 +11,5 @@
],
"sort": "dateModified",
"order": "desc",
"limit": 1500
"limit": 1000
}
+1 -1
View File
@@ -13,5 +13,5 @@
],
"sort": "dateModified",
"order": "desc",
"limit": 1500
"limit": 1000
}
+1 -1
View File
@@ -8,5 +8,5 @@
],
"sort": "dateModified",
"order": "desc",
"limit": 1500
"limit": 1000
}
+1 -1
View File
@@ -23,5 +23,5 @@
],
"sort": "dateModified",
"order": "desc",
"limit": 1500
"limit": 1000
}
+1 -1
View File
@@ -40,5 +40,5 @@
],
"sort": "dateModified",
"order": "desc",
"limit": 1500
"limit": 1000
}
+1 -1
View File
@@ -19,5 +19,5 @@
],
"sort": "dateModified",
"order": "desc",
"limit": 2000
"limit": 1000
}
+1 -1
View File
@@ -3,7 +3,7 @@
"comment": "The highest rated Singer-Songwriter music.",
"all": [
{"contains": {"genre": "Singer-Songwriter"}},
{"gt": {"rating": 2}},
{"gt": {"rating": 3}},
{"notContains": {"genre": "Christmas Music"}},
{"notContains": {"genre": "Latin"}}
],
+2 -2
View File
@@ -2,9 +2,9 @@
"title": "-Top Trance ;)",
"comment": "The highest rated Trance music.",
"all": [
{"contains": {"genre": "Trance"}}
{"contains": {"genre": "Trance"}},
{"gt": {"rating": 2}},
{"notContains": {"genre": "Christmas Music"}},
{"notContains": {"genre": "Christmas Music"}}
],
"sort": "dateModified",
"order": "desc",
+1 -1
View File
@@ -1,5 +1,5 @@
{
"title": "' Christmas Music ;)",
"title": "_ Christmas Music ;)",
"comment": "All Christmas Music",
"all": [
{"any": [