Changeset 6401681 in Klonkt for src/routes/admin-audio.js
- Timestamp:
- 08/13/2026 01:08:32 PM (4 weeks ago)
- Branches:
- main
- Children:
- f59a46c
- Parents:
- 5300652
- git-author:
- Robin <roboburr@…> (08/13/2026 12:16:47 PM)
- git-committer:
- Robin <roboburr@…> (08/13/2026 01:08:32 PM)
- File:
-
- 1 edited
-
src/routes/admin-audio.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/admin-audio.js
r5300652 r6401681 23 23 import { audioUrl } from '../services/AudioStreamService.js'; 24 24 import { mediaDir } from '../config/paths.js'; 25 import MusicBrainz from '../services/MusicBrainzService.js';26 25 27 26 const __dirname = path.dirname(fileURLToPath(import.meta.url)); … … 384 383 385 384 /** GET /admin/audio/api/albums — distinct list of album names (for datalist) */ 386 /**387 * "Ben jij dit?" -- kandidaten uit MusicBrainz (shaer-mbz, stap 1).388 *389 * De zoekopdracht draait HIER en niet in de browser: MusicBrainz staat een390 * verzoek per seconde toe per APPLICATIE, en dat is alleen af te dwingen als391 * alles langs een plek gaat. Bovendien eisen ze een User-Agent met contact, en392 * die kan een browser niet zetten.393 *394 * De keuze blijft van de artiest. Wij tonen kandidaten met hun toelichting; we395 * kiezen er niet zelf een, ook niet als er maar een treffer is -- een verkeerd396 * geraden MBID koppelt iemand aan het werk van een ander.397 */398 router.get('/api/musicbrainz', requireGod, async (req, res) => {399 const site = res.locals.site;400 if (!site) return res.status(404).json({ error: 'no_site' });401 // Standaard de artiestennaam die al in de site staat: negen van de tien keer402 // is dat precies waar iemand op zou zoeken.403 const q = String(req.query.q || site.author || site.title || '').trim();404 if (!q) return res.json({ ok: true, q: '', kandidaten: [] });405 const kandidaten = await MusicBrainz.zoekArtiesten(q);406 res.json({407 ok: true,408 q,409 gekoppeld: site.mb_artist_id410 ? { mbid: site.mb_artist_id, naam: site.mb_artist_name || '', url: MusicBrainz.artiestUrl(site.mb_artist_id) }411 : null,412 kandidaten,413 });414 });415 416 /**417 * De keuze vastleggen. Alleen een echte MBID komt de kolom in: de naam die we418 * ernaast bewaren is voor het scherm, de MBID is het enige dat naar buiten gaat.419 */420 router.post('/musicbrainz/link', requireGod, (req, res) => {421 const site = res.locals.site;422 if (!site) return res.status(404).end();423 const mbid = String(req.body.mbid || '').trim().toLowerCase();424 const naam = String(req.body.naam || '').trim().slice(0, 200);425 const terug = (res.locals.siteUrlBase || '') + '/admin/audio';426 if (!MusicBrainz.isMbid(mbid)) return res.redirect(`${terug}?error=` + encodeURIComponent('Geen geldige MusicBrainz-id.'));427 db.prepare('UPDATE sites SET mb_artist_id = ?, mb_artist_name = ? WHERE id = ?').run(mbid, naam || null, site.id);428 res.redirect(`${terug}?success=` + encodeURIComponent('Gekoppeld aan MusicBrainz.'));429 });430 431 /** Terugdraaien. Een verkeerde koppeling zet jouw naam onder andermans werk. */432 router.post('/musicbrainz/unlink', requireGod, (req, res) => {433 const site = res.locals.site;434 if (!site) return res.status(404).end();435 db.prepare('UPDATE sites SET mb_artist_id = NULL, mb_artist_name = NULL WHERE id = ?').run(site.id);436 res.redirect((res.locals.siteUrlBase || '') + '/admin/audio?success=' + encodeURIComponent('Ontkoppeld.'));437 });438 439 385 router.get('/api/albums', requireGod, (req, res) => { 440 386 const site = res.locals.site;
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)