Ignore:
Timestamp:
06/20/2026 05:04:13 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
3ec691c
Parents:
fef781e
Message:

feat(audio): per-track owner/credit + license (+ written to mp3 ID3 tags)

New per-track metadata: credit (copyright holder) + license. Editable in the
track editor (license with datalist presets: All rights reserved, CC BY/…/CC0).

  • DB: audio_tracks.credit + .license.
  • ID3: on upload and on every metadata edit the tags are written into the mp3 itself — copyright=credit, comment=license (new retagMp3() in the transcoder, -c copy, no re-encode) → ownership travels with a download.
  • Visible: "credit · license" line below each track (post-audio-track).

busters audio.css?v=7.

Co-Authored-By: Claude <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/partials/track-editor.ejs

    rfef781e r0d7acdf  
    385385                     value="${track.duration || ''}" placeholder="auto">
    386386            </label>
     387
     388            <div class="te-row te-row-2">
     389              <label class="te-field">
     390                <span>Eigenaar / credit <small>(copyright-houder)</small></span>
     391                <input type="text" id="te-credit" maxlength="200"
     392                       autocomplete="off" spellcheck="false"
     393                       placeholder="bv. © 2025 Robin Genis"
     394                       value="${esc(track.credit || '')}">
     395              </label>
     396              <label class="te-field">
     397                <span>Licentie</span>
     398                <input type="text" id="te-license" maxlength="120"
     399                       autocomplete="off" spellcheck="false" list="te-license-list"
     400                       placeholder="Alle rechten voorbehouden"
     401                       value="${esc(track.license || '')}">
     402                <datalist id="te-license-list">
     403                  <option value="Alle rechten voorbehouden"></option>
     404                  <option value="CC BY 4.0"></option>
     405                  <option value="CC BY-SA 4.0"></option>
     406                  <option value="CC BY-NC 4.0"></option>
     407                  <option value="CC BY-NC-SA 4.0"></option>
     408                  <option value="CC BY-ND 4.0"></option>
     409                  <option value="CC0 1.0 (publiek domein)"></option>
     410                </datalist>
     411              </label>
     412            </div>
    387413
    388414            <div class="te-field">
     
    603629          artist: $('#te-artist').value.trim() || null,
    604630          album:  $('#te-album').value.trim() || null,
     631          credit:  $('#te-credit').value.trim() || null,
     632          license: $('#te-license').value.trim() || null,
    605633          duration: $('#te-duration').value ? Number($('#te-duration').value) : null,
    606634          cover_url: urlInput.value.trim() || null,
Note: See TracChangeset for help on using the changeset viewer.