天然パーマです。

Pythonでメロディー・雛・マークスを出す

Python を勉強するにあたってまずは DMM Web サービスを叩きたい。


ニッポンのおもてなしデビューを果たしたという 「メロディー・雛・マークス」の情報を女優検索 API から検索して表示させるお決まりのやつ。 過去のメロディー・雛・マークスは以下。

今回は Python3、及びせっかくだからと Jupyter Notebook で表示してみたい。

まずは、環境変数に入れたAPI IDAFFILIATE IDを取得する。 この 2 つの値は DMM API にリクエストする際に必須になる。

import os

api_id = os.environ.get('DMM_API_ID')
affiliate_id = os.environ.get('DMM_AFFILIATE_ID')

次にリクエスト URL を生成する。なお、HTTP クライアントは標準のurllibを使うことにした。

import urllib.request

...

base_url = 'https://api.dmm.com/affiliate/v3/ActressSearch'
params = {
    'api_id': api_id,
    'affiliate_id': affiliate_id,
    'keyword': '雛',
    'hits': '50',
}

url = "{}?{}".format(base_url, urllib.parse.urlencode(params))

本来ならkeywordの値をユーザー入力によって変更可能にしたいところだが、 暫定的に「雛」とする。

URL が完成したらクライアントから GET、 中身は JSON フォーマットで返却されるので、パースして辞書型にしてdata変数に格納する。

import urllib.request
import json

...

req = urllib.request.Request(url)
with urllib.request.urlopen(req) as res:
    body = res.read()
data = json.loads(body)

いよいよ、pandasライブラリを使って DataFrame に変換、Jupyter Notebook で描画する。 ただ、返却された JSON のデータ構造はそのまま使えないので、 女優リストを取得するためにdataディクショナリの中をたぐり、 生の JSON 文字列にしてからpandasread_jsonメソッドで読み込ませる。

import json
import pandas as pd

...

df = pd.read_json(json.dumps(data['result']['actress']))

これで、よし。全ソースコードは以下の通り。

import os
import urllib.request
import json
import pandas as pd

api_id = os.environ.get('DMM_API_ID')
affiliate_id = os.environ.get('DMM_AFFILIATE_ID')

base_url = 'https://api.dmm.com/affiliate/v3/ActressSearch'
params = {
    'api_id': api_id,
    'affiliate_id': affiliate_id,
    'keyword': '雛',
    'hits': '50',
}

url = "{}?{}".format(base_url, urllib.parse.urlencode(params))
req = urllib.request.Request(url)
with urllib.request.urlopen(req) as res:
    body = res.read()
data = json.loads(body)
df = pd.read_json(json.dumps(data['result']['actress']))
df.loc[:,['id','name','ruby']]

Jupyter Notebook で「Controll + Enter」を押していざ実行。

お、AV 女優一覧が表になってる。

下の方にスクロールすると…

でた!メロディー・雛・マークス!黒船襲来!