[PYTHON] Klasse, die die API von DMM trifft

Klicken Sie hier, um die DMM-API-Spezifikationen anzuzeigen https://affiliate.dmm.com/api/ Es wird nur XML zurückgegeben, sodass Sie es analysieren können oder was auch immer Sie möchten ...


#coding:utf-8
import urllib2
import time

"""
Erhalten Sie Produktinformationen mithilfe der DMM-API
"""

class Dmm:
    def __init__(self, api_id, affiliate_id):
        """Konstrukteur"""
        self.baseurl = "http://affiliate-api.dmm.com/"
        self.proxy_host = None
        self.proxy_port = None
        self.api_id = api_id
        self.affiliate_id = affiliate_id
        self.version = "1.0.0"
        self.site = 'DMM.co.jp'
        self.service = 'digital'
        self.operation = 'ItemList'
        
        self.url = None
    
    def setProxy(self, host, port=8080):
        """Proxy festlegen"""
        self.proxy_host = host
        self.proxy_port = port
    
    def setVersion(self, version):
        """Version einstellen"""
        self.version = version
    def setSite(self, site):
        """Site festlegen"""
        self.site = site
    def setService(self, service):
        """Service einstellen"""
        self.service = service
    
    def keywordSearch(self, keyword, **options):
        """Nach Artikeln suchen"""
        params = options
        params["keyword"] = keyword
        return unicode(self.sendRequest(params),'euc-jp')
        #return self.buildURL(params)
    
    def buildURL(self, params):
        """"""
        params["api_id"] = self.api_id
        params["affiliate_id"] = self.affiliate_id
        params["version"] = self.version
        params["site"] = self.site
        params["service"] = self.service
        params["operation"] = self.operation
        params["timestamp"] = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
        sorted_params = sorted(params.items())
        
        #Erweitern Sie den Hash von Params
        request = []
        for p in sorted_params:
            pair = "%s=%s" % (p[0], urllib2.quote(p[1].encode("euc-jp")))
            request.append(pair)
        
        url = self.baseurl + "?" + "&".join(request)
        
        return url
        
    def sendRequest(self, params):
        """Senden Sie eine Anfrage an DMM und geben Sie das abgerufene XML zurück"""
        self.url = self.buildURL(params)
        if self.proxy_host:
            proxy_handler = urllib2.ProxyHandler({"http":"http://%s:%s/" % (self.proxy_host, self.proxy_port)})
            opener = urllib2.build_opener(proxy_handler)
        else:
            opener = urllib2.build_opener()
        return opener.open(self.url).read()
    
def _test():
    dmm = Dmm('API-Schlüssel', 'Affi-Code')
    print dmm.keywordSearch('sex',hits='100')

if __name__ == '__main__':
    _test()

Recommended Posts

Klasse, die die API von DMM trifft
Erstellen eines Python-Skripts, das die e-Stat-API unterstützt (Version 2)
Eine Klasse, die häufig verwendete Methoden in Twitter API (Python) zusammenfasst.
Eine Klasse, die den SPS-Wert durch Socket-Kommunikation frei ändert
So senden Sie eine Anfrage mit Python an die DMM (FANZA) -API
[Python] Ein Programm, das die Partitur rundet
Eine Geschichte, die die Gegenwart von Qiita mit Qiita API + Elasticsearch + Kibana visualisiert
Beachten Sie, dass GoogleMap.getProjection in der Android-API von Google Maps kein Singleton ist
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
Ein Modell, das die Gitarre mit fast.ai identifiziert
Ich habe einen LINE BOT erstellt, der mithilfe der Flickr-API ein Bild von Reis-Terroristen zurückgibt
Erstellt einen Python-Wrapper für die Qiita-API
[Python / Tkinter] Eine Klasse, die einen scrollbaren Frame erstellt
Hinweise zum Anpassen der Diktatlistenklasse
Programm zur Suche nach demselben Bild
Python: Bereiten Sie einen Serializer für die Klasseninstanz vor:
Verwenden Sie die Kaggle-API in einem Docker-Container
Python: Erstellen Sie eine Klasse, die entpackte Zuweisungen unterstützt
Ein Hinweis zur neuen Stilbasisklasse
Ich habe ein wenig über die Klasse recherchiert
Ein Shell-Programm, das eine Fibonacci-Sequenz anzeigt
Eine Geschichte, die den Aufwand für Betrieb / Wartung reduziert
Erstellen Sie eine gefälschte Klasse, die auch betrügt, ist Instanz
[Python] Ein Programm, das die Anzahl der Täler zählt
Erstellen Sie einen BOT, der die Discord-URL verkürzt
Python-Implementierung der Bayes'schen linearen Regressionsklasse
Programmiersprache, die die Menschen vor NHK schützt
#Eine Funktion, die den Zeichencode einer Zeichenfolge zurückgibt
Die Geschichte, eine harte Zeit mit der gemeinsamen Menge HTTP_PROXY = ~ zu haben
PHP- und Python-Beispiele, die die ChatWork-API treffen
Erstellen Sie eine Tweet-Heatmap mit der Google Maps-API
Erzeugen Sie diese Form des Bodens einer Haustierflasche
Ein Memo, dass ich den Datenspeicher mit Python berührt habe
So veröffentlichen Sie ein Ticket über die Shogun-API
Eine Geschichte, die die Lieferung von Nico Nama analysierte.
[Python] Ein Programm, das die Positionen von Kängurus vergleicht.
Ich habe ein Python-Skript geschrieben, das alle meine Beiträge mit der Qiita API v2 exportiert
Ein Skript, mit dem Sie mit der LINE Messaging-API auf einfache Weise umfangreiche Menüs erstellen können
Eine Klasse, die mit SQLite3 schnell eine Datenbank erstellt und Daten einfügt
Ein Programm, das bestimmte Zeichen aus dem eingegebenen Text entfernt
Verwendung der Methode __call__ in der Python-Klasse
Starten Sie einen einfachen WEB-Server, der den Header überprüfen kann
Lassen Sie uns einen Roboter bauen, der den Zauberwürfel löst! 2 Algorithmus
Die Geschichte des Django-Modellfeldes verschwindet aus der Klasse
unixtime ← → Ich habe versucht, eine Klasse zu erstellen, die die Datums- / Uhrzeitkonvertierung problemlos durchführt
Erstellen Sie mithilfe der Twitter-Streaming-API einen Echtzeit-Bot für die automatische Antwort
Ein Shell-Skript, das nur das Ergebnis der SQL-Ausführung per E-Mail sendet
Ein Hinweis zum Verhalten von bowtie2 bei mehreren Treffern
Lassen Sie uns einen Roboter bauen, der den Zauberwürfel löst! 3 Software
[MQTT / Python] Implementierte eine Klasse, die Pub / Sub von MQTT in Python ausführt
Ein Programm, das nur die Esc-Taste drückt und loslässt
Lassen Sie uns einen Roboter bauen, der den Zauberwürfel löst! 1. Übersicht
Gibt es eine Verzerrung in den Zahlen, die in den Fibonacci-Zahlen erscheinen?
Tornado - Erstellen wir eine Web-API, die JSON problemlos mit JSON zurückgibt
Erstellen Sie eine Web-API, die Bilder mit Django liefern kann
[Python] Ein Programm, das die häufigsten Vogeltypen findet
Ein Memo, das das Rucksackproblem mit der gierigen Methode löste