Work in progress, currently online at https://www.compodio.com.
Some community radio stations post audio recordings of their shows online, but do not provide a podcast feed. This project provides RRS feeds for radio shows along side a UI with search and categorization features.
Contains a next.js project using react-query for server state, CSS modules for styling, and fuse.js for search.
Contains a Python Scrapy project with spiders that scrapes show data from radio station websites.
In addition:
scrape_images.py downloads show images and uses Pillow to generate a set of responsive images for the UI.
OpenAI Whisper is used to transcribe audio files, identify language, and Open source summarization models are used to create episode summaries in ai_ep_summary.py
Sci-kit learn is used to:
- Generate tags for shows based on their descriptions in show_keywords.py
- Perform k-means clustering on show image colours in image_colour.py in order to generate the show-specific CSS gradients used in the UI.
Contains a php api, and the podcast feed generator.
The api fetches data from a mysql database and returns it as json for the UI to consume.
data/public/index.php
is the entry point for podcast feeds. It includes data/private/feed_retreiver.php
to fetch data from the database and generates rss feeds for each show.
Contains database schema and sample data
Using docker is recommended to simplify development setup.
- Docker Desktop
- docker-compose (if not included with Docker Desktop)
<### Quick Start
-
Set up your .env file
- Duplicate .env.example to .env
- In most cases, the default values are all you need.
-
Start all services:
docker-compose up -d --build
-
Access the services:
- Frontend: http://localhost:3000
- API: http://localhost:8000
- Database: MySQL is available on the port specified in your
.env
file (default 3307)
-
Stopping services:
docker-compose down
- All SQL files in the
db
folder will be executed on database startup. This seeds the database with sample data. - For development, code changes in the
frontend
,api
, andscraper
folders will be reflected in the running containers due to volume mounts. - If you encounter issues with environment variables, try restarting your terminal and running
docker-compose down
beforedocker-compose up
.