Coder Social home page Coder Social logo

dynamite's Introduction

Helper scripts for Spotify playlists

© Chuan-Zheng Lee 2019–2020

This repository contains some scripts that I use to help manage my Spotify playlists. The scripts do things like:

  • Print a table summarizing information about tracks in a playlist (playlist.py)
  • Print information about a track, or the currently playing track (track.py)
  • Guide through a semi-automated sorting process, to sort tracks into specialized playlists for genre and tempo (sort.py)
  • Remove tracks on a "removed" playlist from all other playlists (remove.py)

Everything is done via the command line. This isn't a publicly hosted app—if you want to use it, you'll need to create your own Spotify app to get access to the Spotify API.

While some user-specific settings are set in settings.py, a lot of the code in this repository is hard-coded to be specific to how I structure my WCS playlists. This means it probably won't work out of the box for most other people. For example, since all of the playlists I use this for have "WCS" as a prefix, the script prepends this to user input. I keep a playlist of all relevant tracks, so there are provisions for an "all playlist". The categories in categories.py are just the names of my WCS playlists. A more obscure quirk is that my genre playlists for pop music are divided by decade, so there's special code in there to interpret "pop" according to the release date of the track in question.

Getting started

1. Create a Spotify app

You'll need to create a Spotify client ID via Spotify Developer. To do this, create an app as described here. You'll also need to whitelist a redirect URI. It doesn't really matter what the redirect URI is. Then copy settings.example to settings.py and insert your client ID, client secret and redirect URI there.

2. Install dependencies

These scripts run on Python 3. I'm using Python 3.8, but they probably work on earlier versions.

Other than Python itself, the scripts really only have one dependency: a Spotify client library called Tekore by Felix Hildén (Github repo). I've also listed flake8 and flake8-import-order for convenience, but they're not actually dependencies. To install all three:

$ pip install -r requirements.txt

But if you'd rather just install Tekore,

$ pip install tekore

will do the trick.

3. Update configuration

Configuration is in two places: settings.py (which you'll need to create from settings.example) and categories.py.

The file categories.py is just a list of names of playlists that you own. Your playlist's names are probably different from mine, so you'll need to edit this file.

4. Initialize the cache

To avoid having to ping Spotify for playlists countless times, these scripts maintain a cache of which track IDs are in which playlists. The script update.py updates this cache, which is just stored as four JSON files in the same directory (genre.json, tempo.json, special.json and status.json). To run it:

$ python update.py

When you run this script for the first time, the script will prompt you to log into Spotify and grant access to the app you created in step 1. If it's not doing so properly, make sure you set your client ID, client secret and redirect URI correctly.

Some scripts will update the cache when they modify playlists, but the update rules aren't that smart, and also if you modify the playlists yourself through (say) the Spotify desktop client, this cache won't know about it. Just run python update.py whenever you need to update the cache.

5. Run more useful scripts

That's it! The other scripts, like playlist.py and track.py, should now work. Using the --help option on any of them will tell you more.

dynamite's People

Contributors

czlee avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

itsbrex

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.