Ingest(Обновить хеш-код) на серверах эхопечатных операций с использованием JAVA

Я разрабатываю приложение для Android с использованием JAVA. Все что я хочу это

  1. запишите песню и сгенерируйте ее хэш (CODE), а затем запросите совпадение у сервера эхопечатных устройств.
  2. Если совпадение не найдено, загрузите его на сервер (загрузите) для будущих ссылок.

Я смог достичь первой части. Может кто-нибудь подсказать мне про вторую часть в JAVA? (PS: я видел, как это сделать, используя коды Python - но это не поможет в моем случае.)

Другой вопрос, могу ли я достичь второй цели с помощью глобального сервера эхопечатности? Или мне нужно настроить свой собственный?

Ссылки, которые я использовал:

http://masl.cis.gvsu.edu/2012/01/25/android-echoprint/

https://github.com/gvsumasl/EchoprintForAndroid

1 ответ

Чтобы вставить песню в базу данных сервера echoprint, все, что вам нужно сделать, это вызвать ingest метод. По сути, это всего лишь HTTP-запрос POST с правильным телом json. Вот код Scala (Java был бы очень похож), который я использую для этого:

import EasyJSON.JSON
import EasyJSON.ScalaJSON
import dispatch.Defaults.executor
import dispatch._
class EchoprintAPI {

  val API_URL = "http://your.api.server"

  def queryURL(code: String) = url(s"$API_URL/query?fp_code=$code")

  def query(code: String): scala.concurrent.Future[ScalaJSON] = {
    jsonResponse(queryURL(code))
  }

  def ingest(json: ScalaJSON, trackId: String): scala.concurrent.Future[ScalaJSON] = {
    val metadata = json("metadata")
    val request = url(s"$API_URL/ingest").POST
      .addParameter("fp_code", json("code").toString)
      .addParameter("artist", metadata("artist").toString)
      .addParameter("release", metadata("release").toString)
      .addParameter("track", metadata("title").toString)
      .addParameter("codever", metadata("version").toString)
      .addParameter("length", metadata("duration").toString)
      .addParameter("genre", metadata("genre").toString)
      .addParameter("bitrate", metadata("bitrate").toString)
      .addParameter("source", metadata("filename").toString)
      .addParameter("track_id", trackId)
      .addParameter("sample_rate", metadata("sample_rate").toString)
    jsonResponse(request)
  }

  def delete(trackId: String): scala.concurrent.Future[ScalaJSON] = {
    jsonResponse(url(s"$API_URL/query?track_id=$trackId").DELETE)
  }

  protected def jsonResponse(request: dispatch.Req): scala.concurrent.Future[EasyJSON.ScalaJSON] = {
    val response = Http(request OK as.String)
    for (c <- response) yield JSON.parseJSON(c)
  }
} 

Чтобы создать код отпечатка пальца, вы можете использовать echoprint-codegen вызов командной строки или использование интеграции Java JNI с C lib

Другие вопросы по тегам