jibjib-api

command module
v0.0.0-...-b71cd7b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 3, 2018 License: GPL-3.0 Imports: 5 Imported by: 0

README

jibjib-api

Go Report Card Docker Build Status godoc reference

Go REST API to receive input from the JibJib Android App, query the model and send those information back to the App.

Repo layout

The complete list of JibJib repos is:

  • jibjib: Our Android app. Records sounds and looks fantastic.
  • deploy: Instructions to deploy the JibJib stack.
  • jibjib-model: Code for training the machine learning model for bird classification
  • jibjib-api: Main API to receive database requests & audio files.
  • jibjib-data: A MongoDB instance holding information about detectable birds.
  • jibjib-query: A thin Python Flask API that handles communication with the TensorFlow Serving instance.
  • gopeana: A API client for Europeana, written in Go.
  • voice-grabber: A collection of scripts to construct the dataset required for model training

Install

Docker

See deploy instructions.

Compile yourself

If you didn't clone the repo, go get the package and the main.go:

go get github.com/gojibjib/jibjib-api/pkg
cd $GOPATH/src/github.com/gojibjib/jibjib-api
wget https://raw.githubusercontent.com/gojibjib/jibjib-api/master/meta/main.go 

Compile it:

CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

Setup jibjib-data.

Start the API:

export JIBJIB_DB_URL=read:read@localhost/birds
./app

API Documentation

Endpoints
Endpoint Method Comment
/ GET Answers with a basic "Pong" response
/ping GET Answers with a basic "Pong" response
/birds/dummy GET Sends a JSON Response with randomized IDs and accuracies for testing
/birds/all GET Retrieves all bird information, without descriptions
/birds/{id:[0-9]+} GET Retrieves bird information by ID. Use query string desc_de=false and desc_en=false to omit description fields.
/detect/binary POST Send a MP4 file to the API to start querying the ML model for bird voice recognition. File needs to be send in binary format and with the Header Content-Type: application/octet-stream set.
Response format
{
    "status": <int>,
    "message": <string>,
    "count": <int>,
    "data": {...} | null
}
Examples
curl "http://localhost:8080/ping"
{
    "status":200,
    "message":"Pong",
    "count":0,
    "data":null
}
curl "htttp://localhost:8080/birds/1"
{
    "status":200,
    "message":"Bird found",
    "count":1,
    "data": {
        "id":1,
        "name":"Cuculus canorus",
        "genus":"Cuculus",
        "species":"canorus",
        "title_de":"Kuckuck",
        "title_en":"Common cuckoo",
        "desc_de":"...omitted...",
        "desc_en":"...omitted..."
    }
}
curl "htttp://localhost:8080/birds/1?desc_de=false&desc_en=false"
{
    "status":200,
    "message":"Bird found",
    "count":1,
    "data": {
        "id":1,
        "name":"Cuculus canorus",
        "genus":"Cuculus",
        "species":"canorus",
        "title_de":"Kuckuck",
        "title_en":"Common cuckoo",
        "desc_de":"",
        "desc_en":""
    }
}
# For now, only mp4 files are being accepted
curl -H 'Content-Type: application/octet-stream' -X POST --data-binary @larus_canus_3.mp4 http://localhost:8081/detect/binary
{
  "message": "Detection successful",
  "status": 200,
  "count": 3,
  "data": [
    {
      "accuracy": 0.6470588235294118,
      "id": 110
    },
    {
      "accuracy": 0.17647058823529413,
      "id": 7
    },
    {
      "accuracy": 0.17647058823529413,
      "id": 30
    }
  ]
}

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
pkg
api

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL