SE12 Python Project
This page is dedicated to my work on a Python project for my SE12 Module at Leeds School of Computing. I am partnered with Dan Du Preez for the duration of the project, and it is a pair programming exercise.
Project Overview
The aim of this project is to build a working prototype of a python application designed to perform a specific, useful and suitably complex task. We have now come up with a name for our project, which is to build an application to index and tag MP3 files. In true Monty Python spirit, we have decided to call it:
(Some call it) TIM (Tagger and Indexer for MP3s)
This project will allow us to explore a wide range of features present in the python language, and hopefully create a package that we can both use ourselves and indeed make available for others to use at the end of the project. While there are many MP3 indexing programs around and many are available for free, many have gaps, and it is these gaps we are aiming to fill.
Specification & Aims
The followng are the main aims of the project as outlined in the project blog(s):
- Index MP3 files in a given directory, implementing recursive indexing, and reading the ID3 tags of the files as the index process progresses.
- Store data gathered from the indexing process (filenames, locations, and ID3 information) in a database rather than a flat file, initially using SQLlite, but ensuring the ability to change the application to use MySQL or Postgres easily.
- Allow incomplete or incorrectly tagged MP3 files to be manually corrected by way of a user interface. Search options such as finding incomplete files, or files named or tagged in a certain way are to be included to facilitate and improve this process.
- The application will have a GUI, and run on multiple operating systems. Most users like to manage their music in a friendly environment and this applies accross a range of OS users.
Desirable Features
The following features have been discussed, are desirable, but may not be able to be completed during the lifespan of the project. If deveopment continues after the close of the project however, these are features we hope to see included.
- Filling in gaps in tags, or re-tagging MP3 files completely using data obtained through file hashing indexed on a central server, such as freeDB or musicbrains
- Using a GUI interface. This is really a decided feature, but not something we have fully explored in Python. The idea of a web interface was floated, but it was decided a GUI was better and that the use of a database supporting SQL would facilitate the addition of a web based module at a later date were it required.
- Upon completion and marking the project will be released as open source, under the GPL
- Allowing an interface with an MP3 player through the selection of tracks by size (eg. you have a 4Gb MP3 player and you want a random selection of your music to be chosen from your library that will fill that size)
- The ability to select tracks in the library and generate XML based playlists containing those tracks on the fly for export to an MP3 player (software or hardware based). The format of the playlists was undecided, however the idea of using m3u or asx was mentioned.
Project Blogs
Check out a running blog of project progress, my thoughts on how things are going, success, problems etc. My Project Blog
You may also want to check out Dan’s project blog
Current Project Progress
Specification: | 100% | |
Required Python Knowledge: | 100% | |
Design: | 100% | |
Code: | 100% | |
Testing: | 40% |
Bug Tracker – TIM 0.5.0 Alpha
With the advent of the alpha release of TIM, we invite all people testing the application to submit bugs to us. You can contact us on the e-mail addresses in the readme files when you download the application. To avoid repeated bugs, please check this page before submitting your bugs, as the following have already been reported. If you find a valid bug in the application and contact us about it, it will be listed here and credited to you. A fix will be worked on and applied in the next release.
- No browse button in first run wizard (Niall Fleming)
- No way of changing root path to MP3s once applied in first run wizard (Limitation of alpha software, issue known)
- Issue with paths with spaces in when running on windows (Shotokan101)
- Indexing doesn’t start automatically after successful first run wizard (Niall Fleming)
- Issue with displaying non-unicode characters in ListCtrl (Devlopers)
- Sorting non-functional in ListCtrl (Developers)
- Broken tags applied in database with default rather than empty value (Niall Fleming)
- Incorrect use of legacy pysqlite, requiring installation of old version on windows (Shotokan101)
Thanks to all who have submitted bugs so far, its a great help. Keep them coming and thanks for supporting TIM!
Project Releases
-
Please feel free to download and test our first Alpha release of TIM. Please report all bugs to us, and use with caution – alpha software is by definition buggy, and we will not accept any reponsibility for any damage that may occur to your system through the use of the TIM Alpha Release.
Python work outside of the project
-
A Python script that when executed, starts up a mini webserver on your machine on port 8080. When amaroK is running on your machine and playing a file, querying http://localhost:8080 in your browser will display what you are currently listening to. If you have nothing playing in amaroK or amaroK is not installed or not running, you will see “Silence!” displayed. This script is re-released under the GPL after modification by me, orginal authors remain credited in the scripts comments.