- Get started by Cloning the repository or creating your own fork of the project
- Refer below to understand the Mixie architecture
- Refer the issues section to checkout Pending issues and features
TODO
tags left in code can also show work that is pending - Make your changes on a new branch, preferably named
ft_<yourFeature>
- Create your Pull Request explaining the changes you've made if it requires an explanation
- The
Mixie
class handles all central logic. MixieController
classes contain functionality for users to access Mixie
As of now only a CLI Controller exists
This controller is passed to the Mixie and FileManager classes so any user interaction required would get directed to the controller.FileManager
is an abstract class that defines methods that control File Access. These include:- Loading DB
- Saving DB
- Any extra methods you might need to facilitate these actions
- A static method that decides the right FileManager to use
MediaManager
is supposed to handle playback and control to media apps.
It is under construction
- Onload, the
MixieController
is first initialized as the controller requires minimum dependencies to function. - Next the
FileManager
andMixie
are also initialized and provided with the controller
Any user interaction required would be directed to the controller.
FileManager
is designed to be a singleton class and attempts to reinitialize it will return the same singular instance.
Initialization ofFileManager
triggers the file checks and DB initialization if it's the first time usingMixie
.
All data are saved to the users root directory: this is for use in windows, a linux implementation is required. - Finally the main method of the Controller is called, this handles all user interaction.
-
This was a batch file in the beginning, that simply loaded folders in my collection to VLC
-
Next, a python file tried to do the same thing a bit more intelligently by saving string
tags
into the comment metadata on audio files.
These tags are then used to fetch the playlist.
This was tedious and prone to errors.The python script was loading the entire playlist to VLC in a single command. This introduced constraints as command prompt had a character limit.
This issue was solved by letting the script append each track to the playlist one by one.This was still not so convenient because the script had to load up all the songs in the library on startup, which caused delays.
-
The next version used a python dictionary to map tags and tracks.
This is way faster as it only has to load a single dictionary db and does not have to deal with singular file saves.
The dictionary is saved as a text file. This was not be an optimum strategy but was left as a concern for later.Using pickle to handle the db saves was also a possible option.
-
The current architecture is more modular, It contains
FileManager
abstraction to handle db I/O- a dictionary like before to cache all data before transport to file
- a Controller that handles all user interaction
- and the
Mixie
which processes all core logic
This helped seperate the logic involved for different concerns
Tests were also added to make sure other changes didn't break anything
A bat script was also added to compile the python scripts into a single executable