88
99 "github.com/navidrome/navidrome/conf"
1010 "github.com/navidrome/navidrome/consts"
11+ "github.com/navidrome/navidrome/log"
1112 "github.com/navidrome/navidrome/model"
1213 "github.com/navidrome/navidrome/model/id"
1314 "github.com/navidrome/navidrome/utils"
@@ -26,10 +27,14 @@ type getPIDFunc = func(mf model.MediaFile, md Metadata, spec string, prependLibI
2627
2728func createGetPID (hash hashFunc ) getPIDFunc {
2829 var getPID getPIDFunc
29- getAttr := func (mf model.MediaFile , md Metadata , attr string , prependLibId bool ) string {
30+ getAttr := func (mf model.MediaFile , md Metadata , attr string , prependLibId bool , spec string ) string {
3031 attr = strings .TrimSpace (strings .ToLower (attr ))
3132 switch attr {
3233 case "albumid" :
34+ if spec == conf .Server .PID .Album {
35+ log .Error ("Recursive PID definition detected, ignoring `albumid`" , "spec" , spec )
36+ return ""
37+ }
3338 return getPID (mf , md , conf .Server .PID .Album , prependLibId )
3439 case "folder" :
3540 return filepath .Dir (mf .Path )
@@ -49,7 +54,7 @@ func createGetPID(hash hashFunc) getPIDFunc {
4954 attributes := strings .Split (field , "," )
5055 hasValue := false
5156 values := slice .Map (attributes , func (attr string ) string {
52- v := getAttr (mf , md , attr , prependLibId )
57+ v := getAttr (mf , md , attr , prependLibId , spec )
5358 if v != "" {
5459 hasValue = true
5560 }
0 commit comments