[Python] [Gracenote Web API] Eine kleine Anpassung von Pygn

Ich werde es an Qiita senden und denke, dass es Leute gibt, die mit solchen APIs umgehen. Es ist ein technischer Blog. Wenn es also verwandt ist, können Sie alles schreiben. Für das heutige Abendessen gibt es hier nichts anderes zu erwähnen.

Was ist Gracenote überhaupt?

Sie kennen iTunes wahrscheinlich nicht unter denen, die iPod oder iPhone verwenden, aber diese Gracenote-API wird beim Einlegen einer CD und beim Markieren von Songs verwendet. Alle Arten von Liedern von der Antike bis nach Ost und West sind registriert, und besonders in Japan werden Doujin-Musik- und Drama-CDs mit Eroge-Reservierungsvorteilen anerkannt. Wer ist registriert? Wirklich ... (Dieses Land ist schon ...)

Es ist eine hervorragende API, aber iTunes verfügt über ein GNSDK, das alles kann (C-Sprache). Die Web-API ist eine vereinfachte Version, gibt jedoch recht detaillierte Inhalte zurück. Wenn Sie XML auslösen, wird es in XML zurückgegeben. (Ich persönlich bevorzuge JSON, aber) Ich habe einen Wrapper, also ist es ziemlich gut.

Einfach zu verwenden

Ich bin Pythonista, also benutze ich nur Pygn. (Ich mag Python am meisten, aber ich interessiere mich auch für C # und Node.js, also könnte ich es posten, wenn ich Zeit habe ...) Bitte registrieren Sie sich im Voraus bei Gracenote, um die Cliant-ID und die Benutzer-ID zu erhalten.

Ich werde in einem Super-Flow schreiben. Es ist nicht das Hauptthema von heute.

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! Rivale', artist='Porno Graffiti'))
print(res)

Speichern Sie es als ./test.py> res.json.

Hauptthema

Ich habe gerade dafür gesorgt, dass pygn \ <LANG > ja \ </ LANG > entspricht. Dies ist eine Patch-Datei.

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>Optionale Version
 """
 
 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

Dadurch wird jedem Parameter eine lang-Option hinzugefügt.

Im vorherigen Beispiel ...

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

Es ist wie es ist. Selbst wenn es auf Japanisch zurückkommt, wird die Stimmung und so weiter nur auf Japanisch sein ... Das Einfügen von Registerkarten funktioniert nicht, daher denke ich, dass es wahrscheinlich nicht funktioniert. In diesem Fall bitte von Hand hinzufügen.

Recommended Posts

[Python] [Gracenote Web API] Eine kleine Anpassung von Pygn
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
EXE Web API von Python
Web-API mit Python + Falcon
Vergleich von 4 Arten von Python-Webframeworks
Eine Aufzeichnung zum Patchen eines Python-Pakets
Eine gute Beschreibung der Python-Dekorateure
Automatisierung einer Recherche zu geografischen Informationen wie dem Speichernetzwerk mithilfe von Python und Web-API
[Python, Ruby] Selen-Holen Sie sich Webseiteninhalte mit Webdriver
[Python] Ein Memorandum der schönen Suppe4
[Python / Django] Erstellen Sie eine Web-API, die im JSON-Format antwortet
Eine kurze Zusammenfassung der Python-Sammlung
Eine Sammlung von einzeiligen Webservern
Klicken Sie auf die Web-API in Python
Python VBA, um mit Selenium die gesamte WEB-Seite zu erfassen
Entwicklung und Bereitstellung der REST-API in Python mit Falcon Web Framework
[Python] Webanwendung von 0! Hands-on (3) -API-Implementierung-
Python: Lesen von JSON-Daten von der Web-API
Erstellen Sie ein Beziehungsdiagramm von Python-Modulen
Eine kleine Überprüfung von Pandas 1.0 und Dask
Dämonisieren Sie eine Python-Webanwendung mit Supervisor
[Python] Eine schnelle Webanwendung mit Bottle!
[Python] Ruft eine Liste der Instanzvariablen ab
[Python] [Meta] Ist der Python-Typ ein Typ?
Ein wenig mehr Details zur Einschlussnotation von Python
Ich habe eine Web-API erstellt
Python-Ausnahmebehandlung etwas bequemer
Führen Sie eine Python-Webanwendung mit Docker aus
Erstellen Sie ein Webframework mit Python! (1)
Die Geschichte der Verarbeitung A von Blackjack (Python)
[Python] Nur eine Liste der Ordner abrufen
Erstellen Sie ein Webframework mit Python! (2)
Memorandum zum Löschen von Python-Strings
Lassen Sie Python die durchschnittliche Punktzahl einer Seite mithilfe der PageSpeed Insights-API messen
[Python] 3 Arten von Bibliotheken, die die Protokollausgabe ein wenig verbessern [logzero, loguru, pyrogrus]
Holen Sie sich eine Liste der Artikel, die von Benutzern mit Python 3 Qiita API v2 veröffentlicht wurden
Ein Memo, das ein Tutorial zum Ausführen von Python auf Heroku erstellt hat
[AtCoder] Lösen Sie ein Problem von ABC101 ~ 169 mit Python
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
Erstellt einen Python-Wrapper für die Qiita-API
So öffnen Sie einen Webbrowser über Python
Vorgehensweise zur Verwendung der WEG-API von TeamGant (mit Python)
[Python] Erstellen Sie eine Liste mit verschiedenen Zeichentypen
Ein Memorandum zum Aufrufen von Python aus Common Lisp
Ich habe ein wenig über die wachsende API von TensorFlow nachgedacht
Starten Sie mit Docker einen einfachen Python-Webserver
Kopieren Sie die Liste in Python
Umschreiben von Elementen in einer Listenschleife (Python)
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Erstellen Sie eine Webmap mit Python und GDAL
[Python] Webentwicklungsvorbereitung (Erstellen einer virtuellen Umgebung)
Starten Sie einen Webserver mit Python und Flask
Explosive Geschwindigkeit mit Python (Flasche)! Web-API-Entwicklung
Machen Sie mit Python eine Joyplot-ähnliche Handlung von R.
[Python] Ein grobes Verständnis des Protokollierungsmoduls
Anonymer Upload von Bildern mit der Imgur-API (mit Python)
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
[Python] Ein grobes Verständnis von Iterablen, Iteratoren und Generatoren
Aufgezeichnete Umgebung für die Datenanalyse mit Python