Minimalist podcast publishing platform, mostly a pretext to post garbage from IRC.
Go to file
2024-09-01 22:38:15 +02:00
bin Add webapp packages 2023-05-05 21:48:32 +02:00
config monolog: set prod logs to log file 2024-09-01 22:25:17 +02:00
migrations Add security 2023-09-09 22:49:46 +02:00
public use Bootstrap because duck everyything 2024-02-25 20:18:39 +01:00
src fix function that should not be static 2024-09-01 22:38:15 +02:00
templates show feed URL in podcast admin page 2024-02-25 22:55:19 +01:00
tests Add webapp packages 2023-05-05 21:48:32 +02:00
translations Add webapp packages 2023-05-05 21:48:32 +02:00
.env fix bad env var name 2024-09-01 22:38:07 +02:00
.env.test Add webapp packages 2023-05-05 21:48:32 +02:00
.gitignore configure formatting with php-cs-fixer 2024-02-25 20:15:29 +01:00
.php-cs-fixer.dist.php configure formatting with php-cs-fixer 2024-02-25 20:15:29 +01:00
.phpactor.json configure phpactor with php_cs_fixer 2024-02-25 22:49:40 +01:00
.symfony.local.yaml run message worker in dev webserver 2024-09-01 19:55:47 +02:00
composer.json implement new episode route in the API 2024-09-01 16:17:39 +02:00
composer.lock implement new episode route in the API 2024-09-01 16:17:39 +02:00
docker-compose.override.yml Add webapp packages 2023-05-05 21:48:32 +02:00
docker-compose.yml Add webapp packages 2023-05-05 21:48:32 +02:00
phpunit.xml.dist Add webapp packages 2023-05-05 21:48:32 +02:00
psalm.xml Work in progress… 2023-05-11 17:03:52 +02:00
README.md parameterize yt-dlp & ffprobe binary paths 2024-09-01 22:23:59 +02:00
symfony.lock configure formatting with php-cs-fixer 2024-02-25 20:15:29 +01:00

LSBC

Lightweight Symfony Broadcast Client, probably.

A small platform to create podcasts and episodes, host the audio files and share the RSS feed, with external sources download abilities. The end goal is to have a minimalist platform to post stuff from the Web and mostly to enable posting from bots though the API, for shits and giggles.

Features include:

  • Lightweight, bare minimum pages;
  • Simple backoffice;
  • Separate users manage their own podcasts;
  • A download service to add episodes from an API or the command-line by providing a URL to download and a podcast slug; this service forwards everything to yt-dlp (download) and FFProbe (metadata);

Podcasts follow mostly open standards but the “target” client is the fantastic AntennaPod, and gPodder was used in development.

Install

This project requires:

  • PHP 8.3
  • PostgreSQL 15 and its PHP driver

For production:

  1. Clone the repository.
  2. Setup your web server to use PHP-FPM (root is ./public).
  3. Create the production config file: composer dump-env prod. Set a proper app secret.
  4. Create a database and its owner, then set appropriate database credentials in the config file.
  5. Install dependencies: composer install --no-dev.
  6. Apply database migrations: php bin/console doctrine:migrations:migrate

Usage

Once installed visit the website and everything should be straightforward. Use php bin/console list from the command-line to check available commands.

Youtube and cookies

As the Youtube download service relies on yt-dlp to download stuff and you might want to run LSBC on a server, Youtube will probably ask you to login, and providing a username and a password is not enough for them. yt-dlp will fail with an error message.

What you need is a cookies export file. To produce one, run on your own computer yt-dlp --cookies-from-browser firefox --cookies cookies.txt to export your cookies to a text file. You can redact cookies that aren't related to Youtube, i.e. all lines not starting with ".youtube.com" (except the comments at the top, they are mandatory for some reason). Push that to your server and set the YTDLP_COOKIES_FILE env var accordingly.

About

Is it for me?

Probably not. If you need a self-hosted podcasting platform, look at some great projects such as Castopod. LSBC is really not meant to do much.

License

GPLv3.