youtubeの検索結果をWordPressに自動投稿する方法
youtubeから特定のキーワードで検索した動画をWordPressに自動で投稿したいという案件があった。半自動ならプラグインは見つけられたけど、完全自動のものは見つけられなかったので、XML-RPを用いて関数を作成した。以下に使い方のメモ。
■ダウンロード先
http://scripts.incutio.com/xmlrpc/
■関数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
//---------------------------------------- // WordPress外部投稿 // // **引数** // $dir(string) このプログラムとIXR_Library.phpを置いてあるディレクトリを絶対パスで指定 // $domain(string) 投稿したいWordPressを置いているサーバのドメイン // $user(string) WordPressのユーザー // $pass(string WordPressのパスワード // $author(int) 投稿者のID // $status(string) 投稿状態。デフォルトは下書き。publishだと公開 // $category(int) 投稿カテゴリ。デフォルトは未分類 // $searchWord(string) youtubeの検索ワード // $filter(string) youtubeのフィルタをクエリで指定。空だと関連性の高い順 // $tag(array) 投稿タグ。デフォは何もなし // // **返り値** // bool(true or false) //---------------------------------------- function postYoutubeWordPress( $dir, $domain, $user, $pass, $author = 1, $status = 'draft', $category = 1, $searchWord, $filter, $tag ) { //必須引数のチェック if( !$dir || !$domain || !$user || !$pass || !$searchWord ){ return false; } //ライブラリの読み込み include_once($dir . 'IXR_Library.php'); $client = new IXR_Client($domain . 'xmlrpc.php'); //SQLite開く。テーブル無ければ作る $dbFile = $dir . 'youtube.sqlite'; $dbFlg = ( file_exists($dbFile) ) ? true : false; $sqlite = new SQLite3($dbFile); if( !$dbFlg ){ $query = " CREATE TABLE 'youtube' ( 'seq' INTEGER PRIMARY KEY, 'title' TEXT, 'movie' INT ); "; $result = $sqlite->query($query); } //youtubeからデータ取得 $youtube = 'https://www.youtube.com/results?search_query=' . urlencode($searchWord) . $filter; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $youtube); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $line = curl_exec($curl); $line = mb_convert_encoding($line,'UTF-8','auto'); //取得したデータから正規表現で動画IDとtitleを取得 $pattern="/<a href=\"\/watch\?v=(.*?)\"[\n|\s]class=\".*?\"[\n|\s]data-sessionlink=\".*?\"[\n|\s]title=\"(.*?)\"[\n|\s]/"; $match = array(); preg_match_all($pattern, $line, $match, PREG_SET_ORDER); //ループ処理 for ($i = 0; $i< count($match); $i++) { $movieId = $match[$i][1]; $movieTitle = $match[$i][2]; //既に登録されていないかチェック $query = ' SELECT * FROM youtube WHERE movie = "'. $movieId .'" LIMIT 1 '; $result = $sqlite->query($query); $flg = false; while ($rs = $result->fetchArray()) { if( $rs['seq'] ) $flg = true; } if( $flg ) continue; //登録されていない場合はDBに登録 $query = ' INSERT INTO youtube (title, movie) VALUES ("'. $movieTitle .'", "'. $movieId . '") '; $result = $sqlite->query($query); $iframeUrl = '<iframe width="560" height="315" src="https://www.youtube.com/embed/' . $movieId . '" frameborder="0" allowfullscreen></iframe>'; $postData = array( 'post_author' => $author, 'post_status' => $status, 'post_title' => $movieTitle, 'terms' => array('category' => array($category)), 'post_content' => $iframeUrl, 'terms_names' => array('post_tag' => $tag) ); $return = ( $result = $client->query('wp.newPost', 1, $user, $pass, $postData) ) ? true : false; if( !$return ){ return $return; } } return $return; } |
■使い方
cronで回すことを想定したのでディレクトリは絶対パスで指定する。あとフィルタのクエリに関しては「&filters=week&lclk=week」みたいな形で指定。
WordPressのプラグインでVideo Thumbnailsをインストールして有効化しておくとアイキャッチ画像を自動で設定してくれるので、これもインストールしておく。
あとはcronで回す。
関連記事
-
-
WordPressでメモリを節約しつつ高速化する設定方法
メモリ1GのVPSを借りてWordpress以外にも、ちょいちょいものを置いてい …
-
-
WordPressで逆アクセスランキングの設置
WordPressに逆アクセスランキングを設置したかった。 ただ、広告が出ないタ …
-
-
WordPressで「データベース接続確立のエラー」
WordPressで設定ファイル(wp-config.php)は触っていないのに …
-
-
WordPress4.0の新機能
WordPress4.0への更新が出来るとダッシュボードに書いてた。 互換性で変 …
-
-
WordPressでプラグインの作成方法
WordPressで簡単なニュースを表示させるというプラグインを作成したので、使 …
-
-
WordPressの管理画面で記事一覧にアイキャッチ画像を表示
WordPressの管理画面で記事一覧にアイキャッチ画像を表示させる方法のメモ。 …
-
-
WordPressを停止しないままサーバ移設する方法
WordPressを設置しているサーバのリソースがそろそろ危ういので移設を検討す …
-
-
WordPressで閲覧者にテーマを変更させるプラグイン
「新規サイトを○○みたいなイメージでWordPressのテーマを見繕って欲しい」 …
-
-
WordPressにてフッターへ出現する笑顔マーク(smiley)を見えなくする方法
■やりたい事 WordPressにて左下へ勝手に出現する笑顔マーク(smiley …
-
-
WordPressで任意のクエリをページに出力するプラグイン
先日、「WordPressで任意のクエリをページ内で出力する方法 」という記事で …