Simple file-based podcast publisher.
This application is now considered as stable. No more features are planned, but feel free to suggest some if you need. Feature, fix, UX, logo, translation... any help is welcome !
- short feed description in the homepage.
- list of podcasts currently in the feed in the homepage.
- archives sorted per folder.
- possibility to listen any episode from the web browser.
- link to the RSS feed.
- responsive design.
- database free application.
- recursive file search.
- configurable without development (release frequency, theme, locale, timezone).
- built on Lumen 6.0 and Bootstwatch 4.3.
- a web server (tested with Apache).
- PHP >= 7.2.
- composer.
- Download the code to an empty folder:
git clone git@github.com:simondubois/podcast.git /var/www/podcast- Create the configuration file:
cd /var/www/podcast && cp .env.example .env-
Set configuration in
.env:APP_KEYis a random generated string (for example5YPcB9vVuxWf1YyjJgKhEVSg7ggvL+fD).APP_TIMEZONEis the timezone (for exampleEurope/Paris).APP_LOCALEis the locale (enorfr).PODCAST_ROOTis the path to audio files (absolute path).PODCAST_STARTis the date and time the first episode is published at (timestamp).PODCAST_LENGTHis the number of episodes available in the feed (integer).PODCAST_INTERVALis the unit ofPODCAST_FREQUENCYbetween two releases (hour,day,weekormonth).PODCAST_FREQUENCYis the number ofPODCAST_INTERVALbetween two releases (integer or decimal).PODCAST_TITLEis the podcast feed title.PODCAST_DESCRIPTIONis podcast description.PODCAST_IMAGEis the podcase image URL (optional).PODCAST_THEMEis the theme for the web interface (see https://bootswatch.com).
-
Install the dependencies:
composer install --optimize-autoloader --no-dev- Point the web server to
/var/www/podcast/public.
This feature is not implemented, and there is no plan to implement it in the future. This is a KISS project focusing on publishing audio, not managing files.
To upload episodes, you have several options:
- (S)FTP or any file manager provided by your hosting.
- sync a server folder with a local folder.
- sync a server folder with a file hosting service.
- sync a server folder with a personal cloud service.
- fork the project and implement the feature.
Episodes are sorted following the alphabetical order of their path relative to
PODCAST_ROOT.You are free to name folders and episodes as it suits you. If you decide to name the file with the date format
YYYY-MM-DD, the episode title will be the long date format in the locale defined byAPP_LOCALE.
The release schedule is based on 3 settings:
PODCAST_START: date for the first episode. The two other settings will start counting from this value.PODCAST_INTERVAL: iteration length. RepeatedPODCAST_INTERVALtimes betwwen each release.PODCAST_FREQUENCY: number of iteration between each release. The value is multiply by the duration ofPODCAST_FREQUENCYto wait for the next release.
Examples PODCAST_INTERVALPODCAST_FREQUENCYEvery day day1Every two days day2Twice per week day3.5Twice per week week0.5Every week week1Every two week week2
Authentication either requires a database or an external service. Also, authentication requires additional features like lost passwords and account activation. This is a KISS project focusing on publishing audio, avoiding any complexity.
If you want authentication, I recommend you to setup Basic access authentication at the server level.
