[RUBY] J'ai recherché dans la bibliothèque l'utilisation de l'API Gracenote

Gracenote est un service de métadonnées d'informations musicales. Vous pouvez obtenir des données musicales à partir du nom de l'artiste, du nom de l'album et du nom de la chanson. En plus des informations musicales, vous pouvez également obtenir des informations sur l'humeur et le tempo. J'ai résumé les résultats de l'examen de la bibliothèque pour Ruby / Python afin d'utiliser l'API Web de Gracenote.

Obtenir l'ID client

De là (https://developer.gracenote.com/?language=en), vous pouvez vous inscrire au programme développeur. S'il s'agit du japonais, l'anglais est recommandé car une erreur de langue peut apparaître sur l'écran de gestion une fois l'authentification Facebook terminée. Lorsque vous entrez dans l'écran de gestion, sélectionnez le bouton MyApps, sélectionnez «Ajouter une nouvelle application», puis «Créer une application» pour émettre un ID client.

My Apps

My_Apps___Gracenote.png

Add App

Add_App___Gracenote.png

App Details

mhd_demo___Gracenote.png

WebAPI utilise «Client ID for Web API, Rhythm API et eyeQ» et «Client Tag».

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

Impressions

Bougez pour le moment

Exemple de code

$ 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 = 'discothèque au chocolat'
match_mode = '0'
p obj.findTrack(artist_name, album_title, track_title, match_mode)

Courir

$ ruby ./sample.rb

Là où ce n'est pas cool

--Je ne peux pas rechercher par gnid --NET :: HTTP est utilisé, donc c'est une communication synchrone.

Conclusion

Eh bien, je me demande s'il ne s'agit que d'une recherche textuelle d'albums, d'artistes et de titres de chansons

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

Impressions

Cela ne fonctionne pas tel quel, donc il ne peut pas être utilisé Je l'ai réécrit pour qu'il fonctionne, mais il vaut mieux le faire à partir de zéro.

Exemple de code

Étant donné que clientTag est également inclus dans CLIENT_ID, cela peut ne pas être nécessaire en fonction de la création de la bibliothèque.

$ 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 => 'discothèque au chocolat')

Courir

$ ruby ./sample.rb

Là où ce n'est pas cool

--J'obtiens une erreur de communication SSL

Autre

--TrackAPI n'est pas implémenté, vous ne pouvez donc pas obtenir le tempo ou l'ambiance. --NET :: HTTP est utilisé, donc c'est une communication synchrone.

Bon point

--Comparé à gracenote gem, l'interface peut être recherchée à partir de gn_id de type Ruby

Python

pygn

Impressions

Pour l'utiliser, copiez simplement pygn.py et placez-le dans votre répertoire de travail. En l'état, il ne peut pas être lu même s'il est installé avec pip Il est facile à utiliser car toutes les fonctions sont implémentées. Le code source étant un fichier, la lecture du code est rapide.

Exemple de code

$ 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

Courir

$ python ./sample.py

Résumé

Il n'y a pas de bibliothèque client officielle Ruby / Python, vous devez donc utiliser un tiers. Celui pour Python fonctionne assez bien, donc si vous voulez l'utiliser rapidement, je recommande pygn. Les performances ne sont pas bonnes lorsqu'elles sont utilisées correctement, je voudrais donc changer l'environnement de communication en une bibliothèque asynchrone et la réimplémenter dans Ruby, ou l'écrire dans Go ou Elixer pour étude.

Recommended Posts

J'ai recherché dans la bibliothèque l'utilisation de l'API Gracenote
J'ai essayé d'utiliser l'API checkio
[Pour les débutants] J'ai essayé d'utiliser l'API Tensorflow Object Detection
J'ai essayé d'utiliser l'API BigQuery Storage
vprof - J'ai essayé d'utiliser le profileur pour Python
J'ai essayé d'utiliser l'API Google Cloud Vision
J'ai essayé d'utiliser la bibliothèque de programmation fonctionnelle toolz
J'ai essayé d'utiliser l'API de Sakenowa Data Project
Utiliser l'API de recherche de la Bibliothèque du Parlement national en Python
Essayez d'utiliser l'API Twitter
J'ai essayé de toucher l'API Qiita
Essayez d'utiliser l'API Twitter
J'ai essayé la bibliothèque changefinder!
Essayez d'utiliser l'API PeeringDB 2.0
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
J'ai essayé de toucher la bibliothèque d'API de contrôle de routeur multi-fournisseur NAPALM
Notes diverses sur l'utilisation de python pour les projets
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
J'ai essayé l'API Google Cloud Vision pour la première fois
Pour le moment, essayez d'utiliser l'API de dialogue de discussion docomo
J'ai créé un guide de programme original en utilisant l'API de guide de programme NHK.
[Pour ceux qui veulent utiliser TPU] J'ai essayé d'utiliser l'API de détection d'objets Tensorflow 2
J'ai essayé le roman Naro API 2
Tokenize à l'aide de la bibliothèque Hugging Face
J'ai essayé l'API du roman Naruro
J'ai vérifié le montant de la taxe sur les cadeaux
J'ai essayé d'utiliser Kwant, un module python pour le calcul du transport quantique
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
J'ai essayé d'utiliser l'API COTOHA (il y a aussi du code sur GitHub)
Suite ・ J'ai essayé de toucher la bibliothèque d'API de contrôle de routeur multifournisseur NAPALM
J'ai créé une bibliothèque de wrapper Python pour l'API de reconnaissance d'images docomo.
J'ai créé mon propre outil de recherche à l'aide de l'API Law [Smart Roppo]
Essayez d'utiliser l'API Wunderlist en Python
J'ai essayé tensorflow pour la première fois
J'ai vérifié les options de copyMakeBorder d'OpenCV
Essayez d'utiliser l'API Kraken avec Python
J'ai essayé d'utiliser l'API de données YOUTUBE V3
Je suis tombé sur l'API Hatena Keyword
Tweet à l'aide de l'API Twitter en Python
Essayez d'envoyer un e-mail avec la bibliothèque cliente de l'API Gmail pour Java
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai essayé de résumer diverses phrases à l'aide de l'API de synthèse automatique "summpy"
3 petites histoires que j'ai vérifiées en utilisant Chalice
Créer une application à l'aide de l'API Spotify
J'ai essayé de toucher l'API COTOHA
J'ai écrit le code pour l'échantillonnage Gibbs
[Classification de texte] J'ai essayé d'utiliser le mécanisme d'attention pour les réseaux de neurones convolutifs.
Jouez avec Dajare en utilisant l'API COTOHA
Pour le moment en utilisant FastAPI, je veux montrer comment utiliser l'API comme ça dans swagger
Enregistrez des événements personnalisés à l'aide de l'API Shotgun
J'ai fait une bibliothèque pour l'assurance actuarielle
J'ai créé un LINE BOT qui renvoie une image de riz terroriste en utilisant l'API Flickr
J'ai essayé Hello World avec un langage OS + C 64 bits sans utiliser de bibliothèque
J'ai essayé d'utiliser la bibliothèque Python "pykakasi" qui peut convertir des kanji en romaji.
Lorsque j'ai essayé d'utiliser l'API Computer Vision de Microsoft, j'ai reconnu le signe Galapagos "Stop"
Appuyez sur les exemples v20-python-samples de la bibliothèque d'encapsuleurs d'API REST OANDA v20 pour Python
J'ai essayé d'utiliser l'API Detect Labels d'AWS Rekognition