survos / media-bundle
Manage media without direct relationships
Fund package maintenance!
kbond
Installs: 40
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/survos/media-bundle
Requires
- php: ^8.4
- doctrine/dbal: ^4.3.2
- doctrine/doctrine-bundle: ^2.7|^3.0
- mperonnet/imgproxy-php: ^1.0
- onliner/imgproxy-php: ^0.2
- symfony/config: ^7.3||^8.0
- symfony/dependency-injection: ^7.3||^8.0
- symfony/http-kernel: ^7.3||^8.0
- twig/twig: ^3.4
Requires (Dev)
- nyholm/psr7: ^1.8
- openai-php/client: ^0.16.1
- phpstan/phpstan: ^2.0
- symfony/browser-kit: ^7.3||^8.0
- symfony/framework-bundle: ^7.3||^8.0
- symfony/http-client: ^7.3||^8.0
- symfony/phpunit-bridge: ^7.3||^8.0
- symfony/twig-bundle: ^7.3||^8.0
- symfony/var-dumper: ^7.3||^8.0
- dev-main
- 2.0.106
- 2.0.105
- 2.0.104
- 2.0.83
- 2.0.82
- 2.0.81
- 2.0.80
- 2.0.79
- 2.0.78
- 2.0.77
- 2.0.76
- 2.0.75
- 2.0.74
- 2.0.73
- 2.0.72
- 2.0.71
- 2.0.70
- 2.0.69
- 2.0.68
- 2.0.67
- 2.0.66
- 2.0.65
- 2.0.64
- 2.0.63
- 2.0.62
- 2.0.61
- 2.0.60
- 2.0.59
- 2.0.58
- 2.0.57
- 2.0.56
- 2.0.55
- 2.0.54
- 2.0.53
- 2.0.51
- 2.0.50
- 2.0.49
- 2.0.48
- 2.0.47
- 2.0.46
- 2.0.45
- 2.0.44
- 2.0.43
- 2.0.42
- 2.0.41
- 2.0.40
- 2.0.39
- 2.0.38
- 2.0.37
- 2.0.36
- 2.0.35
- 2.0.34
- 2.0.33
- 2.0.32
- 2.0.31
- 2.0.30
- 2.0.29
- 2.0.28
- 2.0.27
- 2.0.26
This package is auto-updated.
Last update: 2026-01-14 11:10:26 UTC
README
SurvosMediaBundle provides a deterministic, URL‑centric media registry for Symfony applications.
It is intentionally not a media processor. Instead, it:
- Registers media references (URLs or local files)
- Assigns deterministic IDs derived from URLs
- Stores application‑local media metadata
- Syncs with a centralized media server (future step)
- Generates thumbnail URLs via imgproxy‑style patterns (future step)
This mirrors the relationship between babel‑bundle and lingua‑server:
- Applications own their media tables
- A central service owns the binaries and heavy processing
Core Concept: Deterministic Media IDs
Every media item has a stable, deterministic ID derived from its URL.
use Survos\MediaBundle\Service\MediaRegistry; $id = MediaRegistry::idFromUrl('https://example.com/image.jpg');
The algorithm:
- Base64‑encodes the URL
- Converts it to URL‑safe base64
- Removes padding
This is the same philosophy used by imgproxy.
Why this matters
- No database lookups to resolve URLs
- IDs are reversible
- Same URL → same ID across apps
- Safe primary key for Meilisearch
Registering Media
The primary entry point is MediaRegistry.
foreach ($data->images as $imageUrl) { $media = $mediaRegistry->ensureMedia($imageUrl); }
Behavior
- Defaults to
Photo - No duplicate URLs
- Bulk‑safe (
flush: false) - No network calls
Local files are also supported:
$media = $mediaRegistry->ensureMedia($uploadedFile);
Local files are assigned a temporary local:// URL until synced.
What This Bundle Does Not Do
- Download media
- Resize images
- Cache thumbnails
- Perform OCR, tagging, or EXIF extraction
Those responsibilities belong to the media server and imgproxy.
Status
This bundle is intentionally minimal and evolving.
Next steps include:
media:synccommand- Provider detection (YouTube, Flickr, etc.)
- Thumbnail URL generation helpers