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.
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.
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
.
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