Giter VIP home page Giter VIP logo

bobcat's Introduction

bobcat

Bobcat allows you to ceate a podcast feed from your BBC Sounds subscriptions.

Bobcat runs in a Docker container and uploads podcast files to an Amazon S3 Bucket.

You can find it here on Docker Hub.

Here is how the feed looks in Apple Podcasts and Overcast.

Apple Podcasts Overcast

How it works

The podcast feed is created as follows:

  • A headless Chrome browser is launched.
  • The browser logs in to the BBC Website using provided account details.
  • A list of episodes is retrieved from the My Sounds page.
  • The audio for any episodes not already in the S3 bucket are downloaded using youtube-dl, coverted to 128k CBR MP3 files with ffmpeg and then uploaded to the bucket.
  • A podcast.xml feed file is created and uploaded.
  • Optionally, Overcast servers are pinged when the feed changes.

The update process is run when the container is started and then every three hours throughout the day.

The feed will contain the most recent episodes found across all shows. As Bobcat stores episodes it has seen in a SQLite database, entries may remain in the feed after they have been removed from the BBC Sounds website.

The feed contains an <itunes:block> element and so should be treated as a private feed by Podcast players.

Amazon S3 Bucket

Bobcat tidies the S3 bucket it uses, removing any files that are no longer part of the podcast feels. This means the bucket used by Bobcat should not be used for any other purpose as any unregonised files will be permanently deleted.

The account used to access the bucket needs the following permissions:

  • s3:PutObject
  • s3:GetObject
  • s3:ListBucket
  • s3:DeleteObject
  • s3:PutObjectAcl

If the bucket used is called s3-bucket-name then the podcast feel will be available at https://s3-bucket-name.s3.amazonaws.com/podcast.xml.

Environment Variables

The Environment Variables used by the Docker container are as follows:

Variable Description Required Default
BBC_EMAIL The email of the BBC account
BBC_PASSWORD The password of the BBC account
AWS_ACCESS_ID The access ID of an AWS account with bucket permissions
AWS_SECRET_KEY The secret key for the AWS account
S3_BUCKET_NAME The name of the S3 Bucket used to host the podcast
EPISODE_LIMIT The maximum number of episodes in the feed 20
LOG_LEVEL The log level; one of DEBUG, INFO, WARNING or CRITICAL INFO
LIBRARY_LOG_LEVEL The log level for third party code; one of DEBUG, INFO, WARNING or CRITICAL CRITICAL
OVERCAST Set to any non-blank value to ping Overcast servers when podcast is updated

Volumes

The significant volumes in the Docker container are as follows:

Volume Description
/bobcat This is where the Bobcat SQLite database is stored which contains episode information. If the database is lost it can be re-created from the BBC Sounds website but it's better to make the volume persistent if possible.
/tmp This is where bobcat downloads and converts files.

Logo

If you would like to use a different Logo image for the feed, simply upload your own logo.png in to the S3 Bucket. It will not get overwritten when the feed updates.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.