teltek/pumukit-podcast-bundle
Symfony bundle that adds podcast capabilities to the PuMuKIT video platform, letting institutions publish multimedia content as podcast series and subscription feeds. Integrates podcast management directly into existing PuMuKIT workflows.
This bundle plugs podcast ingest/export into a PuMuKIT installation. It is not a standalone library — it assumes a working PuMuKIT app (Symfony) with Pumukit\MultimediaObjectBundle, Pumukit\SeriesBundle, and Pumukit\SchemaBundle already installed. Treat it as an integration layer, not a library you can evaluate in isolation.
Minimal steps:
composer.json. At 1 star and 0 dependents, treat the code itself as the documentation. Check Resources/config/, Command/, and DependencyInjection/ first — those three tell you what the bundle actually does (services, CLI entrypoints, and config keys).pumukit/* constraints in composer.json and pin the same major/minor as your PuMuKIT install. A PodcastBundle from a different PuMuKIT generation will silently break on entity/schema changes.AppKernel.php for older installs, config/bundles.php for newer).If you can't get a feed import running in an afternoon on a stock PuMuKIT VM, stop — the bundle is not a fit and you should fork the podcast logic directly into your app instead.
The realistic day-to-day patterns:
podcast:import:* style). Wire the import to a cron/worker rather than a web request — feed parsing plus media download is slow and non-idempotent if interrupted.Series, one episode → one MultimediaObject attached to that series. Keep that invariant; it means the rest of PuMuKIT (player, search, admin) works on podcast content with no special-casing.SeriesBundle data, not from a separate query layer. The bundle's job is to expose the feed route and enclosure URLs; the data is already there.Workflow integration tips:
config/packages/pumukit_podcast.yaml or app/config/config.yml depending on version). Expect keys for feed base URL, storage path for enclosures, and allowed MIME/media types.guid, relative enclosure URLs, itunes: extensions, redirects, and partial downloads. Wrap the import in try/catch per-episode so one bad item doesn't abort the whole run.max_execution_time and memory limit, or you'll see partial imports.-vvv) and check the Symfony profiler for DI errors. Because there's no documentation, add your own logging at import boundaries — you will be the maintainer.How can I help you explore Laravel packages today?