/piratefy-server

evoluzione del progetto local-music-repo, con api di backend su modulo Flask e straming musicale

Primary LanguagePython

PIRATEFY-SERVER

Piratefy consiste in una webapp per lo streaming dei contenuti audio e si ispira a spotify come funzionalità.

Il progetto prevede la creazione di un database sqlite locale contenente le canzoni rilevate da uno scanner, che saranno poi fornite tramite gli endopoint del server.

lo scanner in questione è in grado di accedere alle cartelle di sistema specificate e leggere i metadati dei file audio .mp3.

le api tramite il modulo flask forniscono gli endpoint per la visualizzazione di canzoni, artisti, album e per lo streaming audio.

Overview file config.json

Questo file gestisce i parametri dello scanner e delle api.

E' necessario impostare questi parametri prima di avviare il file scanner.py

  • db_path: percorso del database sqllite

  • api_key: api key per last.fm

  • db_schema: percorso del file contente lo schema logico del database

  • dirs: elenco delle cartelle da scansionare

  • fetch_artists_info: se true tenta il recupero dei metadati degli artisti

  • fetch_albums_info: se true tenta il recupero dei metadati degli album

  • last_scan: timestamp dell'ultima scansione effettuata (TODO)

  • service_port: porta del servizio rest api

per la creazione di una api key nuova di last.fm seguire questo link https://www.last.fm/join?next=/api/account/create

Configurazione ambiente di sviluppo

Installare Python 3 da qui.

Installare i moduli eyed3, flask e flask_cors

$ pip install eyed3

$ pip install python-magic-bin==0.4.14

$ pip install flask

$ pip install flask_cors

Lanciare il comando pip install con i permessi di amministratore.

workflow avvio server

Seguire queste operazioni per la configurazione iniziale:

  • modificare il file config.json come oppurtuno (vedi la sezione dedicata al file sopra)

  • avviare il file scanner.py

  • al termine della scansione eseguire api.py (tramite console, non IDLE) per avviare le rest api

Nota percorsi canzoni

Sulla tabella SONGS i PATH memorizzati sono assoluti, se la macchina in cui si avvia il server è diversa da quella in cui si è effettuata la scansione c'è la possibilità che la label del disco contente le canzoni sia diversa. nel caso lanciare su DB questa query

UPDATE songs SET path = REPLACE(path,'D:\','E:\')

Routing API

  • host/api/songs

  • host/api/songs/{id}

  • host/api/songs/play/{id}

  • host/api/artists

  • host/api/artists/{id}

  • host/api/albums

  • host/api/albums/{id}

Documentazioni, troubleshooting e reference