worldveil/dejavu — pull request #16 by Wessie (2013-12-19 19:48:16+00:00)
Title: Dejavu Revamped

This is the pull request associated with the small discussion in issue #7 about the rewrite I've been doing.

I'll list the major changes below and will answer any questions that arise.

- API update across the whole project
- Wave files are no longer *created*. Instead we decode in memory and use that to fingerprint.
- We can now *fingerprint* and *recognize* any file supported by ffmpeg (through pydub)
- Database can potentially be something different than MySQL
- Configuration is now a Python dictionary, user can choose how to save it.

There are several minor changes we made along the way:

- Cleaned up several functions/methods required arguments
- Adjusted many parts to go with the pep8 style guide (not everything done yet)
- Cleaned up unneeded imports
- Many more I forgot to add to the change lists

Some of the issues that were raised while we were working on this got fixed, we didn't fix all of them. The issues #4, #7, #8, #9, #10, #13 and #14 are known to be fixed in the revamped version, any not mentioned should be still there.

From here on out we still have things that can be improved:

- **Error handling**: Most of dejavu is naive to errors, we should improve error handling drastically.
- **Fingerprinting**: The general `fingerprint_directory` process, especially `_fingerprint_worker` is very naive to errors that happen while fingerprinting
- **Tests**: Having at least a couple of unit tests to test the main functionality of _dejavu_

Hope this outlines enough information, feel free to ask any questions in the comments.