Music Genre Sorting Program
- Project:: Music genre sorting and playlist manager implemented in Python.
Overview
- What it is:: A small Python application that organizes songs and playlists and sorts music by genres and user queries. It includes a CLI/main entrypoint and a GUI module for interactive use.
Key Features
- Playlist management:: Create, edit and save playlists using
playlist.pyandlibrary.py. - Song model:: Song metadata and helpers are in
song.py. - Database layer:: Persistent save/load logic lives in
database_manager.py. - Queries & sorting:: Search and genre-sorting helpers are in
query.py. - GUI:: A lightweight GUI front-end in
music_app_gui.pyfor interactive playlist creation.
How it works (high-level)
main.py: Simple entrypoint to run the app (CLI or GUI). Use this to launch and test the program.library.py/playlist.py: In-memory structures for libraries and playlists; they call intodatabase_manager.pyto persist data.song.py: Defines theSongmodel used across the app.database_manager.py: Handles reading/writing of the application's data files.query.py: Implements lookup and sorting algorithms used to classify and filter songs by genre or other attributes.music_app_gui.py: Provides a simple graphical interface to interact with playlists and songs.
Installation
- Python version:: Tested on Python 3.10+ (use a virtualenv recommended).
- Dependencies:: No external packages required by default. If you add GUI toolkits (e.g.,
tkinter), ensure they are available on your system.
Install and run locally:
python3 -m venv venv
source venv/bin/activate
# (optional) pip install -r requirements.txt
python3 main.pyUsage
- Run the app with
python3 main.py— this will start the default interface (CLI or GUI depending on howmain.pyis implemented). - To use the GUI specifically, run
python3 music_app_gui.py. - For quick manual checks, run
python3 manual_test.py.
Development notes
- Files of interest:
database_manager.py,library.py,playlist.py,song.py,query.py,music_app_gui.py,main.py. - If you add dependencies, add them to
requirements.txtand update the README.
License
- This repository includes an
LICENSEfile (MIT by default).
Originality statement
- Original idea:: This project and the ideas implemented in it are original and were conceived and developed by me and my teammate (the repository owners). I developed the concept, design, and the code in this repository.
Contact & attribution
- If you publish or reuse this code, please keep this README and the license file and give appropriate attribution to the original author.