トップ(最新)

nDiki : XML::RSS

スポンサード リンク

Related term

2005年5月16日 (月)

はてなブックマーク上の最新ブックマークnDiki このエントリーを含むはてなブックマーク

スポンサード リンク

自分でタグ付けできないのでどうなのかと思っていたはてなブックマークであるが、気がつけば登録したブックマークももうすぐ1500。

タグ付けできない部分は、検索機能である程度カバー。 お気に入り機能のおかげで旬のネタ収集もできる。 なんだかんだいっても、さすが「はてな」という感じ。

日々登録しているブックマークを活用したいということで RSS を利用して、nDiki に表示してみることにした。 出勤前のちょっとした時間で Perl スクリプトとしてささっと実装

  • ローカルPCで以下の作業を行うスクリプトを書く
    1. LWP::Simple を使用して RSS を取得
    2. XML::RSS で parse() したあと、items から HTMLフラグメントを生成
    3. nDiki のフッタに挿入
  • cron で1時間毎に
    1. 上記スクリプトを走らせ、フッタファイルを書き換え
    2. フッタファイルを UnisonWeb サーバアップロード

という形で実現。

  • DiKicker にはフッタファイルに別のファイルをインクルードする機能がないので、フッタを書き換えてしまえ。
  • サーバに XML::RSS を入れるのが面倒なので、ローカルPCでやってしまえ。どうせブックマークが更新されるのは、そのPCを使っている時だけだから。

という手ぬきであっさり実装

◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。


[ 5月16日全て ]

2005年10月30日 (日)

はてなブックマーク上の検索結果を nDiki このエントリーを含むはてなブックマーク

5カ月ほど前はてなブックマーク上の最新ブックマークnDikiサイドバーに表示するようにしてみた。

今回は nDiki のキーワード別のページに、はてなブックマークからそのキーワードで検索されたブックマークを表示する機能を追加してみた。

取得する対象RSSが多くなり、さすがに前回みたいにローカルPCで処理して定期的にアップロードという形では無駄が多すぎるのでちゃんとサーバ上で処理するようにした。

URI::Fetch + Cache::FileCache + XML::RSS を用いて実装キャッシュ期間は1日に設定。キーワードページを最初にアクセスした際にははてなブックマークからのフィード取得があるので、ちょっと時間がかかるが2度目のアクセス以降キャッシュを使っている間はそれほど余計な時間はかからないはず。

自分のWeb日記とブックマークの組み合わせだと当然扱うネタが近いので、きちんと関連する情報が表示されるはずだ。 他の検索サーバのRSSフィードを利用する事も考えてはいるけど、しばらくはこれでいいかな。


[ 10月30日全て ]

2006年6月10日 (土)

Plaggerインストールが大変なので XML::RSSRSS から JavaScript コードへ変換するスクリプトを自作 このエントリーを含むはてなブックマーク

一昨日社内メイン Wiki のレイアウトを変更してサイドバーを設けたので、徐々に増えてきた社内 Blog の ヘッドラインをそこに表示することにした。

最初は Plagger を使ってみようと思ったのだが、依存 CPAN モジュールが多くて CPAN.pm を使ってもなかなかインストールが終わらない。

ということで今回は Plagger を見送って、XML::RSS でちょちょっと aggregator を自作して済ますことにした。

基本的には nDiki 用に書いた「はてなブックマーク上の最新ブックマークを表示するためのコード(2005年5月16日)」をちょっと修正して利用。 HTML フラグメントを生成するかわりに、JavaScript IncludeJavaScript ファイルを生成するように変更した。

これで社内 Blog が読まれる回数も増えるかな。


[ 6月10日全て ]

2007年11月9日 (金)

Twitter ステータスを nDiki サイドバーに表示 このエントリーを含むはてなブックマーク

公式の Flash 版 Twitter badge をこのページのサイドバーに表示していたが、以下の点でちょっと不満だった。

  • 「Flash, Just Me」: 自分のみのステータスを表示できるが、1度に1つのみ。キャッシュの関係で古い情報が表示されがち。
  • 「Flash, With Friends」: 自分のみのステータスを表示できない。
  • 「HTML/JavaScript」: JavaScript ファイル読み込みなので、Twitter 側が重いとページのその先のレンダリングが止まってしまう。

「自分の過去のステータスを一覧的にサイドバーに表示する」のがしたいことなのだが、ちょっとマッチしない。 ということで Twitter から RSS フィードを取ってきて、サイドバーに表示することにした。

使ったモジュールは URI::Fetch + XML::RSS + Date::Parse。 それとユーティリティとして WiKicker::HTML と WiKicker::URI。

  1. cron で定期的に Twitter から RSS フィードをとってきて、Perl スクリプトで HTML フラグメントに変換。
  2. DiKicker が読み込む(サイドバーを含む)フッタファイルに挿入。

と簡単に実装してみた。機能的には概ね満足。

今後は L:~ や URL自動リンク化、キーワードの自動リンク化を適宜したい。


[ 11月9日全て ]

2008年3月13日 (木)

Flickr写真を自動的に Twitter アイコンにする このエントリーを含むはてなブックマーク

2週間ほど前にtwitterfeed で Flickr に写真をアップロードしたら自動的に Twitter にタイトルと URL をポストするようにしたのだが、これだと写ツみたいに画像そのものはポストされず今一歩なので、写真自体を自動的に Twitter アイコンアップロードするようにしてみた。

流れは以下:

  1. cron で定期的に FlickrRSS フィードをフェッチする (URI::Fetch + XML::RSS)。
  2. 新しい写真アップロードされていたら(最新の写真が変化していたら)、RSS フィード中のサムネイル画像 URL を抜き出して画像をダウンロードする (URI::Fetch)。
  3. 正方形に crop。それからころころ Twitter アイコンを変えると誰だかわからなくなるので、決まった画像 (今のところ自分の写真)を重ねる (ImageMagick / PerlMagick)。
  4. Twitterアップロードする(アップロードスクリプト)。

例えば今日 VQ1005 で撮影して Flickrアップロードした写真を自動的に加工させたものがコレ。

image:nDiki/2008/03/Twitter-icon-2008-03-13.jpg

なんか偽中継のような嘘臭さがあるけれど、まあだいたいアップロードした写真は自分が実際にその場にいたのだから、あながちでもないんじゃないか。


[ 3月13日全て ]

2008年8月5日 (火)

Twitter への書き込みを自動的に Skype ムードメッセージに設定する for Windows このエントリーを含むはてなブックマーク

半年ぐらい前に Skype for LinuxTwitter への書き込みを自動的に Skype ムードメッセージに設定するスクリプト(記事)を作って cron で 10分毎に更新するようにした。

Windows BOX 上 Skype を使っている時も同様にできるように、Skype4COM を使うバージョンも書いてみた。 D-Bus ではなく Skype4COM を使うようにすることと、Skype4COM にはシフト JIS の文字列を渡すようにすること以外はほとんど同じ。

Skype4COM の DLL を登録し、Skype が起動している状態で以下の Perl スクリプトを実行。

 #!/usr/bin/perl

 use strict;
 use warnings;
 use Win32::OLE;
 use URI::Fetch;
 use XML::RSS;
 use Date::Parse;
 use Encode;

 my $id = '自分の Twitter ID';

 my $time = time;
 my $fetch_response
   = URI::Fetch->fetch(
               "http://twitter.com/statuses/user_timeline/$id.rss?dummy=$time")
   or die URI::Fetch->errstr;
 my $rss = XML::RSS->new;
 $rss->parse($fetch_response->content);
 die 'no items' if @{$rss->{items}} == 0;
 my $item = $rss->{items}->[0];
 my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
   = localtime(str2time($item->{pubDate}));
 my $title = $item->{title};

 my $mood
   = sprintf("$title [%02d/%02d %02d:%02d]", $mon + 1, $mday, $hour, $min);

 $mood = Encode::encode('shiftjis', $mood);

 my $skype = Win32::OLE->new('Skype4COM.Skype');
 $skype->Client->Start unless $skype->Client->IsRunning;
 my $profile = $skype->CurrentUserProfile;
 $profile->{MoodText} = $mood;

インストール済みだった ActivePerl 5.8.8.822 で動作を確認(ちなみに現時点での最新は ActivePerl 5.10.0.1003)。なお URI::FetchXML::RSS、Date::Parse(TimeDate) は標準では入っていないので PPM パッケージインストール

タスク スケジューラで10分毎に上記のスクリプトを wperl.exe で実行するように設定。 これで Windows 上でもさえずりをムードメッセージに設定できるようになった。


[ 8月5日全て ]

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 0.02403s / load averages: 0.11, 0.16, 0.11
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)