web app for spotify playlist management with last.fm integration https://mixonomer.sarsoo.xyz
Go to file
Andy Pack 03e9743abb
Some checks failed
test and deploy / Build & Unit Test (push) Failing after 1m21s
test and deploy / Package & Push Container (push) Has been skipped
tightening frontend
2024-10-10 23:45:22 +01:00
.gitea/workflows pinning node version to fix error 2024-07-20 12:32:28 +01:00
.github/workflows pinning node version to fix error 2024-07-20 12:32:28 +01:00
.jenkins just build docker container in jenkins 2023-08-15 17:56:55 +01:00
.vscode readding cryptography, updating deps 2023-10-13 19:43:51 +01:00
docs re-enabling sphinx docs without js 2022-08-26 19:28:17 +01:00
music tightening frontend 2024-10-10 23:45:22 +01:00
src tightening frontend 2024-10-10 23:45:22 +01:00
tests adding ios notifications 2022-12-09 08:37:05 +00:00
.babelrc added js frontend skeleton with routing 2019-07-26 14:18:32 +01:00
.dockerignore slim images, building docker container from github actions 2023-05-16 18:30:00 +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 fiddling with poetry export, updating py deps 2024-07-20 13:56:47 +01:00
app.yaml fixing service again 2023-09-05 21:04:02 +01:00
dispatch.test.yaml adding test deployment to ci 2023-09-08 17:48:50 +01:00
dispatch.yaml fixing service again 2023-09-05 21:04:02 +01:00
Dockerfile pinning node version to fix error 2024-07-20 12:32:28 +01:00
gunicorn.conf.py adding docker building 2023-05-02 08:58:34 +01: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 tweaking function entry, updating admin for gen2 adding func frameworks 2023-09-04 23:06:59 +01:00
main.run_playlist.py fix run playlist func name 2023-09-05 23:32:31 +01:00
main.update_tag.py tweaking function entry, updating admin for gen2 adding func frameworks 2023-09-04 23:06:59 +01:00
package-lock.json using npx, updating more deps 2024-07-20 12:27:11 +01:00
package.json using npx, updating more deps 2024-07-20 12:27:11 +01:00
poetry.lock fiddling with poetry export, updating py deps 2024-07-20 13:56:47 +01:00
pyproject.toml using npx, updating more deps 2024-07-20 12:27:11 +01:00
README.md Update README.md 2024-02-09 18:57:04 +00:00
webpack.common.js added description overrides 2021-07-04 22:21:18 +01:00
webpack.dev.js updating python version and all deps 2023-08-08 17:29:12 +01:00
webpack.prod.js updating python version and all deps 2023-08-08 17:29:12 +01:00

Mixonomer

Python Tests

Smart playlists for Spotify with Last.fm insights. Mixonomer is a cloud native platform for combining Spotify playlists and enhancing them with recommendations and listening history data. I started the app in 2019, but Spotify have included similar features since then such as enhanced playlists and smart shuffle.

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. Read the blog post 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 Mixonomer 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.

Acknowledgements

Took inspiration from Paul Lamere's smarter playlists.