[PYTHON] Classe qui atteint l'API de DMM

Cliquez ici pour les spécifications de l'API DMM https://affiliate.dmm.com/api/ Il renvoie juste du XML, vous pouvez donc l'analyser ou ce que vous voulez ...


#coding:utf-8
import urllib2
import time

"""
Obtenez des informations sur le produit à l'aide de l'API DMM
"""

class Dmm:
    def __init__(self, api_id, affiliate_id):
        """constructeur"""
        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):
        """Définir le proxy"""
        self.proxy_host = host
        self.proxy_port = port
    
    def setVersion(self, version):
        """Définir la version"""
        self.version = version
    def setSite(self, site):
        """Définir le site"""
        self.site = site
    def setService(self, service):
        """Service de jeu"""
        self.service = service
    
    def keywordSearch(self, keyword, **options):
        """Rechercher des articles"""
        params = options
        params["keyword"] = keyword
        return unicode(self.sendRequest(params),'euc-jp')
        #return self.buildURL(params)
    
    def buildURL(self, params):
        """Créer une adresse URL de requête REST"""
        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())
        
        #Développez le hachage des paramètres
        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):
        """Envoyez une requête à DMM et renvoyez le XML récupéré"""
        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('Clé API', 'Code Affi')
    print dmm.keywordSearch('sex',hits='100')

if __name__ == '__main__':
    _test()

Recommended Posts

Classe qui atteint l'API de DMM
Création d'un script Python prenant en charge l'API e-Stat (ver.2)
Une classe qui résume les méthodes fréquemment utilisées dans l'api twitter (python)
Une classe qui change librement la valeur de l'automate par communication socket
Comment envoyer une requête à l'API DMM (FANZA) avec python
[Python] Un programme qui arrondit le score
Une histoire qui visualise le présent de Qiita avec Qiita API + Elasticsearch + Kibana
Notez que GoogleMap.getProjection dans l'API Google Maps Android n'est pas un singleton
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Un modèle qui identifie la guitare avec fast.ai
J'ai créé un LINE BOT qui renvoie une image de riz terroriste en utilisant l'API Flickr
Création d'un wrapper Python pour l'API Qiita
[Python / Tkinter] Une classe qui crée un cadre défilable
Remarques sur la personnalisation de la classe de liste de dict
Programme pour rechercher la même image
Python: préparez un sérialiseur pour l'instance de classe:
Utilisez l'API Kaggle dans un conteneur Docker
Python: créer une classe qui prend en charge l'affectation décompressée
Une note sur la nouvelle classe de base de style
J'ai fait un peu de recherche sur la classe
Un programme shell qui affiche une séquence de Fibonacci
Une histoire qui réduit l'effort de fonctionnement / maintenance
Créer une fausse classe qui triche également est une instance
[Python] Un programme qui compte le nombre de vallées
Créez un BOT qui raccourcit l'URL Discord
Implémentation python de la classe de régression linéaire bayésienne
Langage de programmation qui protège les gens de NHK
#Une fonction qui renvoie le code de caractère d'une chaîne de caractères
Une histoire qui a eu du mal avec l'ensemble commun HTTP_PROXY = ~
Exemples PHP et Python qui ont atteint l'API ChatWork
Créez une carte thermique de tweet avec l'API Google Maps
Générer cette forme du fond d'une bouteille pour animaux de compagnie
Un mémo que j'ai touché au magasin de données avec python
Comment publier un ticket depuis l'API Shogun
Une histoire qui a analysé la livraison de Nico Nama.
[Python] Un programme qui compare les positions des kangourous.
J'ai écrit un script Python qui exporte tous mes articles à l'aide de l'API Qiita v2
Un script qui facilite la création de menus riches avec l'API de messagerie LINE
Une classe qui crée rapidement une base de données avec SQLite3 et insère des données
Un programme qui supprime des caractères spécifiques du texte saisi
Comment utiliser la méthode __call__ dans la classe Python
Lancez un serveur WEB simple qui peut vérifier l'en-tête
Faisons un robot qui résout le Rubik Cube! 2 Algorithme
L'histoire du champ de modèle Django disparaissant de la classe
unixtime ← → J'ai essayé de créer une classe qui effectue facilement la conversion datetime
Créez un robot de réponse automatique en temps réel à l'aide de l'API Twitter Streaming
Un script shell qui envoie simplement le résultat de l'exécution SQL
Une note sur le comportement de bowtie2 lors de plusieurs coups
Faisons un robot qui résout le Rubik Cube! 3 Logiciel
[MQTT / Python] Implémentation d'une classe qui fait Pub / Sub de MQTT en Python
Un programme qui appuie et relâche simplement la touche Échap
Faisons un robot qui résout le Rubik Cube! 1. Vue d'ensemble
Y a-t-il un biais dans les nombres qui apparaissent dans les nombres de Fibonacci?
Tornado - Créons une API Web qui renvoie facilement JSON avec JSON
Créez une API Web capable de fournir des images avec Django
[Python] Un programme qui trouve les types d'oiseaux les plus courants
Un mémo qui a résolu le problème du sac à dos par la méthode gourmande