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:
parent
0e1b24a93c
commit
42d465d760
9 changed files with 115 additions and 0 deletions
|
|
@ -741,6 +741,10 @@ class MediaAsset(Base, TimestampMixin):
|
|||
uploader: Mapped[str | None] = mapped_column(String(255))
|
||||
upload_date: Mapped[date | None] = mapped_column(Date)
|
||||
thumbnail_url: Mapped[str | None] = mapped_column(Text)
|
||||
# yt-dlp's canonical page URL for the source (webpage_url) — the clean "downloaded from"
|
||||
# reference shown on the Downloads page. Null until the worker extracts it (older/queued rows
|
||||
# fall back to a URL derived from source_kind+source_ref).
|
||||
source_webpage_url: Mapped[str | None] = mapped_column(Text)
|
||||
error: Mapped[str | None] = mapped_column(Text)
|
||||
ref_count: Mapped[int] = mapped_column(Integer, default=0, server_default="0")
|
||||
last_access_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue