LoginSignup
13
12

More than 5 years have passed since last update.

DMMのAPIを叩くクラス

Last updated at Posted at 2012-09-17

DMMのAPIの仕様はこちら
https://affiliate.dmm.com/api/
XML返ってくるだけなので、後はパースするなり何するなりお好きに・・・


#coding:utf-8
import urllib2
import time

"""
DMM APIを使って商品情報を取得する
"""

class Dmm:
    def __init__(self, api_id, affiliate_id):
        """コンストラクタ"""
        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):
        """プロキシをセット"""
        self.proxy_host = host
        self.proxy_port = port

    def setVersion(self, version):
        """バージョンをセット"""
        self.version = version
    def setSite(self, site):
        """Siteをセット"""
        self.site = site
    def setService(self, service):
        """Serviceをセット"""
        self.service = service

    def keywordSearch(self, keyword, **options):
        """アイテムを検索"""
        params = options
        params["keyword"] = keyword
        return unicode(self.sendRequest(params),'euc-jp')
        #return self.buildURL(params)

    def buildURL(self, params):
        """RESTリクエストのURLアドレスを構築"""
        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())

        # 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):
        """DMMにリクエストを送付し、取得したXMLを返す"""
        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キー', 'アフィコード')
    print dmm.keywordSearch('sex',hits='100')

if __name__ == '__main__':
    _test()
13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12