Source: task/odesli-direct-cross-platform-links (plan/improvement-backlog) — bandcamp was only a Google search; Odesli gives direct cross-platform links for Spotify-resolved names.
- service/odesli.js: makeOdesli({fetch,baseUrl}) -> getLinks(spotifyUrl); pure parseOdesli core; bounded AbortSignal.timeout; non-200/timeout/garbage -> {} (graceful).
- resolver.js: opt-in ODESLI / ODESLI_URL flag (default OFF). When ON, enrich each Spotify-resolved result with additive bandcamp/appleMusic/youtube fields (isHttpUrl-validated), cached per Spotify url. OFF -> no call, byte-identical behavior. /health + startup log surface the flag.
- extension: a tiny additive "bc" link to a direct Bandcamp page when result.bandcamp is present (reuses isSafeHttpUrl); primary artist/album/spotify/google rendering unchanged. styles.css: bandcamp-teal secondary link.
- odesli.test.js + odesli.fixture.json: parseOdesli unit-tested against a real captured Odesli response (Blood Incantation album -> direct bandcamp; absent apple/youtube omitted; junk -> {}); getLinks 200/non-200/throw/parse-error paths.
- docs: .env.example, README, AGENTS.md note the opt-in flag.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
1.0 KiB
CSS
32 lines
1.0 KiB
CSS
/* Injected links — kept subtle so reddit comments stay readable. One link per artist/album,
|
|
coloured by platform: green = Spotify, blue = Google (bandcamp-search fallback). Album links
|
|
are italicised (the usual title convention) so an album reads differently from an artist at
|
|
a glance; the platform colour is unchanged. */
|
|
.rsl-link {
|
|
text-decoration: underline dotted;
|
|
text-underline-offset: 2px;
|
|
cursor: pointer;
|
|
}
|
|
.rsl-album {
|
|
font-style: italic;
|
|
}
|
|
.rsl-spotify {
|
|
text-decoration-color: #1db954 !important; /* spotify green */
|
|
}
|
|
.rsl-google {
|
|
text-decoration-color: #4a72d0 !important; /* google-ish blue */
|
|
}
|
|
/* Optional secondary "bc" link to a DIRECT Bandcamp page (the Odesli enrichment). Small and
|
|
superscript so it sits unobtrusively beside the primary artist/album link. */
|
|
.rsl-bandcamp {
|
|
text-decoration-color: #629aa9 !important; /* bandcamp teal */
|
|
}
|
|
.rsl-direct {
|
|
font-size: 0.72em;
|
|
vertical-align: super;
|
|
margin-left: 2px;
|
|
}
|
|
.rsl-link:hover {
|
|
text-decoration-style: solid !important;
|
|
}
|