どうしても「メロディー・雛・マークス」を出したい。それもPHPで。
DMM Webサービスを利用すれば、FANZAの情報が取ってこれる。DMM Webサービスはdmm.com、つまりNOT アダルト
な一般の商品情報も取得できるが、dmm.co.jp、つまりFANZAの結果が充実してて、中でも女優検索APIなんてあってオシャレ!利用するためには、アフィリエイト利用登録をしてゲットできるAPI IDとアフィリエイトIDが必要です。
なんでPHPか?は置いておいて、おとといまでphp -S
でビルトインHTTPサーバが動くことすら知らなかった初心者です(なんか昔書いてた記憶があるけど…)。お手柔らかにお願いします。
$ php dmm.php 雛
と実行すると「雛」をキーワードとしてFANZAから検索してきて、50名分の女優名とルビを表示するというしごく簡単なもの。キーワードはこのようにコマンドライン引数で渡すものとし、もしなかった場合のデフォルトは空とする(「あ」からAV女優全員が検索される)。
コマンドライン引数を解釈するためにargc
とargv
という定義済みの変数を使う。APIへのアクセスは、パラメータを含んだURLに対しGETリクエストをかけて、返ってきたJSONをデコードする。パラメータは定数で定義したAPI IDとアフィリエイトIDをapi_id
とaffiliate_id
に入れて、hits
とkeyword
で返却する女優の人数とキーワードを指定する。クエリ文字列を生成するのにPHPでは、基本モジュールのURLsにあるhttp_build_query
関数を使うとよいみたい。HTTPのアクセスにはcURLを利用した。JSONのデコードをする必要があるが、これもまたPHP標準でjson_decode
という関数がある。標準バンザイ!
以下コード。
<?php const API_ID = 'YOUR_API_ID'; const AFFILIATE_ID = 'YOUR_AFFILIATE_ID'; $keyword = $argc > 1 ? $argv[1] : ''; $url = 'https://api.dmm.com/affiliate/v3/ActressSearch'; $params = array( 'api_id' => API_ID, 'affiliate_id' => AFFILIATE_ID, 'hits' => 50, 'keyword' => $keyword ); $query = http_build_query($params); $url .= "?" . $query; echo "Search actresses from dmm.co.jp - Keyword: $keyword\n"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $content = curl_exec($ch); curl_close($ch); $data = json_decode($content); $actresses = $data->result->actress; foreach ($actresses as $actress) { echo sprintf("- %s(%s)\n", $actress->name, $actress->ruby); }
以下スクショ。
メロディー・雛・マークスでた!黒船襲来!