mirror of
https://github.com/seanbetts/steam-hardware-watch.git
synced 2026-10-06 01:00:18 +02:00
Document asset library organization
This commit is contained in:
1 parent
df596fc9c2
commit
340cb8be20
1 file changed
+114
@@ -0,0 +1,114 @@
|
||||
# Asset Library Design
|
||||
|
||||
## Purpose
|
||||
|
||||
The watch run currently saves media under `assets/discovered/` using a source-mirrored path such as `komodostation.com/wp-content/uploads/YYYY/MM/...`. That preserves provenance but makes Finder browsing awkward.
|
||||
|
||||
Add a generated browse-first asset library that groups downloaded assets by media type while keeping the raw source mirror intact.
|
||||
|
||||
## Goals
|
||||
|
||||
- Make it easy to browse all videos, all images, all poster frames, and all logos in one place.
|
||||
- Keep hardware identity visible in filenames.
|
||||
- Preserve source provenance through manifests.
|
||||
- Avoid duplicating or moving the raw `assets/discovered/` archive.
|
||||
- Avoid flooding primary folders with generated WordPress size variants.
|
||||
|
||||
## Proposed Layout
|
||||
|
||||
```text
|
||||
assets/
|
||||
discovered/
|
||||
library/
|
||||
videos/
|
||||
images/
|
||||
logos/
|
||||
poster-frames/
|
||||
thumbnails/
|
||||
variants/
|
||||
unknown/
|
||||
manifests/
|
||||
asset-library.json
|
||||
asset-library.tsv
|
||||
```
|
||||
|
||||
## Classification
|
||||
|
||||
Classify each retrieved asset from WordPress metadata and source context:
|
||||
|
||||
- `videos`: MP4, WEBM, MOV, or M4V source assets.
|
||||
- `images`: full-size or primary still images that are not logos, poster frames, thumbnails, specs, or variants.
|
||||
- `logos`: SVGs or image files with logo/title branding signals.
|
||||
- `poster-frames`: video stills, especially `videoframe_*` assets tied to video sections.
|
||||
- `thumbnails`: small generated sizes such as `100x100`, `150x150`, or WordPress thumbnail roles.
|
||||
- `variants`: generated resized derivatives such as `768x432`, `1024x576`, `2048x988`, or any size-suffixed derivative that is not a thumbnail.
|
||||
- `unknown`: assets that cannot be classified confidently.
|
||||
|
||||
Hardware should be inferred from section/product context first, then filename/title hints, then `unknown`.
|
||||
|
||||
## Filenames
|
||||
|
||||
Library filenames should be readable and stable:
|
||||
|
||||
```text
|
||||
steam-controller_433313_3-in-1_1920x850.mp4
|
||||
steam-controller_433293_banner_1920x1080.webm
|
||||
steam-controller_433477_spec-image_2048x988.avif
|
||||
steam-controller_413728_controller-logo.svg
|
||||
```
|
||||
|
||||
Use lowercase kebab-case labels. Include:
|
||||
|
||||
- hardware slug
|
||||
- WordPress media ID when available
|
||||
- short role/title label
|
||||
- dimensions when available
|
||||
- original extension
|
||||
|
||||
If a name collides, append a short hash or sequence suffix.
|
||||
|
||||
## Manifests
|
||||
|
||||
Generate both JSON and TSV manifests under `assets/manifests/`.
|
||||
|
||||
Each manifest row should include:
|
||||
|
||||
- original URL
|
||||
- raw source-mirrored path
|
||||
- library path
|
||||
- hardware slug
|
||||
- library category
|
||||
- WordPress media ID
|
||||
- WordPress parent post or section ID
|
||||
- title or slug
|
||||
- MIME type
|
||||
- detected format
|
||||
- width and height when available
|
||||
- file size when available
|
||||
- source JSON file path
|
||||
|
||||
The manifest is the canonical provenance record. The library folders are for browsing.
|
||||
|
||||
## Existing Reports
|
||||
|
||||
Keep the current reports:
|
||||
|
||||
- `discovered-visual-assets.tsv`
|
||||
- `retrieved-visual-assets.tsv`
|
||||
- `blocked-visual-assets.tsv`
|
||||
- `downloaded-visual-assets.tsv`
|
||||
- `manual-asset-urls.txt`
|
||||
|
||||
Add library reports only if useful, but do not replace the existing reports in the first implementation.
|
||||
|
||||
## Testing
|
||||
|
||||
Add focused tests for:
|
||||
|
||||
- media-type-first placement
|
||||
- WordPress size suffix detection
|
||||
- manifest entries preserving source URL and raw path
|
||||
- stable filenames with hardware, media ID, label, and dimensions
|
||||
- collision handling
|
||||
|
||||
The existing fetchable Komodo AVIF regression test should continue to pass.
|
||||
Reference in new issue
Block a user