こんにちは。
BIG1等を当てたいサラリーマンです。
外部からメールを受信したら、WordPressを使っている当ブログに記事を下書き保存する仕組みを構築します。
その過程を簡単なサンプルを交えて、エントリーしていきます。
概要
当ブログの、[BIGレポート]第xxx回BIG 購入結果と当選結果のタイトル記事は楽天totoの速報情報を参考にエントリーしています。
この記事ではコメント以外は、決まったフォーマットが有ります。
今は、エクセルで作ったフォーマットに必要情報を投入してHTML化して記事にしています。
以前から、この作業を自動化しようと考えていました。
以下の様なフローを実現したいと思います。
処理の流れ
- メールを受信したらプログラムを実行する
- HTMLメールのコンテンツをスクレイピング
- Webページからコンテンツを取得
- データベースからデータを取得する
- アイキャッチ画像を作成する
- エントリー用コンテンツを作成する
- WordPressに下書きを保存する
メールを受信したらプログラムを実行する
メールを受信したら、PHPプログラムを自動実行させます。
Postfixでエイリアスを利用して自動実行させます。
こちらは参考になる、以前のエントリーです。
HTMLメールのコンテンツをスクレイピング
スクレイピングとは、コンテンツなどの塊を解析し必要なデータを抜き出す事です。
先ずは、HTMLメールからコンテツを取得します。
PHPのライブラリで、php-mime-mail-parserを使います。
扱いやすく、可読性もいいのでオススメです。
こちらは参考になる、以前のエントリーです。
この執筆時の最新バージョンは、Version 2.2.2でimapも必要だったので以下のコマンドでインストールしました。
sudo yum --enablerepo=remi --enablerepo=remi-php56 install -y php-imap
php-mime-mail-parser/php-mime-mail-parser – Packagist
続いてスクレイピングには、phpQueryライブラリを使います。
jQuery風にDOM操作を行える優れものです。
スクレイピング/DOM操作をjQuery風に行う(phpQuery)
Webページからコンテンツを取得
Webページからのコンテンツを取集には、PHPのfile_get_contents関数を使います。
URLを指定して、Webページを文字列として取得する事ができます。
取得した文字列を解析し情報を集取します。
PHP: file_get_contents – Manual
データベースからデータを取得する
データはSQLiteで管理しているので、データベースから取得します。
こちらは参考になる、以前のエントリーです。
アイキャッチ画像を作成する
画像生成はこちらで詳しくエントリーしました!
WordPressに下書きを保存する
WordPressへの投稿には、XML-RPC Libraryを使います。
ダウンロードして、同一ディレクトリ(任意でも可)に保存します。
The Incutio XML-RPC Library for PHP
XML-RPCライブラリの候補としてComposer経由でインストールできる、ZendframeworkのZend\XmlRpc\Clientも試しました。
可読性も良く単体ファイルから読み込めば利用できるお手軽でXML-RPC Libraryを採用しました。
しかし、作成者とカテゴリーはIDしてなので調べる必要があります。
MySQLのusersテーブル、termsテーブルから調べられます。
WordPressを外部サーバから投稿する方法 | 勉強したことのメモ
データベース構造 – WordPress Codex 日本語版
まとめ
実際には、かなり希望通りの実装ができました。
次回は、購入したくじ結果を取得するためにログイン後のページにアクセスできるよに挑戦したいと思います。