Nucleus、いろいろプラグイン

<2009年11月05日> by tamako 0 Trackbacks
最近は中の人がいろいろ忙しいので、めっきりプログラミングから遠ざかっていたのですが、またぞろなんか作りたい病が出てきた。

せっかくなので、Twitterからキーワードで検索して、表示するとか作ってみる。超手抜き説明です。

TwitterはTwitter APIというのがあって、これを使うと簡単にできそう。
環境は、Nucleus+PHPで。Mysqlはキーワードの部分だけ使って特に書き込みとかしない。代わりに、pearのCache_Liteとか使う。

 

ソース全部晒すのははずかしいので要所要所だけ(手抜き)
<?php
class NP_プラグイン名 extends NucleusPlugin
{
function getName() { return 'プラグイン名'; }
function getAuthor() { return '作った人の名前'; }
function getURL() { return 'どこかのURL'; }
function getVersion() { return '0.0'; }
function getDescription() { return 'プラグインの説明'; }
function supportsFeature($w) { return ($w == 'SqlTablePrefix') ? 1 : 0; }
function getMinNucleusVersion() {return 330; }

function doSkinVar() {$this->
output(func_get_args());}
function doTemplateVar() {$this->output(func_get_args());}
function doItemVar() {$this->output(func_get_args());}

function output($params)
{
・・・処理を書く
}

みたいな感じのひな形を用意。function output($params)ところだけ説明。
global $manager, $itemid, $blog, $DIR_MEDIA;
//キャッシュ使うので読み込み
include_once "Cache/Lite.php";

//キャッシュの保存先とリロード時間
$options = array(
'cacheDir' => $DIR_MEDIA . '/cache/',
'lifeTime' => 7200
);

//キャッシュの準備
$cache = new Cache_Lite($options);

みたいな感じでキャッシュの用意。
$id = $item['itemid'];
$result = mysql_query("SELECT hogehoge FROM ". sql_table("plug_hogehoge") ." WHERE itemid='$id'");
みたいな感じでitemidからとあるプラグインのキーワードを取得(NP_Relatedとか)

キーワードが取得できたら、
//josonでもらいます。
$url = 'http://search.twitter.com/search.json';
$params = http_build_query(array('q' => $searchKey, 'lang' => 'jp', 'rpp' => 5));
$results = json_decode(file_get_contents("$url?$params"));
みたいな感じで、Twitterに問い合わせ。結果をjsonでもらって以下整形
$res = 'results';
$text = 'text';
$to_user = 'to_user';
$from_user = 'from_user';
$image = 'profile_image_url';
$date = 'created_at';

if(!empty($results->$res)) {
$returnData = 'Twitterを検索:' . $searchKey . '<br>';
foreach ($results->$res as $status) {
$returnData .= '<div class="leftbox"><a target="_blank" href="http://twitter.com/' . $status->"$from_user . '">';
$returnData .= '<img src="' . $status->"$image . '" width="48px" height="48px" /></div>';
$returnData .= $status->$from_user ."</a> ". $status->$date;
$returnData .= '<div class="point11">' . $status->$text .'</div><br class="clear">';
}
$returnData .= '<a target="_blank" href="http://search.twitter.com/search?q=' . $searchKey .'">他の検索結果・・・</a><P>';
echo $returnData;
みたいな感じで、データを表示。最後に
$cache->save($returnData);
で保存。
70行くらいの短いプログラムになりました。

まあ、これでちゃんと動くし、検索結果もちゃんとでるんだけど、、、
Twitterの日本語検索はちょっと怪しい。単語一つの検索は問題ないんだけど、たとえば、「赤ちゃん型 Wiiリモコン」とかは検索できるけど、「赤ちゃん型Wiiリモコン」とかはヒットしない。

Twitterへの問い合わせをjpにしているけど、allとかするとまた検索結果が出てきたりとか・・・なので、キャッシュ時間を1日とか長めにしててもいいかもしれない。あるいはHDDに余裕あれば半年分とか・・・DBに保存する手もあるけど、面倒なのでそこまでしていないんだけど、それならキャッシュするよりDBに書き込んだ方がいいかもしれないなー

動作結果は、このページをみてください。もしTwitterがでてなかったら、他のページをみてればどこか出てると思うw

ま、そんな感じです。参考になれば。改造OKっすよw
Twitterを検索:Twitter
christellbieber Thu, 09 Sep 2010 09:08:54 +0000
[WOW]LET GET 100 FREE MORE TWITTER FOLLOWERS! http://tinyurl.com/39ee4x2

ABieberSimpson Thu, 09 Sep 2010 09:08:53 +0000
THE WAY OF GETTING 100 FREE TWITTER FANS http://tinyurl.com/25jvumr .

syafLucky Thu, 09 Sep 2010 09:08:53 +0000
RT @FAKTATIMELINE BANGGA LO JADI PEMBUAT MASALAH DAN NGEJATOHIN ORG DI TWITTER?LO MALAH DI BENCI!!!

Towanga Thu, 09 Sep 2010 09:08:53 +0000
@lusimi Na ich behaupte mal das kann nur jemand gewesen sein der keine Ahnung hat von Twitter :))

almogdesign Thu, 09 Sep 2010 09:08:53 +0000
My Twitter Fans: @ahmednuaman @secoif @peterelst @scottb71 @littlebuddha87 @_ondina @omer72 @mykola. Find yours @ http://mytwitterfans.com

他の検索結果・・・

サイト内を検索 : Twitter

トラックバック

  1. このエントリにトラックバックはありません

コメント

1 Responses to “Nucleus、いろいろプラグイン”

  1. tamako<2009年11月05日>, 17:04 wrote:
    このプラグインのキモはやはりキーワードなんだけど、つまりどんなキーワードを入れると検索しやすいか?にあると思う。
    例では、NP_Relatedからキーワードとしているけど、たまこの場合は、稚拙のプラグイン(youtubeを表示している部分)のキーワードを引っ張ってる。だから、twitterの検索キーワードとYoutubeの検索キーワードが同じってわけなんだけど、まあ、このあたりはどこに比重を置くかで、決まることになる。

    Youtubeの方に比重を置くなら、twitterの検索結果はどうでも良くなるし逆もあるわけ。

    ただ、どちらかといえば、twitterの検索結果に出やすいキーワードになるかな。Youtubeの方は、Googleの検索機能を使ってるわけだから、どんなキーワードを入れてもだいたいその通りの表示をしてくれるから、どっちも表示したいなら、Twitterに比重を置いた方がいいかもしれない。

    別々にしたいなら、管理画面にフォームを一つ用意することになるかな・・・
    でもそうすると、潔癖な人は過去の分も全部キーワードを入れたいとかそういうことになりそう(まあたまこがそうなんですけどw)

この記事へのコメントは承認してから公開されます。