107 lines
2.7 KiB
Markdown
107 lines
2.7 KiB
Markdown
# Mazash
|
|
![Swagger UI API documentation](swagger_ui.png)
|
|
Minimal application IPFS & Dejavu
|
|
|
|
The following features are included in the application:
|
|
|
|
* Recognize song by CID ipfs and extension
|
|
* Fingerpint CID IPFS, extension, song name
|
|
* API documentation using the OpenAPI 3 specification and Swagger UI
|
|
|
|
|
|
## Setup
|
|
|
|
To set up the application, you need Python 3. After cloning the repository change to the project directory and install the dependencies via:
|
|
|
|
```
|
|
apt-get install gcc nano ffmpeg libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 postgresql postgresql-contrib -y
|
|
python3 -m pip install -r requirements.txt
|
|
```
|
|
|
|
## Development
|
|
|
|
To start the app in development mode, execute
|
|
|
|
```
|
|
./run_app_dev.sh
|
|
```
|
|
|
|
The application will then be available at `localhost:5000`. You can test the functionality manually using `curl`, e.g. via
|
|
|
|
```
|
|
curl localhost:5000/api/v1/path_for_blueprint_x/test
|
|
```
|
|
|
|
or through the automated tests, by running
|
|
|
|
```
|
|
pytest
|
|
```
|
|
|
|
The commands should output
|
|
```
|
|
{
|
|
"msg": "I'm the test endpoint from blueprint_x."
|
|
}
|
|
```
|
|
|
|
and
|
|
|
|
```
|
|
test/test_endpoints.py ....
|
|
|
|
============= 4 passed in 0.14s ==============
|
|
```
|
|
|
|
respectively.
|
|
|
|
To view the API documentation through the Swagger user interface, navivate your browser to `localhost:5000/api/docs`.
|
|
|
|
## Production
|
|
|
|
To run the app in production, execute
|
|
```
|
|
./run_app_prod.sh
|
|
```
|
|
|
|
Now the application is served on `localhost:8600`. To run the automated tests for the production host, use
|
|
|
|
```
|
|
pytest --host http://localhost:8600
|
|
```
|
|
|
|
## mp3 for test
|
|
|
|
https://github.com/worldveil/dejavu/blob/master/mp3/Brad-Sucks--Total-Breakdown.mp3 -> QmU3XRYZiebdDMcUwKrvecxyDgtgVY6zaNYrzQBeCkFb2r
|
|
|
|
```bash
|
|
curl -X POST "http://localhost:8600/api/v1/mazash/recognize" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"cid\":\"QmU3XRYZiebdDMcUwKrvecxyDgtgVY6zaNYrzQBeCkFb2r\",\"extension\":\".mp3\",\"song\":\"Brad-Sucks--Total-Breakdown\"}"
|
|
```
|
|
|
|
```bash
|
|
curl -X POST "http://localhost:8600/api/v1/mazash/recognize" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"cid\":\"QmU3XRYZiebdDMcUwKrvecxyDgtgVY6zaNYrzQBeCkFb2r\",\"extension\":\".mp3\"}"
|
|
```
|
|
|
|
response :
|
|
|
|
```json
|
|
{
|
|
"align_time": 0.11919093132019043,
|
|
"fingerprint_time": 4.459228992462158,
|
|
"query_time": 2.729705810546875,
|
|
"results": [
|
|
{
|
|
"file_sha1": "02A83F248EFDA76A46C8B2AC97798D2CE9BC1FBE",
|
|
"fingerprinted_confidence": 1,
|
|
"fingerprinted_hashes_in_db": 75062,
|
|
"hashes_matched_in_input": 75062,
|
|
"input_confidence": 1,
|
|
"input_total_hashes": 75062,
|
|
"offset": 0,
|
|
"offset_seconds": 0,
|
|
"song_id": 1,
|
|
"song_name": "Brad-Sucks--Total-Breakdown"
|
|
}
|
|
],
|
|
"total_time": 7.348343849182129
|
|
}``` |