twitter BOT作成しようとしてみた その2


追記 4/14
色々やってみた結果、セッションは使用できない事が判明!!(SESSION IDが保持できないため)
なので、下記はあんまり当てになりませんが、せっかく書いたので、とりあえず置いときます
ちゃんと動くのはこちら→




- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



前回に引き続きBOT作成を進めてみました。


自分の好きなブログのRSSを取得して、ツイートできるようにしようと思います。

RSSの取得方法はこちら参考にしました!




1,ここから最新版をダウンロードします

2,外部ファイルなのでvenderに展開したファイルを入れます


 →rss_cache.inc
rss_fetch.inc
rss_parse.inc
rss_utils.inc
→extlib

★重要


・venderでincファイルも読み込めるみたいですが、後々なにかとややこしそうだったので
 incファイルの拡張子を全部phpに変えてしまいます
 extlibフォルダに入ってるincファイルもです

・incファイルの中でincファイルをrequireしているので、その部分もphpに変更してしまいます


これで、RSSを取得する準備はできたので、コントローラで色々いじっていきます


・app/controllers/tweets_controller.php
前回で続きでいえばfunction seach()に取得する文を記述します。

function search(){
        
//rssを取得するために読み込みます
        
App::import('Vendor''rss_fetch');

        //文字コードセットするみたいです
        
define('MAGPIE_OUTPUT_ENCODING''UTF-8');
        
        
//好きなブログのrssのURLを記述(これはここのrssです)
        
$url 'http://d.hatena.ne.jp/megane_bomb/rss';
        
$rss fetch_rss($url);
    
        
//ブログタイトルはこんな感じでとれます
        
$title $rss->channel['title'];
        echo 
"<h3>$title</h3>";

        //セッションで記事のタイトルを保存して、
最新と保存しているの記事の比較で記事の更新の有無を確認します
        
        //セッションが入っているか確認。
入っていなかったら書き込む、入っていたら最新のタイトルと比較する
        
if(!$this->Session->check('title')){
        
            
$title h($rss->items['0']['title']);
            
$this->Session->write('title',$title);
            
        }else{
        
            
//セッションがはいっていて、最新の記事と一致しなかったら、ツイートする。
            
if(h($rss->items['0']['title']) !== $this->Session->read('title')){
                
$url h($rss->items['0']['link']);
                
$text $title.$url;
                
                
$this->Twitter ConnectionManager::getDataSource('twitter');
                
                
//ここでツイートしてます
                
$this->Twitter->status_update($text);
                
                
//念のため削除してから、書き込む
                
unset( $_SESSION["title"] );
                
$this->Session->write('title',$title);
            }
        }
    }



これで大丈夫だとおもうんだけどなー・・・
なぜかわからないけど、記事を更新してもrssが反映してくれない。
キャッシュも消したけど、変わらず。

rssって反映されるまで、時間がかかるのかな><?




とりあえず、これをタスクスケジューラーで
時間ごとに呼び出してあげればきっとBOTが完成するはず!!


タスクスケジューラー使うのはわかるけど、どのファイルを指定すればいいのかわからない。