[python] [Gracenote Web API] Une petite personnalisation de pygn

Je le posterai sur Qiita, pensant qu'il y a des gens qui gèrent de telles API. C'est un blog technique, donc si c'est lié, vous pouvez écrire n'importe quoi. Il n'y a rien d'autre à mentionner ici pour le dîner d'aujourd'hui.

Qu'est-ce que Gracenote en premier lieu?

Vous ne connaissez probablement pas iTunes parmi ceux qui utilisent un iPod ou un iPhone, mais cette API Gracenote est utilisée lors de l'insertion d'un CD et du marquage des chansons. Toutes sortes de chansons de l'Antiquité à l'Est et à l'Ouest sont enregistrées, et en particulier au Japon, il reconnaît la musique doujin et les CD dramatiques des avantages de réservation eroge. Qui est inscrit? Vraiment ... (Ce pays est déjà ...)

C'est une excellente API, mais iTunes a un GNSDK qui peut tout faire (langage C). L'API Web est une version simplifiée, mais elle renvoie un contenu assez détaillé. Si vous lancez du XML, il le renverra en XML. (Personnellement, je préfère JSON, mais) j'ai un wrapper, donc c'est plutôt bon.

Facile à utiliser

Je suis Pythonista donc je n'utilise que pygn. (J'aime le plus Python, mais je suis aussi intéressé par C # et Node.js, donc je pourrais le poster si j'ai le temps ...) Veuillez vous inscrire à l'avance auprès de Gracenote pour obtenir l'ID client et l'ID utilisateur.

J'écrirai dans un super-flux. Ce n'est pas le sujet principal d'aujourd'hui.

test.py


import pygn, json

clientID = 'XXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
userID = 'XXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

def beautiful(gn_obj): 
   data = json.dumps(gn_obj, sort_keys=True, indent=4, ensure_ascii=False)
   return data

res = beautiful(pygn.search(clientID=clientID, userID=userID, album='Oh! Rival', artist='Graffiti porno'))
print(res)

Enregistrez-le sous ./test.py> res.json.

Sujet principal

Je viens de faire correspondre pygn à \ <LANG > ja \ </ LANG >. Ceci est un fichier de correctif.

pygn.patch


--- /home/hoge/Download/pygn-master/pygn.py	2015-05-15 17:06:08.436636117 +0900
+++ /usr/local/lib/python3.4/dist-packages/pygn.py	2015-05-15 04:04:38.551710764 +0900
@@ -7,6 +7,8 @@
 
 You will need a Gracenote Client ID to use this module. Please contact 
 [email protected] to get one.
+
+<LANG>Version optionnelle
 """
 
 from __future__ import print_function
@@ -100,7 +102,8 @@
 # Added by Fabian in order to cover the Rhythm API
 # Returns a list of gnmetadata dictionaries 
 
-def createRadio(clientID='', userID='', artist='', track='', mood='', era='', genre='', popularity ='', similarity = '', count='10'):
+def createRadio(clientID='', userID='', lang='', artist='', track='', mood='', era='', genre='',
+                popularity ='', similarity = '', count='10'):
     """
     Queries a Radio playlist
     """
@@ -117,6 +120,7 @@
     
     # Build the user header 
     query.addAuth(clientID, userID)
+    query.addLang(lang)
     
     query.addQuery('RADIO_CREATE')
     
@@ -228,7 +232,7 @@
 
 #***********************************************************************************************************************
 
-def search(clientID='', userID='', artist='', album='', track='', toc=''):
+def search(clientID='', userID='',lang='', artist='', album='', track='', toc=''):
     """
     Queries the Gracenote service for a track, album, artist, or TOC
     
@@ -247,6 +251,7 @@
     query = _gnquery()
     
     query.addAuth(clientID, userID)
+    query.addLang(lang)
     
     if (toc != ''):
         query.addQuery('ALBUM_TOC')
@@ -432,7 +437,7 @@
 
 
 
-def get_discography(clientID='', userID='', artist='', rangeStart=1, rangeEnd=10):
+def get_discography(clientID='', userID='', lang='', artist='', rangeStart=1, rangeEnd=10):
     """
     Queries the Gracenote service for all albums containing an artist
     """
@@ -449,6 +454,7 @@
     query = _gnquery()
 
     query.addAuth(clientID, userID)
+    query.addLang(lang)
     query.addQuery('ALBUM_SEARCH')
     query.addQueryTextField('ARTIST', artist)
     query.addQueryOption('SELECT_EXTENDED', 'COVER,REVIEW,ARTIST_BIOGRAPHY,ARTIST_IMAGE,ARTIST_OET,MOOD,TEMPO')
@@ -534,7 +540,7 @@
 
     return discography
     
-def fetch(clientID='', userID='', GNID=''):
+def fetch(clientID='', userID='', GNID='', lang=''):
     """
     Fetches a track or album by GN ID
     """
@@ -551,6 +557,7 @@
     query = _gnquery()
 
     query.addAuth(clientID, userID)
+    query.addLang(lang)
     query.addQuery('ALBUM_FETCH')
     query.addQueryGNID(GNID)
     query.addQueryOption('SELECT_EXTENDED', 'COVER,REVIEW,ARTIST_BIOGRAPHY,ARTIST_IMAGE,ARTIST_OET,MOOD,TEMPO')
@@ -721,6 +728,10 @@
         client.text = clientID
         user.text = userID
     
+    def addLang(self, language):
+        lang = xml.etree.ElementTree.SubElement(self.root, 'LANG')
+        lang.text = language
+        
     def addQuery(self, cmd):
         query = xml.etree.ElementTree.SubElement(self.root, 'QUERY')
         query.attrib['CMD'] = cmd

Cela ajoutera une option lang à chaque paramètre.

Dans l'exemple précédent ...

res = beautiful(pygn.search(clientID=clientID, userID=userID, lang='ja' album='Oh! Rival', artist='Graffiti porno'))

C'est comme ça. Même si ça revient en japonais, l'ambiance et ainsi de suite ne sera qu'en japonais ... L'insertion d'onglets ne fonctionne pas, donc je pense que cela ne fonctionnera probablement pas. Dans ce cas, veuillez ajouter à la main.

Recommended Posts

[python] [Gracenote Web API] Une petite personnalisation de pygn
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
API Web EXE par Python
API Web avec Python + Falcon
Comparaison de 4 types de frameworks Web Python
Un enregistrement de patcher un package python
Une bonne description des décorateurs Python
Automatisation d'une recherche sur des informations géographiques telles que le réseau de magasins à l'aide de Python et de l'API Web
[python, ruby] sélénium-Obtenez le contenu d'une page Web avec le pilote Web
[Python] Un mémorandum de belle soupe4
[Python / Django] Créer une API Web qui répond au format JSON
Un bref résumé de la collection Python
Une collection de serveurs Web à une seule ligne
Accédez à l'API Web en Python
Python VBA pour obtenir une capture de la page WEB entière avec Selenium
Développement et déploiement de l'API REST en Python à l'aide de Falcon Web Framework
[Python] Application Web à partir de 0! Pratique (3) - Mise en œuvre de l'API
Python: lecture de données JSON à partir de l'API Web
Créer un diagramme de relations des modules Python
Un petit examen minutieux de Pandas 1.0 et Dask
Démonisez une application Web Python avec Supervisor
[Python] Une application web rapide avec Bottle!
[python] Obtenir une liste de variables d'instance
[python] [meta] Le type de python est-il un type?
Un peu plus de détails sur la notation d'inclusion de python
J'ai créé une API Web
Gestion des exceptions Python un peu plus pratique
Exécutez une application Web Python avec Docker
Créez un framework Web avec Python! (1)
L'histoire du traitement A du blackjack (python)
[Python] Obtenir une liste de dossiers uniquement
Créez un framework Web avec Python! (2)
Mémorandum du processus de suppression de chaîne python
Laisser Python mesurer le score moyen d'une page à l'aide de l'API PageSpeed Insights
[Python] 3 types de bibliothèques qui améliorent un peu la sortie des journaux [logzero, loguru, pyrogrus]
Obtenez une liste d'articles publiés par les utilisateurs avec Python 3 Qiita API v2
Un mémo qui a fait un tutoriel pour exécuter python sur heroku
[AtCoder] Résoudre un problème de ABC101 ~ 169 avec Python
Dessiner un graphique d'une fonction quadratique en Python
Création d'un wrapper Python pour l'API Qiita
Comment ouvrir un navigateur Web à partir de python
Procédure pour utiliser l'API WEB de TeamGant (en utilisant python)
[python] Créer une liste de différents types de caractères
Un mémorandum sur l'appel de Python à partir de Common Lisp
J'ai réfléchi un peu à l'API grandissante de TensorFlow
Démarrez un serveur Web Python simple avec Docker
Copiez la liste en Python
Réécrire des éléments dans une boucle de listes (Python)
Écrire une note sur la version python de python virtualenv
Créer une carte Web en utilisant Python et GDAL
[Python] Préparation au développement Web (création d'un environnement virtuel)
Lancer un serveur Web avec Python et Flask
Vitesse explosive avec Python (bouteille)! Développement d'API Web
Créez un tracé de R semblable à un joyplot avec python
[Python] Une compréhension approximative du module de journalisation
Téléchargement anonyme d'images à l'aide de l'API Imgur (à l'aide de Python)
Touchons une partie de l'apprentissage automatique avec Python
[Python] Une compréhension approximative des itérables, des itérateurs et des générateurs
Environnement enregistré pour l'analyse des données avec Python