Posted at

【Line Bot】ムフフなムービー DMMサンプルムービーを手軽に再生(PHP)


はじめに:やりたいこと

日頃お世話になることが多いDMM(18禁のほう)改めFANZAですが、WEB APIを提供していることを知りました。

【参考URL】

- AIで似ているAV女優を紹介しているスケベAI「スケベ博士」を作りました。

- 顔認識AI + LINEの新機能 でAVソムリエを作ってみた

上記の投稿を参考にさせていただき、自分でもできそう(否、自分でもやりたい)、と思い、まず手始めに、キーワードをLineで送り、検索結果から得られたサンプルムービーを返す。という機能に絞ってLine Botを作成しようと思いました。また、1つだけの返答では物足りないので、Lineの返答の最大である5つの返答にしてみました。


前提


使用技術

Line message API

・PHP


実際のもの

実際の画面

line.JPG

QRコード

QRcode.jpg

よかったら使ってみてください。


実現方法


①Line Botの基本:返答の部分

 →こちらを参照


②「DMM WEB APIを使用したデータ取得」と「サンプルムービーの取得」部分の抜粋

//DMM API

$dmmApiId = 'tmWPa0aTEfd5SRgCereV';
$dmmAffiliateId = 'anotherskyjp-990';
$searchHits = 10;
$searchIndex = rand(1, 10);

//メッセージタイプ取得
$messageType = $jsonObj->{"events"}[0]->{"message"}->{"type"};

//メッセージタイプがtextの場合の処理
if ($messageType == 'text') {

//メッセージテキスト取得
$messageText = $jsonObj->{"events"}[0]->{"message"}->{"text"};
//DMM APIのセット
$apiUrl = 'https://api.dmm.com/affiliate/v3/ItemList?api_id=' . $dmmApiId
. '&affiliate_id=' . $dmmAffiliateId
. '&site=FANZA&service=digital&floor=videoa'
. '&hits=' . $searchHits
. '&sort=date'
. "&offset=" . $searchIndex
. '&keyword=' . $messageText
. '&output=json';

//DMM APIを使用してデータの取得
$dmmData = file_get_contents($apiUrl);
//JSON形式に変更
$json = json_decode($dmmData);

$i = 0;
$j = 0;
$message = [];

//取得したデータ(JSON)をループしてmessageの返答データを作成する
while($i < $searchHits) {
if($j == 5) {
break;
};
try {
$movie = $json->{'result'}->{'items'}[$i]->{'sampleMovieURL'}->{'size_476_306'};
if(is_null($movie)){
throw new Exception('とれませんでした');
}

$titleFull = $json->{'result'}->{'items'}[$i]->{'title'};
$title = mb_strimwidth($titleFull, 0, 40, "...");

$image = $json->{'result'}->{'items'}[$i]->{'imageURL'}->{'large'};

$template = array(
'type' => 'buttons',
'thumbnailImageUrl' => $image,
'title' => $title,
'text' => '下記をクリックするとサンプル動画を再生できます',
'actions' => array(
array(
'type'=>'uri',
'label'=>'check movie',
'uri'=>$movie
)
)
);

$message = array(
'type' => 'template',
'altText' => 'どうかな?',
'template' => $template
);

switch ($j) {
case 0:
$message1 = $message;
$j++;
break;
case 1:
$message2 = $message;
$j++;
break;
case 2:
$message3 = $message;
$j++;
break;
case 3:
$message4 = $message;
$j++;
break;
case 4:
$message5 = $message;
$j++;
break;
}

} catch ( Exception $ex ) {
// echo '捕捉した例外: ', $ex->getMessage(), "\n";
}
$i++;
};
}


まとめ・改善ポイント


  • サンプルムービーを取得して、簡単に再生できるようになりました。


  • APIを呼び出してデータを取得し、取得したデータから必要な部分を取り出して使用する、ということを勉強するのにとてもいい内容だと個人的には感じました。(別の意味でモチベーションも上がりますので、学習意欲が高い所で維持されます)



  • 次の改善ポイントしては、先にも記載した参考にさせていただいた投稿(顔認識AI + LINEの新機能 でAVソムリエを作ってみた)の中でも実施されている下記のようなことを実施していきたいなと思っています。


    • Line Message APIのFlexMessageやクイックリプライ

    • 顔認識 FACE API の使用