サーモンランAPIを使ってバイトの開催情報を画面に表示するPHPのサンプルコードです。
PHPを使い、ブラウザからサーモンランの開催情報を確認できるページを作りましょう。
APIは、「now」形式を利用します。
APIを使うときに注意しなければならないことは、APIに過剰にアクセスし負荷をかけてしまうことです。APIに負荷がかかると、表示が遅くなるなど、運営者や他の利用者の方に迷惑をかけてしまいます。悪質であると判断された場合、BANの対象にもなり得ます。
API利用の常識として、今回はデータをキャッシュする仕組みも実装します。
まずは、APIから画面に表示するだけのコードを作ります。
<?php
$json = @file_get_contents('https://splamp.info/salmon/api/now');
$array = json_decode($json, TRUE);
if($array[0]['start'] <= time()){
$head = sprintf('【第%d回サーモンラン 開催中!】', $array[0]['num']);
}else{
$head = '【次回のサーモンランをお待ちください】';
}
$content = '
<br><br>
日時:%s ~ %s<br>
場所:%s<br>
<br>
[支給ブキ]<br>
・%s<br>
・%s<br>
・%s<br>
・%s<br>
';
$content = sprintf(
$content,
date('n/d G:i', $array[0]['start']),
date('n/d G:i', $array[0]['end']),
$array[0]['stage_ja'],
$array[0]['w1_ja'],
$array[0]['w2_ja'],
$array[0]['w3_ja'],
$array[0]['w4_ja']
);
echo $head . $content;
レスポンスの例
【第372回サーモンラン 開催中!】
日時:5/28 9:00 ~ 5/29 21:00
場所:トキシラズいぶし工房[支給ブキ]
・ボールドマーカー
・クーゲルシュライバー
・スクリュースロッシャー
・リッター4K
コード①では、最新のシフトの開始時刻が現在時刻より前か後かによって、サーモンランが開催中かそうでないかを判定しています。
次は、実行するとその結果が静的なHTMLファイルとして出力されるようにしてみましょう。
<?php
$raw_json = @file_get_contents('https://splamp.info/salmon/api/now');
$array = json_decode($raw_json, TRUE);
if($array[0]['start'] <= time()){
$head = sprintf('【第%d回サーモンラン 開催中!】', $array[0]['num']);
}else{
$head = '【次回のサーモンランをお待ちください】';
}
$content = '
<br><br>
日時:%s ~ %s<br>
場所:%s<br>
<br>
[支給ブキ]<br>
・%s<br>
・%s<br>
・%s<br>
・%s<br>
';
$content = sprintf(
$content,
date('n/d G:i', $array[0]['start']),
date('n/d G:i', $array[0]['end']),
$array[0]['stage_ja'],
$array[0]['w1_ja'],
$array[0]['w2_ja'],
$array[0]['w3_ja'],
$array[0]['w4_ja']
);
file_put_contents('cache.html', $head . $content);
最後の1行を変えただけです。cache.htmlという名前のファイルに、先ほどの結果を保存しました。cache.htmlは、PHPを実行するたびに更新されます。
自動でPHPを実行するには、多くのレンタルサーバーで利用できるcronという機能が便利です。
例えば、毎時実行するcronは以下のような書式になります。
0 * * * * php /cron/put_text.php
cronを書く際は、最後に空行を入れないといけないことに注意してください。
ステージ・ブキ画像の表示、Twitter bot、スマートスピーカーにシフトを訊けるプログラムなども頑張れば作れます。素敵なAPIライフを!
第1回 | バイトの開催情報を画面に表示するサンプル |
第2回 | botでシフト情報を返信するサンプル |
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント