nix machine / user configurations

navidrome set origin url from source

ptr.pet 96b06468 44dd5280

verified
Changed files
+93 -2
dns
hosts
trimounts
modules
pkgs-set
overlays
+1 -1
dns/dnsconfig.js
··· 59 59 TXT("@", "a data endpoint for entity with serial id /90008/."), 60 60 TXT( 61 61 "@", 62 - "entity linked here uses it/they pronouns. it can be referred to as /dusk/ or /dawn/.", 62 + "entity linked here uses it/that pronouns. it can also be referred to as /dawn/.", 63 63 ), 64 64 TXT( 65 65 "@",
+1 -1
hosts/trimounts/modules/arpa.nix
··· 8 8 connection to https://gaze.systems/about for more data. 9 9 10 10 /discord 90.008/ 11 - /bsky @poor.dog/ 11 + /bsky @ptr.pet/ 12 12 /email 90008@gaze.systems/ 13 13 14 14 /dig +short TXT 9.0.0.0.8.e.f.1.5.0.7.4.0.1.0.0.2.ip6.arpa/
+6
pkgs-set/overlays/navidrome.nix/default.nix
··· 1 + final: prev: { 2 + navidrome = prev.navidrome.overrideAttrs (old: { 3 + patches = (old.patches or []) ++ [./origin_url.patch]; 4 + doCheck = false; 5 + }); 6 + }
+85
pkgs-set/overlays/navidrome.nix/origin_url.patch
··· 1 + diff --git a/core/agents/listenbrainz/agent.go b/core/agents/listenbrainz/agent.go 2 + index 769b0f5..758eb85 100644 3 + --- a/core/agents/listenbrainz/agent.go 4 + +++ b/core/agents/listenbrainz/agent.go 5 + @@ -3,6 +3,7 @@ package listenbrainz 6 + import ( 7 + "context" 8 + "errors" 9 + + "fmt" 10 + "net/http" 11 + 12 + "github.com/navidrome/navidrome/conf" 13 + @@ -52,6 +53,10 @@ func (l *listenBrainzAgent) formatListen(track *model.MediaFile) listenInfo { 14 + artistNames := slice.Map(track.Participants[model.RoleArtist], func(p model.Participant) string { 15 + return p.Name 16 + }) 17 + + var originURL string 18 + + if v := track.Tags.Values(model.TagSource); len(v) > 0 { 19 + + originURL = v[0] 20 + + } 21 + li := listenInfo{ 22 + TrackMetadata: trackMetadata{ 23 + ArtistName: track.Artist, 24 + @@ -67,9 +72,12 @@ func (l *listenBrainzAgent) formatListen(track *model.MediaFile) listenInfo { 25 + ReleaseMBID: track.MbzAlbumID, 26 + ReleaseGroupMBID: track.MbzReleaseGroupID, 27 + DurationMs: int(track.Duration * 1000), 28 + + OriginURL: originURL, 29 + }, 30 + }, 31 + } 32 + + fmt.Printf("listen info: %+v\n", li) 33 + + fmt.Printf("track tags: %+v\n", track.Tags) 34 + return li 35 + } 36 + 37 + diff --git a/core/agents/listenbrainz/agent_test.go b/core/agents/listenbrainz/agent_test.go 38 + index e99b442..11e7b3c 100644 39 + --- a/core/agents/listenbrainz/agent_test.go 40 + +++ b/core/agents/listenbrainz/agent_test.go 41 + @@ -69,6 +69,7 @@ var _ = Describe("listenBrainzAgent", func() { 42 + "ArtistNames": ConsistOf("Artist 1", "Artist 2"), 43 + "ArtistMBIDs": ConsistOf("mbz-111", "mbz-222"), 44 + "DurationMs": Equal(142200), 45 + + "OriginURL": Ignore(), 46 + }), 47 + }), 48 + })) 49 + diff --git a/core/agents/listenbrainz/client.go b/core/agents/listenbrainz/client.go 50 + index 168aad5..807bdef 100644 51 + --- a/core/agents/listenbrainz/client.go 52 + +++ b/core/agents/listenbrainz/client.go 53 + @@ -82,6 +82,7 @@ type additionalInfo struct { 54 + ReleaseMBID string `json:"release_mbid,omitempty"` 55 + ReleaseGroupMBID string `json:"release_group_mbid,omitempty"` 56 + DurationMs int `json:"duration_ms,omitempty"` 57 + + OriginURL string `json:"origin_url,omitempty"` 58 + } 59 + 60 + func (c *client) validateToken(ctx context.Context, apiKey string) (*listenBrainzResponse, error) { 61 + diff --git a/model/tag.go b/model/tag.go 62 + index 674f688..ecd1a12 100644 63 + --- a/model/tag.go 64 + +++ b/model/tag.go 65 + @@ -194,6 +194,7 @@ const ( 66 + TagISRC TagName = "isrc" 67 + TagBPM TagName = "bpm" 68 + TagExplicitStatus TagName = "explicitstatus" 69 + + TagSource TagName = "source" 70 + 71 + // Dates and years 72 + 73 + diff --git a/resources/mappings.yaml b/resources/mappings.yaml 74 + index d1da5c6..905ad01 100644 75 + --- a/resources/mappings.yaml 76 + +++ b/resources/mappings.yaml 77 + @@ -251,6 +251,8 @@ additional: 78 + aliases: [ txxx:script, script, ----:com.apple.itunes:script, wm/script ] 79 + subtitle: 80 + aliases: [ tit3, subtitle, ----:com.apple.itunes:subtitle, wm/subtitle ] 81 + + source: 82 + + aliases: [ source, woas, audio source, txxx:source, ----:com.apple.itunes:source ] 83 + website: 84 + aliases: [ woar, website, weblink, wm/authorurl ] 85 + work: