[PYTHON] Ich habe in der Bibliothek nach der Verwendung der Gracenote-API gesucht

Gracenote ist ein Musikinformations-Metadatendienst. Sie können Musikdaten aus dem Künstlernamen, dem Albumnamen und dem Songnamen abrufen. Neben Musikinformationen erhalten Sie auch Informationen zu Stimmung und Tempo. Ich habe die Ergebnisse der Untersuchung der Bibliothek auf Ruby / Python zusammengefasst, um die Web-API von Gracenote zu verwenden.

Client-ID abrufen

Von hier aus (https://developer.gracenote.com/?language=de) können Sie sich für das Entwicklerprogramm anmelden. Wenn es sich um Japanisch handelt, wird nach Abschluss der Facebook-Authentifizierung möglicherweise ein Sprachfehler auf dem Verwaltungsbildschirm angezeigt. Daher wird Englisch empfohlen. Wenn Sie den Verwaltungsbildschirm aufrufen, wählen Sie die Schaltfläche MyApps, wählen Sie "Neue App hinzufügen" und dann "App erstellen", um eine Client-ID auszugeben.

My Apps

My_Apps___Gracenote.png

Add App

Add_App___Gracenote.png

App Details

mhd_demo___Gracenote.png

WebAPI verwendet "Client ID für Web API, Rhythm API und eyeQ" und "Client Tag".

Ruby gracenote https://github.com/nobelium/gracenote

Impressionen

Bewegen Sie sich vorerst

Beispielcode

$ gem install gracenote
$ vi sample.rb

sample.rb


require 'rubygems'
require 'gracenote'

obj = Gracenote.new(
  clientID: '',
  clientTag: ''
)
obj.registerUser
artist_name = 'Perfume'
album_title = 'GAME'
track_title = 'Schokoladendisco'
match_mode = '0'
p obj.findTrack(artist_name, album_title, track_title, match_mode)

Lauf

$ ruby ./sample.rb

Wo es nicht cool ist

Fazit

Nun, ich frage mich, ob es nur eine Textsuche nach Alben, Künstlern und Songtiteln ist

under_fire https://github.com/jasonthompson/under_fire/

Impressionen

Es funktioniert nicht so wie es ist, daher kann es nicht verwendet werden Ich habe es umgeschrieben, um zu funktionieren, aber es ist besser, es von Grund auf neu zu machen.

Beispielcode

Da clientTag auch in CLIENT_ID enthalten ist, ist dies je nach Erstellung der Bibliothek möglicherweise nicht erforderlich.

$ gem install under_fire
$ vi sample.rb

sample.rb


require 'rubygems'
require 'under_fire'

ENV["GRACENOTE_CLIENT_ID"] = 'your client id'

module UnderFire
  class BaseQuery
    def build_base_query(&block)
      builder = Builder::XmlMarkup.new
      builder.QUERIES {
        builder.AUTH {
          builder.CLIENT ENV["GRACENOTE_CLIENT_ID"]
          builder.USER ENV["GRACENOTE_USER"]
        }
        yield builder
      }
    end
  end
end

module UnderFire
  class APIRequest
    def self.post(query, api_url)
      uri = URI(api_url)
      http = Net::HTTP.new(uri.host, uri.port)
      http.use_ssl = true
      req = Net::HTTP::Post.new(uri.request_uri)
      req.body = query
      req['Content-Type'] = 'application/xml'
      res = http.request(req)
      res
    end
  end
end

client = UnderFire::Client.new
response = client.register(ENV["GRACENOTE_CLIENT_ID"])
ENV["GRACENOTE_USER"] = response.response[:responses][:response][:user]
p client.find_album(:track_title => 'Schokoladendisco')

Lauf

$ ruby ./sample.rb

Wo es nicht cool ist

Andere

--TrackAPI ist nicht implementiert, daher können Sie weder das Tempo noch die Stimmung ermitteln. --NET :: HTTP wird verwendet, es handelt sich also um synchrone Kommunikation.

Guter Punkt

Python

pygn

Impressionen

Um es zu verwenden, kopieren Sie einfach pygn.py und legen Sie es in Ihrem Arbeitsverzeichnis ab. So wie es ist, kann es nicht gelesen werden, selbst wenn es mit pip installiert ist Es ist einfach zu bedienen, da alle Funktionen implementiert sind. Da der Quellcode eine Datei ist, kann der Code schnell gelesen werden.

Beispielcode

$ wget https://raw.githubusercontent.com/cweichen/pygn/master/pygn.py
$ vi sample.py

sample.py


import pygn

clientID = '' # Enter your Client ID here
userID = pygn.register(clientID)
metadata = pygn.search(clientID=clientID, userID=userID, artist='Perfume')
print metadata

Lauf

$ python ./sample.py

Zusammenfassung

Es gibt keine offizielle Ruby / Python-Clientbibliothek, daher müssen Sie einen Drittanbieter verwenden. Das für Python funktioniert ziemlich gut. Wenn Sie es also schnell verwenden möchten, empfehle ich pygn. Die Leistung ist bei ordnungsgemäßer Verwendung nicht gut. Daher möchte ich die Kommunikationsumgebung in eine asynchrone Bibliothek ändern und in Ruby neu implementieren oder zum Lernen in Go oder Elixer schreiben

Recommended Posts

Ich habe in der Bibliothek nach der Verwendung der Gracenote-API gesucht
Ich habe versucht, die checkio-API zu verwenden
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe versucht, die Google Cloud Vision-API zu verwenden
Ich habe versucht, die funktionale Programmierbibliothek toolz zu verwenden
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Verwenden Sie die Such-API der National Parliament Library in Python
Versuchen Sie es mit der Twitter-API
Ich habe versucht, die Qiita-API zu berühren
Versuchen Sie es mit der Twitter-API
Ich habe die Changefinder-Bibliothek ausprobiert!
Versuchen Sie es mit der PeeringDB 2.0-API
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Ich habe versucht, die API-Bibliothek NAPALM für Router-Steuerungen mehrerer Hersteller zu berühren
Verschiedene Hinweise zur Verwendung von Python für Projekte
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Ich habe die Google Cloud Vision-API zum ersten Mal ausprobiert
Versuchen Sie vorerst, die Docomo-Chat-Dialog-API zu verwenden
Ich habe einen Original-Programmführer mit der NHK-Programmführer-API erstellt.
[Für diejenigen, die TPU verwenden möchten] Ich habe versucht, die Tensorflow Object Detection API 2 zu verwenden
Ich habe die Naro-Roman-API 2 ausprobiert
Tokenize mit der Hugging Face-Bibliothek
Ich habe die neuartige API von Naruro ausprobiert
Ich habe den Betrag der Schenkungssteuer überprüft
Ich habe versucht, Kwant zu verwenden, ein Python-Modul für die Quantentransportberechnung
Ich habe eine Python-Bibliothek erstellt, um die API von LINE WORKS aufzurufen
Ich habe versucht, die COTOHA-API zu verwenden (es gibt auch Code auf GitHub).
Fortsetzung ・ Ich habe versucht, die Router-Steuerungs-API-Bibliothek NAPALM eines Anbieters zu berühren
Ich habe eine Python-Wrapper-Bibliothek für die Docomo-Bilderkennungs-API erstellt.
Ich habe mein eigenes Recherchetool mit der Gesetzes-API [Smart Roppo] erstellt.
Versuchen Sie es mit der Wunderlist-API in Python
Ich habe zum ersten Mal Tensorflow ausprobiert
Ich habe die Optionen von copyMakeBorder von OpenCV überprüft
Versuchen Sie, die Kraken-API mit Python zu verwenden
Ich habe versucht, YOUTUBE Data API V3 zu verwenden
Ich bin auf die Hatena Keyword API gestoßen
Tweet mit der Twitter-API in Python
Versuchen Sie, eine E-Mail mit der Google Mail API-Clientbibliothek für Java zu senden
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Ich habe versucht, verschiedene Sätze mit der automatischen Zusammenfassungs-API "summpy" zusammenzufassen.
3 kleine Geschichten, die ich mit Chalice überprüft habe
Erstellen Sie eine Anwendung mit der Spotify-API
Ich habe versucht, die COTOHA-API zu berühren
Ich habe den Code für Gibbs Sampling geschrieben
[Textklassifizierung] Ich habe versucht, den Aufmerksamkeitsmechanismus für Faltungs-Neuronale Netze zu verwenden.
Spielen Sie mit Dajare mithilfe der COTOHA-API
Zur Zeit möchte ich mit FastAPI zeigen, wie man eine solche API in swagger verwendet
Zeichnen Sie benutzerdefinierte Ereignisse mit der Shotgun-API auf
Ich habe eine Bibliothek für versicherungsmathematische Versicherungen erstellt
Ich habe einen LINE BOT erstellt, der mithilfe der Flickr-API ein Bild von Reis-Terroristen zurückgibt
Ich habe Hello World mit 64-Bit-OS + C-Sprache ohne Verwendung einer Bibliothek ausprobiert
Ich habe versucht, die Python-Bibliothek "pykakasi" zu verwenden, die Kanji in Romaji konvertieren kann.
Als ich versuchte, die Computer Vision API von Microsoft zu verwenden, erkannte ich das Galapagos-Zeichen "Stop".
Berühren Sie die Beispiel-v20-Python-Beispiele der OANDA v20-REST-API-Wrapper-Bibliothek für Python
Ich habe versucht, die Detect Labels-API von AWS Rekognition zu verwenden