Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lionello/tidalsocial
Recommendation engine for TIDAL playlists and mixes.
https://github.com/lionello/tidalsocial
ecmascript flask machine-learning nix nodejs recommender-system tidal typescript
Last synced: about 1 month ago
JSON representation
Recommendation engine for TIDAL playlists and mixes.
- Host: GitHub
- URL: https://github.com/lionello/tidalsocial
- Owner: lionello
- License: mit
- Created: 2021-02-27T04:21:39.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2023-01-04T04:03:59.000Z (about 2 years ago)
- Last Synced: 2024-11-02T13:51:52.038Z (3 months ago)
- Topics: ecmascript, flask, machine-learning, nix, nodejs, recommender-system, tidal, typescript
- Language: Python
- Homepage:
- Size: 223 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TIdalSocial ![logo](https://github.com/lionello/TIdalSocial/blob/master/static/favicon-32x32.png?raw=true)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](https://www.typescriptlang.org/)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-f8bc45.svg)](https://github.com/prettier/prettier)![GitHub package.json version](https://img.shields.io/github/package-json/v/lionello/tidalsocial)
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/lionello/tidalsocial/latest)**This project is not affiliated with TIDAL or ASPIRO AB.**
TIdalSocial is my attempt at creating a playlist recommendation engine for the awesome [TIDAL](https://tidal.com/) music streaming service.
TIDAL does not currently have a way to browse or search for shared playlists, but that doesn't stop us, the fans, from creating our own platform.
TIdalSocial uses the following libraries for the recommendations:
* [implicit](https://github.com/benfred/implicit/) for the Alternating Least Squares matrix decomposition
* [hnswlib](https://github.com/nmslib/hnswlib) for the Hierarchical Navigable Small Worlds approximate nearest neighborsFor more details about the inner working of the algorithm, please check the excelent blog post by @benfred on https://www.benfrederickson.com/matrix-factorization/
The frontend is written in HTML and [TypeScript](https://www.typescriptlang.org) and uses [Vue.js](https://vuejs.org) and is served by [ExpressJS](https://expressjs.com).
The backend is also written in TypeScript, runs on [NodeJS](https://nodejs.org/), but `POST`s requests to a local Python 3 [Flask](https://flask.palletsprojects.com/en/1.1.x/) server for the actual recommendations. I'm using ECMAScript Modules (ESM) to allow the generated JavaScript to work in the browser as well as on NodeJS.## Development
Use `direnv` with the following `.envrc`:
```sh
use flake
export PATH=$PATH:$PWD/node_modules/.bin
layout python
```Or, without direnv:
```sh
nix-shell --pure
npm install
source .venv/bin/activate # or whichever venv you want
# For some reason CMAKE ignores the CXX from mkShell and insists on using clang
CC=$CXX pip install -r requirements.txt
```## Test
```sh
nix-shell
npm test
python -m unittest discover -s model
```## Run
```sh
nix-shell
npm start
```## Publish
```sh
npm version patch # or minor, or major
npm run docker:push
```