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.
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
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.
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
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:\')
-
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}
-
sqlite3
-
documentazione api last fm
-
eyed3
-
librerie tag id3
-
ricerca file directory / estensioni
-
operazioni sulle stringhe
-
flask/media