ゆーすけべー日記

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

Posted at — Feb 21, 2020

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女優一覧が表になってる。

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

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

comments powered by Disqus