Daily Grooves is a keep-it-simple music discovery service, featuring a single YouTube playlist refreshed & shuffled daily from hand-picked sources, resulting in no-nonsense instant serendipitous ear delicacy.
Technically, it is a tiny Python2.7 Google App Engine app serving a single static page displaying a YouTube playlist iframe. Each day, a new playlist is created by a GAE cron job firing a Task that crawls a list of sources for embedded/linked videos, shuffles them, and inserts them into a YouTube playlist via the Python API.
If you do not want to use my DailyGrooves instance, you can roll your own:
- Get a GAE instance and a YouTube API access.
- Clone this repository.
- Extract the latest google-api-python-client-gae-x.y.zip into the
dailygrooves
app folder (theapiclient, httplib2, oauth2client, uritemplate, gflags.py, gflags_validators.py
files & folders must live next todailygrooves.py
). - Download and install the latest Google App Engine SDK for Python.
- Adjust your instance parameters:
- From the API Access section of your Google APIs Console, obtain your
client_secrets.json
file, and extract it to thedailygrooves
app subfolder, next todailygrooves.py
. - Tweak the cron update time in
cron.yaml
to your liking. - Put your sources in
SOURCE_URLS
. Sources can be any kind of text, I'm not requiring any format (HTML, RSS, whatever), I just read text and run a regex on it.
- From the API Access section of your Google APIs Console, obtain your
- Deploy with
python2 /path/to/your/appcfg.py update /path/to/dailygrooves/dailygrooves/
- Trigger an initial manual crawl by opening
YOURAPPURL/fetch
in your browser (necessary to cache an OAuth2 refresh token), and ensure 2 hours later that your cron job runs fine.
As of November 2015, DailyGrooves runs fine on Python 2.7 / GAE 1.9.28 / GAE-Python-Client 1.1.
Bug Reports and Pull Requests are welcome via GitHub.
Licensed under the MIT license, 2013-2015, ronan@jouchet.fr / @ronjouch.