web app for spotify playlist management with last.fm integration https://mixonomer.sarsoo.xyz
Go to file
2022-07-28 07:02:05 +01:00
.github/workflows updating py to 3.10, pulling docs 2022-07-28 07:00:27 +01:00
.vscode fixing sass error with calc,turning off justMyCode 2022-04-10 22:19:18 +01:00
docs remove debugger, added admin script to docs, added launch.json 2021-06-19 12:54:24 +01:00
music included spotify owned in mutable keys added to UI 2021-07-10 16:08:58 +01:00
src fixing sass error with calc,turning off justMyCode 2022-04-10 22:19:18 +01:00
tests added smart case insensitivity for user playlist retrieval 2021-06-16 20:40:14 +01:00
.babelrc added js frontend skeleton with routing 2019-07-26 14:18:32 +01:00
.gcloudignore added empty stats to playlist generation for ios app 2020-03-08 10:51:21 +00:00
.gitignore remove debugger, added admin script to docs, added launch.json 2021-06-19 12:54:24 +01:00
admin.py updating py to 3.10, pulling docs 2022-07-28 07:00:27 +01:00
app.yaml updating py to 3.10, pulling docs 2022-07-28 07:00:27 +01:00
dispatch.yaml restrict deploy to main push, updated dependencies 2021-03-20 18:21:33 +00:00
main.api.py admin script, live playlist updating with functions or tasks, config option 2020-06-30 16:38:06 +01:00
main.cron.py shifted cron jobs to serverless+scheduler, switches instead of checboxes 2020-08-13 19:50:21 +01:00
main.run_playlist.py begin testing tasks, pass objects to playlist and tag refreshing 2021-02-08 16:18:16 +00:00
main.update_tag.py begin testing tasks, pass objects to playlist and tag refreshing 2021-02-08 16:18:16 +00:00
package-lock.json downgrading react 2022-07-28 07:02:05 +01:00
package.json updated chart.js, webpack. added js docs, added js to sphinx 2021-06-11 16:36:01 +01:00
poetry.lock updating py to 3.10, pulling docs 2022-07-28 07:00:27 +01:00
pyproject.toml updating py to 3.10, pulling docs 2022-07-28 07:00:27 +01:00
README.md adding docstrings, restructured reST 2021-03-24 10:06:54 +00:00
webpack.common.js added description overrides 2021-07-04 22:21:18 +01:00
webpack.dev.js added js frontend skeleton with routing 2019-07-26 14:18:32 +01:00
webpack.prod.js added js frontend skeleton with routing 2019-07-26 14:18:32 +01:00

Music Tools

Python Tests

Set of utility tools for Spotify and Last.fm. Built on my other libraries for Spotify (spotframework), Last.fm (fmframework) and interfacing utility tools for the two (spotfm). Currently running on a suite of Google Cloud Platform services. An iOS client is currently under development here.

Read the full documentation here.

Smart Playlists

Create smart playlists for Spotify including tracks from playlists, library and Spotify recommendations.

Playlists List Playlist Example

Playlists can pull tracks from multiple sources with some extra ones based on the playlist's type.

  • Spotify playlists
    • Currently referenced by case-sensitive names of those followed by the user
    • Plan to include reference by Spotify URI
  • Other Music Tools playlists
    • Dynamically include the Spotify playlists of other managed playlists
    • Used to allow hierarchy playlists such as for genre (as seen above for multiple rap playlists)
  • Spotify Library Tracks
  • Monthly Playlists
    • ONLY for "Recents" type playlists
    • Find user playlists by name in the format "month year" e.g. february 20 (lowercase)
    • Can dynamically include this month's and/or last month's playlist at runtime
  • Last.fm track chart data
    • ONLY for "Last.fm Chart" type playlists
    • Include variable number of top tracks in the last date range

When not shuffled, playlists are date sorted with newest at the top for a rolling album artwork of newest releases.

Playlists are updated using the spotframework playlist engine three times a day.

Tags

Groups of Last.fm objects for summing of scrobble counts and listening statistics.

Tag Example

Structure

This repo consists of a front-end written in React.js and Material-UI being served by a back-end written in Flask.

The application is hosted on Google Cloud Infrastructure.

As this codebase stands it's not really re-useable as is, references to the cloud infrastructure are hard-coded.

Acknowledgements

Took inspiration from Paul Lamere's smarter playlists.