Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lankaraniamir/music-library-db-web-interface

PostgreSQL database and a corresponding Flask web interface to store music library information dynamically with multiple linked versions of songs
https://github.com/lankaraniamir/music-library-db-web-interface

music-database music-library music-website postgresql

Last synced: about 1 month ago
JSON representation

PostgreSQL database and a corresponding Flask web interface to store music library information dynamically with multiple linked versions of songs

Awesome Lists containing this project

README

        

# Music Library Database & Web Interface

## Description
This database/website pair can be used to store and access data within any personal or professional music library in a way that is flexible yet intricate. In order to run, you must store your own dataset using the provided [SQL schema](https://github.com/lankaraniamir/music-library-db-web-interface/blob/master/music_lib_schema.sql), and then alter the commented out database information in [web interface](https://github.com/lankaraniamir/music-library-db-web-interface/blob/master/server.py) to use the relevant information for your system and database. [Example queries](https://github.com/lankaraniamir/music-library-db-web-interface/blob/master/example_queries.sql) show how to extract various data from the schema.

![alt text](https://github.com/lankaraniamir/music-library-db-web-interface/blob/master/er_diagram.png?raw=true)

## Database
I created this database in PostgreSQL to store my own music in a way that made it easy: to extract audio data for my research studies, to find multiple versions of a song for my DJ sets & music production, to listen to my music in traditional forms such as an album, and to allow my library to be shared by my roommates as different users. It contains each entity and relationship that could be found in a typical music streaming service or music archive, along with some more that satisfy the criteria above. The database is particuarly novel in that there is a distinction between a song and a song file allowing there to be multiple versions of a song that are linked together allowing users to listen to albums as normal while being able to extract alternative versions of the song --- such as instrumentals, acapellas, remixes, and samples --- without hassle.

## Web Interface
Each entity is accessed through unique header options with some headers grouping multiple entities (eg songs, lyrics, & files). Relationships are usually implemented using dynamic links which bring users from the web page for one entity instance to the web page associated with the entity instance of the other entity in the relationship. This constant linkage allows for easy movement between all information as needed (eg can easily go to info of each song on album, each genre of the album, and each user who saved the album from the album page). It also has a dynamic approach to genres where all songs and releases within a genre are found by first finding all subgenres using a recursive selection of all genres that can be traced upwards to the current genre, and then finding any song or release that exists within any of those genres. Website is made using Flask.
Lastly, the web interaface also allows you to create an account and only allows accesss to account holders.