Plagger

PlaggerLDR hack が動かなくなってた

IE7での動作の改善を行いました|Live Dwango Reader 開発日誌 これで LDR 側の js が変わったせいか? hackldrapi.user.js の 102行目、w.after_init.add(init); がエラーになる。patch書いた。 --- hackldrapi.user.js (revision 2043) +++ hackldrapi.user…

Encode.pm が古いと Filter::Regexp でコケる

ひさしぶり。 Perl-5.8.2 (Vine Linux 3.2) と Encode.pm ($Encode::VERSION 1.9801) で Filter::Regexp を使おうとしたら、 Too many arguments for Encode::decode_utf8 at /home/fujiwara/devel/plagger/lib/Plagger/Plugin/Filter/Regexp.pm line 20, ne…

Subscription::LivedoorReader でコケると悲しい

出社して、さて前夜から溜った feed を読もうかな、と Plagger を走らせて。 未読 entry が 500 ほど溜った状態で Can't use string ("500 Server closed connection wit") as a HASH ref while "strict refs" in use at /home/fujiwara/devel/plagger/lib/P…

Filter::Eratosthenes

LLRing の締め切りは過ぎちゃったけど。Filter::Eratosthenes. entry.body に含まれる素数以外の数値を削除 (又は config で指定された文字列に置換) するフィルタ。誰かネタにしてたような…… package Plagger::Plugin::Filter::Eratosthenes; use strict; u…

CustomFeed::POP3 UIDL 対応ほか

CustomFeed::POP3 は、サーバにあるメールを全部ダウンロードして処理を行う。読んで消す場合は問題ないけど、サーバに残したい場合に困る。 全部取得してから Rule::Fresh, Rule::Deduped で対処してもいいけど、UIDL を見て余計な取得が起きないようにした…

rewrite_config bug

Changeset 1000 を目前にして睨みあいが続いている今日この頃ですが。 Plagger.pm の rewite_config で、書き換え前の値が正規表現のメタキャラクタを含んでいると誤動作するので patch. \Q \E で括るだけ。 --- lib/Plagger.pm (リビジョン 999) +++ lib/Pl…

Publish::AtomAPI

ひさしぶりに Plagger。XML::Atom::Client を使って、AtomAPI で entry を post する。既にあるかと思ったのだけど、まだないよね? (中身は Publish::HatenaBookmark ほぼそのまんま) しかしこれ、集めてきた entry を post しまくるわけだが…… SPAM blog 作…

hobbit再び

Hobbit / BigBrother の bb2.html を読むネタ。 http://subtech.g.hatena.ne.jp/miyagawa/20060611/1149963082 を読んで、CustomFeed を作らなくても何とかなりそうだったので。 # handle する手がかりが bb2.html という URL のみ、というのはちょっとアレ…

Filter-EntryFullText/sixapart.pl

<meta name="generator"> が typepad / Movable Type のときだけ動くようになっている。他の sixapart-standard な HTML にも適用したいなあ。 [追記] r930で取り入れられました。 sub handle { my($self, $args) = @_; - $args->{content} =~ m!<meta name="generator" content="(?:http://www\.typepad\.com/|Movable Type.*?)" />!; + return 1 if $args->{content} …</meta></meta>

Rule::Deduped::DBIC

エントリの重複チェックを行う Rule::Deduped のサブクラス。Store::DBIC で保存した entry から検索するもの。 Store::DBIC を愛用しているので、僭越ながら書いてみました。 - module: Filter::Rule rule: module: Deduped engine: DBIC - module: Store::…

slashdot.jp で EntryFullText が失敗するように

突然なんで? と思ったら… Firefox の Cookie を有効にしていた ログインして、ライトモードで読んでいた ため。ライトモードと普通のモードは HTML が違う、というオチ。 しかもライトモードだと切り出すヒントになるようなマークアップがないな… <H2>業界共通の</h2>…

to_plain_object 再考

もうちょっと整理。 Plagger::Thing に、以下のようにする。 use Scalar::Util qw( blessed ); sub _to_plain { my $val = shift; blessed $val && $val->can('to_plain_object') ? $val->to_plain_object : $val; } sub to_plain_object { my $self = shift…

Publish::JSON との関連で

miyagawaさんと先週ちょっと話してそのままになってた。 やはり、単に Plagger::Feed を丸ごと Dump するだけだと余計なオブジェクトが入ったりして、あまり嬉しくない。Feed, Entry, Enclosure あたりが to_plain_object のようなメソッドを実装して、bless…

CustomFeed::Mork頓挫

先週からほったらかしのネタ。 File::Mork で history.dat を読んで CustomFeed にする、というものだが。title のデコードがわからん。 例えば "YouTube - スプー、襲来 [SPOO ATTACK]" というタイトル。 Y$00o$00u$00T$00u$00b$00e$00 $00-$00 $00$B90$D70…

Schema::Pg 作りたい

やっぱりちゃんと Schema::Pg を作ろうと思い立ち、作業してみたらちょっと悩む。Schema/SQLite/*.pm の belongs_to, has_many で __PACKAGE__->belongs_to( feed => 'Plagger::Schema::SQLite::Feed' );こんな風に hard code してあるところはどうしよう? …

PlaggerLDRのバックエンドをPostgreSQLに

なんとなく PostgreSQL にしたくなった。 Schema::Pg を作る必要があるか? と思ったのだけど、SQLite のそのまんまでいける。 ただ entry.date が timestamp 型でないのが少々気持ち悪くはあるが。 $ createdb -E UTF_8 plagger $ echo .schema | sqlite3 pl…

Filter::YouTube

cl.pocari.org - YouTube でタグによる RSS フィードを取得するには YouTube から直接 RSS が取れるのか。 で、実際にPlaggerで取ってみたら entry->icon がなくて悲しかったので Filter を。[追記] Rev.849 で Aggregator::Simple が Media RSS から thumbn…

CustomFeed::YouTube

サムネイル画像の URL が変わったらしく、CustomFeed::YouTube で取れなくなっていたので patch. @@ -63,7 +63,7 @@ $title_flag = 0; } }; - m!<img src="(http://static\d+.youtube.com/[^">]+/1.jpg)" class="vimgSm" />! + m!<img src="(http://[\w-]*static\d+(.[\w-]+)?\.youtube.com/[^">]+/1.jpg)" class="vimgSm" />! and $data->{image}->{url}…

Hatena-TubeをPlaggerで - GM作った

index.html の書き換え云々、の部分は GM でやってしまえ。ということで。先頭の var base = の部分はご自分の環境に合わせて変えてください。 ただ、Jemplate.js (0.18に付属のもの) に以下の patch を当てないとループを回ってくれない。"No object to ite…

Hatena-TubeをPlaggerで

http://www.fladdict.net/app/hatenatube/ Hatena-Tube 面白い。 願わくば、データを JSON で扱ってくれたりすると「それPlaggerで(ry」ということになって、PlaggerLDR のような面白いことができるんだけど……ということで、 Plagger で Feed から JSON をつ…

CustomFeed::Hobbit & EntryFullText

http://d.hatena.ne.jp/sfujiwara/20060518/1147979612 EntryFullText でレポートページも取ってくる。assets/plugins/Filter-EntryFullText/hobbit.pl sub handle { my($self, $args) = @_; $args->{entry}->permalink =~ m!bb-histlog\.sh!; } sub extract…

CustomFeed::Hobbit

Hobbit / Big Brother のイベントサマリー画面(bb2.html) を読む Feed。サーバ監視のお供に。 status red はメールが飛んでくるからすぐ分かるのだけど、status yellow (軽微な障害) は見落としがちなので。 一応、以下の3つで動作確認。 BB-1.9c : 会社の H…

Filter::Mork

Mozilla/Firefox の history.dat(履歴を保存している) を読む File::Mork というモジュールが CPAN にあるので、それを使って…… package Plagger::Plugin::Filter::Mork; use strict; use base qw( Plagger::Plugin ); use File::Mork; sub register { my($s…

Aggregator::SimpleでBASIC認証付きのfeedを読みたいのだけど

Plagger::UserAgent は LWP::UserAgent を継承しているので、credentials を config で定義できればよさそう。 しかし、いろんな Plugin で Plagger::UserAgent->new() してるようだ。 どうやって設定したらいいのかね。Mozilla/Firefox の signons.txt の中…

Plaggerの起床をコントロールしたい(?)

会社の Linux マシンで Plagger を使っていて、Subscription::LivedoorReader を mark_read: 1 にしている。 cron で 5分ごとに起動しているのだけど、そのまんまマシンを落とさずに帰ると、自宅から LDR が読めない。(Plagger が既読に設定しちゃうから)退…

GMなしで Plagger with LDR

http://subtech.g.hatena.ne.jp/miyagawa/20060509/1147150987 これはすごい。社内の (Internetに出せない) Feed も LivedoorReader でさくさく読める。 Greasemonkey なしで使うためにこんな手段を講じてみた。要は http://reader.livedoor.com/api/(all|su…