This is iteration one of VPR's podcast directory. We're thinking about this project as both a resource and a discovery tool. We know there are tons of podcasts Vermonters enjoy. We want to showcase them and share them.
We also want your help. If you're a Vermonter and you host a podcast, get in touch. If you're a Vermonter and you have a favorite local podcast, get in touch. If you're a developer and you think you can do this much better than we can, pull request accepted. This is public media, folks.
This project started with VPR's Live From the Fort as a template. Vermonters love to recycle.
As you can see in templates/_all_podcasts.html
, templates/_podcast_spotlight.html
, and templates/_podcast_view.html
, the Rumble Strip podcast works a bit differently than the others listed in the directory. This is because once a month, VPR airs an old episode of Rumble Strip and we've wanted the directory to feature that episode, so we don't want it to just pull and highlight the three most recent episodes from the RSS feed.
That all said, the code is set up so that everything's automated from the Google Spreadsheet. When Franny sends a ticket with a new Rumble Strip episode, all that needs to happen is an update to the spreadsheet. The code will run on the cron and update automatically.
- Make sure you have Python 2.7 installed.
- Clone the repo locally.
git clone git@github.com:vprnet/podcast-directory.git
- Install
pip
- Install virtualenv.
pip install virtualenv
- Create a virtual environment for the app.
virtualenv venv
- Install the app requirements.
pip install -r requirements.txt
- Duplicate
_config.py
asconfig.py
, which will be your private, git-ignored file of keys. - Grab the secret
podcast-access.json
file from someone on the VPR team.
- Change into the project directory.
cd podcast-directory
- Enter the virtual environment.
source venv/bin/activate
- To run locally, just hit a quick
python app/index.py
and head to127.0.0.1:5000
This project runs on a cron job in Webfaction. The cron is currently set to run three times a day, pushing up to Amazon S3. To update the production code, SSH into our Webfaction server and update changes to the production code.
The project is hooked up to a Google Spreadsheet that VPR producers and editors can populate. If you're interested in cloning this project, you'll need your own Google Spreadsheet to get started.
We use gspread with the Drive API to connect our spreadsheet to the app. Here are a few things to know about the implementation:
- To start a new project, head to the Google Developer's Console.
- Click
create a project
. Give it a name. - Click
Enable and manage APIs
. - Under
Google Apps APIs
clickDrive API
andEnable
. - Click
Go to Credentials
. Create Credentials
.Create service account key
, and selectNew service account
. Give it a name.- When you
create
, you'll see a JSON file incoming. Save that file to your project directory. Add it to your gitignore if your code is going anywhere public. - The json file is what gets loaded and opened in
sheet.py
. Make sure the names match! - Create a Google Spreadsheet through your Google Drive. Make sure your spreadsheet title is exactly what's trying to be opened in
sheet.py
'sauthorization.open("")
line. To match our project, you'll need two worksheets within the same spreadsheet:Podcasts
andStaff Picks
. In the first, we've named our columns:Name
,Category
,Spotlight
,Image
,Link
,Audio
,Feature
,RSS
,iTunes
,Other
, andDescription
. In the second, we have:Recommender
,Title
,Twitter
,Episode
,Podcast
,Link
,Description
, andImage
. We split these up into two separate worksheets in order to keep a clear history of VPR Staff Pick Podcasts. - You may need to share your Google Spreadsheet with the email provided in
client_email
.