API PHP X 自動化

X(旧Twitter)の埋め込み用ポストをoEmbed APIで取得しWebサイトに半自動で表示する

私は「VARS」というロックバンドのメンバーで、「VARS」のWebサイトの管理もしています。

Xのポストをトップページに表示していますが、毎回ポストするたびに埋め込みコードを取得して貼り付けていました。

それが、「面倒だな~」と思っていたので、XのAPIを使おうと思っていたので、APIを登録してみました。

XのAPI無料版はポストの取得は出来ないらしいので、「どうしようかな~?」と思っていましたが、「あれ?埋め込み用のAPIはないのかな?」と思ったら、ありました!!

https://developer.x.com/en/docs/twitter-for-websites/oembed-api

APIでポストの埋め込みコードを取得して、データベースに登録し、それをWebサイトのトップページに表示させます。

これで、半自動でWebサイトにXのポストを表示できるようになりました!

投稿者「みか」自己紹介

  • パソコンとデータベースが大好き
  • 自社でネットワーク・システム・機器管理、Webサイト構築
  • 自社向けのシステムをMicrosoft AccessやPHPで多数構築
  • Excelでの作業はVBAを使って効率化
  • ロックバンド「VARS」でベース担当
  • 「VARS」のWebサイト、ブログも構築
  • 「VARS」のライブを観に来てね!https://vasofatum.jp/live/

データベースにテーブル作成

oEmbed APIで取得したポストの埋め込み用コードをデータベースに保存するため、テーブル(dt_x)を作成しました。

テーブル:dt_x

テーブルの中の「kbn」に「VARS」と「MIKA」で登録しておきました。

Xのポストは最新のものだけ登録されていればいいので、「VARS」と「MIKA」の2行だけあればOKです。

テーブルに登録するPHPスクリプト作成

Xの埋め込み用コードをoEmbed APIで取得しデータベースに登録する画面を作ります。

登録ボタンをクリックすると、下記のスクリプトが実行されるようにします。

【touroku.php】

<?php
require_once "../../blog/wp-config.php";
require_once "../../func_db.php";

$vars_db = get_db();
$touroku_ok = '';

if(strpos($_POST['in_x_url'],'?') !== false){
    $x_url_tmp = explode('?', $_POST['in_x_url']);
    $x_url = $x_url_tmp[0];
}else{
    $x_url = $_POST['in_x_url'];
}

$url = "https://publish.twitter.com/oembed?url=".$x_url."&maxwidth=300&lang=ja";

//cURLセッション初期化
$ch = curl_init();

//URL、オプション指定
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//情報取得
$res =  curl_exec($ch);

//結果
$x_post = json_decode($res);

//セッションを終了する
curl_close($ch);

if($x_post->author_url == "https://twitter.com/vars_axisent"){
    $kbn = 'VARS';
}elseif($x_post->author_url == "https://twitter.com/MikaVasofatum"){
    $kbn = 'MIKA';
}

$x_html = $x_post->html;

$sql = "UPDATE dt_x SET x_post = ? WHERE kbn = '{$kbn}'";
$stmt = $vars_db->prepare($sql);
$flag = $stmt->execute(array($x_html));
if ($flag){
    $touroku_ok = '登録ok';
}else{
    $touroku_ok = '登録失敗';
}

$vars_db = null;

echo $touroku_ok;

2行目:データベースはWordPressと同じものを使っているので、ユーザー、パスワードは「wp-config.php」から読み込みます。

3行目:データベースに接続します。

【func_db.php】

<?php
function get_db(){
    $dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET;
    try{
        // DB接続
        $db = new PDO($dsn, DB_USER, DB_PASSWORD);
    }catch (PDOException $e){
        echo "Error:".$e->getMessage();
        die();
    }
    return $db;
}

登録してみる

ポストのURLを入れて登録ボタンを押してみました。「登録ok」と表示されました。

データベースを見てみると、登録されています!

VARSのWebサイトにも無事表示されました~(^O^)

-API, PHP, X, 自動化
-, , , , ,