This fork attempts to:
- [:heavy_check_mark:] Fix bugs (fixes critical numpy one).
- [:heavy_check_mark:] Use SQLAlchemy to support PostgreSQL, SQLite3 DBs as well.
- [:heavy_check_mark:] Use Pipenv to allow db credentials via .env file
- [:heavy_check_mark:] Support both Python3 and Python2.
- [WIP] Use the logging module so as to not litter any user's application with prints.
- [:heavy_check_mark:] Reformat code using YAPF (Facebook)
- Install directly from this repo:
pip install -e git+https://github.com/bcollazo/[email protected]#egg=PyDejavu
- Import and use:
from dejavu import Dejavu
from dejavu.recognize import FileRecognizer
djv = Dejavu(dburl='sqlite://')
djv.fingerprint_directory('~/Music')
song = djv.recognize(FileRecognizer, 'mp3/Dura--Daddy-Yankee.mp3')
print(song)
- Can also be used as a CLI tool:
export DATABASE_URL=mysql+mysqlconnector://bryan:password@localhost/dejavu
python dejavu.py --fingerprint ~/Music mp3 --limit 30
python dejavu.py --recognize mic 10
python dejavu.py --recognize file sometrack.mp3
You can keep the database url saved in an .env file and use pipenv. As
well as specify it via the --dburl
command line argument.
NOTE Some incompatibility around byte encoding is present with this connector pair
for some database versions (e.g. MariaDb).
Consider using mysql+pymysql
instead of mysql+mysqlconnector
with a simple
fingerprint to check for this error.
If you already have a live database that used to follow worldveil/dejavu database structure, you'll have to migrate your database by renaming:
song_id
toid
song_name
toname
in the songs
table.
We have included a docker-compose.yml
and Dockerfile that allows 'headless' testing.
You can choose the Python version you wish to build with by setting:
export PYTHON_VERION=3.6.6
Or update the Pipfile with the version you want and use:
export PYTHON_VERSION=$(cat Pipfile | awk '/python_version/ {print $3}' | tr -d '"')
Then run the build:
docker-compose build
This creates a dejavu
container.
Once the container is built, you can run your tests:
docker-compose run dejavu pipenv run run_tests
This will run the script called run_tests
in the Pipfile
You can get a shell with:
docker-compose run dejavu /bin/bash
You can then run tests inside the container with either pipenv run run_tests
or bash test_dejavu.sh
You can change the default command the container/service will run by changing the CMD
in the Dockerfile
or command
in the docker-compose.yml
file.
Currently they are set to tail -f /dev/null
which basically keeps a process running in the container without doing anything.
You may want to set these to pipenv run run_tests
for testing. See Docker or docker-compose