I have decided to reorder my goals. In my proposal I wrote, that I implement the API first, then write the AngularJS frontend, after that the metadata scanner and finally external APIs like Ampache. I changed the position of the frontend and metadata scanner implementation as this is more reasonable.
I introduced continous integration through Travis CI and it’s so helpful, because it checks every commit and runs the whole test suite on it’s own. After it has finished you get an email with the result. And there is nothing better than an email with “The build passed.” in brilliant green at the end of your working day . :)
At the last weekend I implemented the metadata scanner. Currently it uses the getID3 library to extract the metadate from files. After this it caches them inside of the database. After a file deletion the corresponding metadata will be deleted. Thus a consistent state of the metaddata inside of the database is guranteed.
The hooks I used for the detection of changes works properly for file uploads or deletion done through the web interface but if I use WebDAV they weren’t emitted.
In the next days I will add further tests, check against audio files with incomplete metadata and introduce debug logging. The latter should make it easy for others to send me bug reports and for me to figure out where something is broken.
The README contains a instruction how to set up the original shiva client
(because the ownCloud one isn’t implemented yet). You need to checkout the
music-scanner
branch of the music app repository (this will be
merged soon in the master
branch).
The changes of the last days can be found in this overall GitHub diff or splitted up into two separate diffs 1 and 2 to exclude the import of the getID3 library.
Today I migrated the old future
branch to master
because the old media app
is maintained inside of the apps repository in the stable5
branch.