これでFilterも作りやすくなるのかな...
例えば、はてなブックマークのフィードからShibuya.pmタグが付いてる物のOPMLを作るとか?(自身無さげ)
でもこれ、MIMEパターンをconfig.yamlに上手くめり込ませる方法ってないのかな...
指定する場合、「このURLに対しては変則的なxxxなMIMEで取りたい」って使いたいんだよね。
Index: lib/Plagger/Plugin/Subscription/Feed.pm
===================================================================
--- lib/Plagger/Plugin/Subscription/Feed.pm (revision 1959)
+++ lib/Plagger/Plugin/Subscription/Feed.pm (working copy)
@@ -17,7 +17,6 @@
sub load {
my ( $self, $context ) = @_;
- # TODO: Auto-Discovery, XML::Liberal
my $uri = URI->new( $self->conf->{url} )
or $context->error("config 'url' is missing");
@@ -30,6 +29,20 @@
my $content = Plagger::Util::load_uri($uri);
my $feed = eval { Plagger::FeedParser->parse(\$content) };
+ if unless($feed) {
+ use HTML::TokeParser;
+ my $parser = HTML::TokeParser->new(\$content);
+ while (my $token = $parser->get_tag("link")) {
+ my $attr = $token->[1];
+ if ($attr->{rel} eq 'alternate'
+ && ($attr->{type} eq 'application/rss+xml'
+ or $attr->{type} eq 'application/atom+xml') {
+ $uri = $attr->{href};
+ $feed = eval { Plagger::FeedParser->parse(\$content) };
+ last;
+ }
+ }
+ }
unless ($feed) {
$context->log( error => "Error loading feed $uri: $@" );
return;
- Added support for 'package' keyword
- Added support for multi-line subroutine, package, and constant definitions
- Added support for optional subroutine declarations
- Added support for formats
- Ignore comments mixed into definitions and declarations
- Fixed detecting labels with whitespace after label name
- Fixed misidentification of fully qualified function calls as labels
これ凄いす。もう朝からお腹いっぱいです。
さっそくWin32版試してみました。
改行されたメソッドにもジャンプ出来るし、余計なコメントにもヒットしないし、使いやすいです。
vimで開発する方のpluginフォルダには必ずと言って良いほど入っている
taglist.vimを使うとパッケージ名称も一覧されます。
パッケージやサブルーチンがキレイに一覧されます。
さらに今回「package」に対応したので、ちょっと時間は掛かりますが
C:\Perl\site\lib>ctags -R -h ".pm"
こんな事して...
set tags=./tags,tags,../tags,c:/perl/site/lib/tags
こんな事しておくと...
こんな状態でビジュアル選択しておいて、"C-]"を押す事で
こんな感じにタグジャンプします。ウマーーー
複数含むモジュールだと、taglist.vimのTagListには複数のpackageが表示されます。
すばらしす...
こういう使い方もあるね。
で、どうする...って訳でもないけど
※そういうの、「使い道ない」っていうんだよね。そうだよね。
#!/usr/bin/perl
use strict;
use warnings;
use Web::Scraper;
use URI;
use YAML;
my $airlines_accident_scraper = scraper {
process '//div[@class="entry-content"]//table/tr',
'airlines[]' => scraper {
process '//td[1]', title => 'TEXT';
process '//td[2]', last_accident => 'TEXT';
process '//td[3]', flight_count => 'TEXT';
process '//td[4]', death_accident => 'TEXT';
process '//td[5]', death_rate => 'TEXT';
process '//td[6]', accident_incidence => 'TEXT';
process '//td[7]', total_rank => 'TEXT';
};
result 'airlines';
};
my $list = $airlines_accident_scraper->scrape(URI->new('http://www.manji.com/jp/2007/08/post_22.html'));
use YAML;
warn Dump $list;
リストは、
マスコミが報じない危険な航空会社リストから拝借。
余談ですが...
Web::Scraper 0.16あたりから、@参照するとstringでなく、URIか返ってくるようになってるので、「認証付きのページで@srcを拾い上げて、認証無しでは参照出来ない画像を落とす」なんて事に使えるようになったみたいです。