Add links-mode embed thumbnails, item metadata, and media filters
This commit is contained in:
+16
-10
@@ -81,11 +81,13 @@ media-scrape/db/
|
||||
are never download targets. The Media tab prefers the local file when one exists, so the archive
|
||||
survives CDN URL expiry.
|
||||
- Third-party embeds are **never downloaded as media**: YouTube, Instagram, X, TikTok, and every
|
||||
other embed stays a link. In `download` mode their thumbnail is cached (below); the video itself
|
||||
is never fetched.
|
||||
- Previews are cached small (WebP, 320px) in `thumbs/` after every walk. In both modes this covers
|
||||
Discord-hosted images and GIFs; in `download` mode it also covers embed thumbnails, so the grid
|
||||
does not depend on expiring CDN links. Previews count toward the storage limit.
|
||||
other embed stays a link. Its thumbnail is cached (below); the video itself is never fetched.
|
||||
- Previews are cached small (WebP, 320px) in `thumbs/` after every walk, in both modes: Discord
|
||||
hosted images and GIFs, and third-party embed thumbnails (YouTube, X, TikTok, and so on), so the
|
||||
grid does not depend on expiring CDN links. Previews count toward the storage limit.
|
||||
- Every item records who posted it, when, and its dimensions: `author_id`, `author_name`,
|
||||
`posted_at`, `width`, `height`, and `aspect_ratio`. In `download` mode a missing resolution is
|
||||
filled in with `ffprobe` after the file lands.
|
||||
- Discord attachment URLs are signed and expire in about a day. In `links` mode an expired URL is
|
||||
refreshed by re-fetching its message; in `download` mode the bytes are caught before expiry.
|
||||
|
||||
@@ -127,11 +129,15 @@ that deletion is irreversible. The delete button is disabled for a 5 second coun
|
||||
|
||||
## Web UI
|
||||
|
||||
- **Media** tab: filter chips (All, Images, GIFs, Videos, Audio), a source filter (any,
|
||||
attachments, stickers, embeds), and a source-channel filter built from the scrape list. Date and
|
||||
text search are planned. Grid with lazy loading; previews come from the cache, then the local
|
||||
file, then the CDN. A scrape-status strip shows progress with Start and Stop. The view fills the
|
||||
window below the header and the call strip.
|
||||
- **Media** tab: filter chips (All, Images, GIFs, Videos, Audio), and filters for source (any,
|
||||
attachments, stickers, embeds), source channel, poster, aspect ratio (Vertical, 1:1, 4:3, 16:9,
|
||||
21:9, Other), resolution (SD, HD, FHD, QHD, 4K+, Unknown), and a posted-date range (from/to).
|
||||
Grid with lazy loading; previews come from the cache, then the local file, then the CDN; each
|
||||
tile's tooltip shows the poster and posted time. A scrape strip shows live progress with Stop.
|
||||
**New scrape…** opens a popup with Server and Group chat trees (servers expand to channels; each
|
||||
row has Links and Download), and **History** lists each scrape with its start time, duration,
|
||||
pages, messages, media counts, bytes, files, and previews. The view fills the window below the
|
||||
header and the call strip.
|
||||
- **Bot** tab: slopbot connection state, the scrape queue, and the storage limit with a usage bar.
|
||||
The bar is segmented and colour coded by media kind (images, GIFs, video, audio, other) plus the
|
||||
database overhead.
|
||||
|
||||
Reference in New Issue
Block a user