feat(downloads): store + show a canonical "downloaded from" source URL

Every download now records the clean source page URL and shows it on the
Downloads page (open in a new tab, or copy to clipboard). The worker stores
yt-dlp's canonical webpage_url on the asset (migration 0043 adds
media_assets.source_webpage_url); the serializer prefers it and falls back to a
URL derived from source_kind+source_ref, so YouTube, external YouTube links and
external URLs (e.g. Facebook reels) all get a correct reference, and queued/older
rows work before the worker fills it. Edit clips return null (a clip's source is
the user's own earlier download, not a web page). i18n en/hu/de.
This commit is contained in:
npeter83 2026-07-04 21:25:37 +02:00
parent 0e1b24a93c
commit 42d465d760
9 changed files with 115 additions and 0 deletions

View file

@ -71,6 +71,12 @@
"items": "{{used}} / {{max}} Elemente",
"unlimited": "Unbegrenzt"
},
"source": {
"open": "Originalseite in neuem Tab öffnen",
"copy": "Quell-Link kopieren",
"copied": "Quell-Link in die Zwischenablage kopiert",
"copyFailed": "Link konnte nicht kopiert werden"
},
"rename": {
"title": "Download umbenennen",
"label": "Anzeigename",

View file

@ -71,6 +71,12 @@
"items": "{{used}} / {{max}} items",
"unlimited": "Unlimited"
},
"source": {
"open": "Open the original page in a new tab",
"copy": "Copy source link",
"copied": "Source link copied to clipboard",
"copyFailed": "Couldn't copy the link"
},
"rename": {
"title": "Rename download",
"label": "Display name",

View file

@ -71,6 +71,12 @@
"items": "{{used}} / {{max}} elem",
"unlimited": "Korlátlan"
},
"source": {
"open": "Eredeti oldal megnyitása új lapon",
"copy": "Forráslink másolása",
"copied": "Forráslink a vágólapra másolva",
"copyFailed": "Nem sikerült a link másolása"
},
"rename": {
"title": "Letöltés átnevezése",
"label": "Megjelenített név",