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.
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
Add App
App Details
WebAPI verwendet "Client ID für Web API, Rhythm API und eyeQ" und "Client Tag".
Ruby gracenote https://github.com/nobelium/gracenote
Bewegen Sie sich vorerst
$ 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)
$ ruby ./sample.rb
Nun, ich frage mich, ob es nur eine Textsuche nach Alben, Künstlern und Songtiteln ist
under_fire https://github.com/jasonthompson/under_fire/
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.
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')
$ ruby ./sample.rb
--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.
Python
pygn
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.
$ 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
$ python ./sample.py
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