Changeset f50a84b in Klonkt for src/services/MusicBrainzService.js
- Timestamp:
- 08/13/2026 01:09:55 PM (4 weeks ago)
- Branches:
- main
- Children:
- c3e736c
- Parents:
- 013e16c
- File:
-
- 1 edited
-
src/services/MusicBrainzService.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/MusicBrainzService.js
r013e16c rf50a84b 80 80 } 81 81 82 /** 83 * Een MBID rechtstreeks opzoeken. Wie zijn id al kent hoeft niet te zoeken -- 84 * en een zoekopdracht op een UUID levert bij MusicBrainz niets op, dus zonder 85 * deze tak zou plakken juist het slechtste resultaat geven. 86 */ 87 export async function haalArtiest(mbid) { 88 if (!isMbid(mbid)) return null; 89 const url = `${BASIS}/artist/${encodeURIComponent(mbid)}?inc=url-rels&fmt=json`; 90 try { 91 await opDeBeurt(); 92 const r = await safeFetch(url, { headers: { Accept: 'application/json', 'User-Agent': userAgent() } }); 93 if (!r || !r.ok) return null; 94 return kandidaat(await r.json()); 95 } catch { 96 return null; 97 } 98 } 99 100 /** 101 * DE TERUG-WEG. Noemt de MusicBrainz-pagina van deze artiest ons domein? 102 * 103 * Een koppeling van onze kant is een bewering: iedereen kan een MBID in een 104 * veld typen. Pas als de artiestenpagina TERUGWIJST is het een paar, en dan 105 * weet een lezer dat dezelfde persoon aan allebei de kanten stond. Dat is 106 * dezelfde gedachte als rel="me" bij Mastodon. 107 * 108 * Wij zetten die terugwijzing NIET zelf: via hun API kan het niet, en het hoort 109 * ook niet -- de artiest doet dat op musicbrainz.org onder "social networking". 110 * Wij kijken alleen of hij er staat. 111 * 112 * Geeft { verified, urls } -- bij een storing verified:false en een lege lijst, 113 * want niet kunnen kijken is niet hetzelfde als niet gevonden. 114 */ 115 export async function controleerTerugweg(mbid, domein) { 116 const leeg = { verified: false, urls: [] }; 117 if (!isMbid(mbid) || !domein) return leeg; 118 let host; 119 try { host = new URL(domein).host.toLowerCase(); } catch { return leeg; } 120 const url = `${BASIS}/artist/${encodeURIComponent(mbid)}?inc=url-rels&fmt=json`; 121 try { 122 await opDeBeurt(); 123 const r = await safeFetch(url, { headers: { Accept: 'application/json', 'User-Agent': userAgent() } }); 124 if (!r || !r.ok) return leeg; 125 const doc = await r.json(); 126 const urls = (doc.relations || []) 127 .map((rel) => rel && rel.url && rel.url.resource) 128 .filter((u) => typeof u === 'string'); 129 const wijst = urls.some((u) => { try { return new URL(u).host.toLowerCase() === host; } catch { return false; } }); 130 return { verified: wijst, urls }; 131 } catch { 132 return leeg; 133 } 134 } 135 82 136 /** Een kandidaat, teruggebracht tot wat een mens nodig heeft om te kiezen. */ 83 137 function kandidaat(a) { … … 104 158 // ze precies wonen. 105 159 export { isMbid, artiestUrl }; 106 export default { zoekArtiesten, isMbid, artiestUrl };160 export default { zoekArtiesten, haalArtiest, controleerTerugweg, isMbid, artiestUrl };
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)