View
4.660
Download
0
Category
Preview:
DESCRIPTION
at XML developers' day 2006
Citation preview
Plaggerthe duct tape of the Web
Tatsuhiko Miyagawa miyagawa@gmail.com
Six Apart, Ltd. / Shibuya Perl MongersXML Developers' Day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
IRC#plagger-ja
chat.freenode.net(iso-2022-jp)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
アウェイっぽいので自己紹介
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko Miyagawa
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
http://www.vox.com/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
What is Plagger?
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
PluggableRSS/Atom
Aggregator
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Why Pluggable?
Just for a feed aggregation?
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
History
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
2002 Apr.baseball2rss
http://search.cpan.org/dist/WWW-Baseball-NPB/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
2003 Oct.rss2javascript
http://blog.bulknews.net/cookbook/blosxom/rss/rss2js.html
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
2004 Sep.bloglines2ipod
http://bulknews.net/lib/utils/bloglines2ipod/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
2004 Oct.rss2audiobook
http://bulknews.net/lib/utils/rss2audiobook/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
2005 Aug.bloglines2gmail
http://svn.bulknews.net/repos/public/bloglines2email/trunk/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
#!/usr/bin/perluse strict;use warnings;use LWP::UserAgent;use XML::RSS;
my $url = "http://example.com/rss.xml";my $agent = LWP::UserAgent->new;my $xml = $agent->get($url)->content;my $rss = XML::RSS->new; $rss->parse($xml);
for my $item (@{$rss->items}) { # do something with $item}
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
#!/usr/bin/perluse strict;use warnings;use LWP::UserAgent;use XML::RSS;
my $url = "http://example.com/rss.xml";my $agent = LWP::UserAgent->new;my $xml = $agent->get($url)->content;my $rss = XML::RSS->new; $rss->parse($xml);
for my $item (@{$rss->items}) { # do something with $item}
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
"HTTP リクエストがエラーになったら ?"
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
#!/usr/bin/perluse strict;use warnings;use LWP::UserAgent;use XML::RSS;
my $url = "http://example.com/rss.xml";my $agent = LWP::UserAgent->new;my $res = $agent->get($url);if ($res->is_error) { die "Bah." }my $xml = $res->content;my $rss = XML::RSS->new; $rss->parse($xml);
for my $item (@{$rss->items}) { # do something with $item}
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
"Atom も読みたい !"
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
#!/usr/bin/perluse strict;use warnings;use LWP::UserAgent;use XML::RSS;use XML::Atom::Feed;
my $url = "http://example.com/rss.xml";my $agent = LWP::UserAgent->new;my $res = $agent->get($url);if ($res->is_error) { die "Bah." }my $xml = $res->content;if ($res->content_type =~ /atom/) { my $feed = XML::Atom::Feed->new(\$xml);} else { my $rss = XML::RSS->new; $rss->parse($xml);}
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
If-Modified-Since で帯域節約したい!
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
#!/usr/bin/perluse strict;use warnings;use LWP::UserAgent;use XML::RSS;
my $url = "http://example.com/rss.xml";my $agent = LWP::UserAgent->new;my $local = cache_path_for($url);my $res = $agent->mirror($url, $local);if ($res->is_error) { die "Bah." }my $xml = $res->content;…
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
" 壊れたフィードもパースしたい! "
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Etc., etc.
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
他にも
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
rss2opml
http://aruntx.com/software/rss2opml/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
rss2pdf
http://rss2pdf.com/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
rss2atom
brian.wanamaker.com/mybicycle/2004/02/rss2atom.html
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
atom2rss
http://www.2rss.com/software.php?page=atom2rss
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
rss2ical
http://bura-bura.com/blog/archives/2004/06/22/rss2ical/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Bloglines2opml
http://mycvs.org/wp/wp-content/wp-transform.php
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
rss2gmail
http://www.cs.utexas.edu/~karu/gmailrss/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
rss2imap
http://rss2imap.sourceforge.jp/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
ebay2rss
http://www.2rss.com/software.php?page=ebay2rss
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
svn2rss
http://twiki.org/cgi-bin/view/Codev/Svn2rss
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
<any>2<any>
Where either of <any> is RSS|Atom|OPML
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
This is ridiculous.
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Different Languages,Different Bugs.No hackability
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
via http://www.atmarkit.co.jp/fnetwork/rensai/5minplagger/02.html
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
IRC, Eject, GrowlMSAgent, SSTP …
Filter Publish
StripRSSAdTruePermalinkEntryFullTextPipeThumbnailFindEnclosuresFetchEnclosureSpamAssassinRSSLiberalDateTimeURLBLResolveRelativeLink…
GmailDeliciousPDFMTFeedPlanetSpeech…
Notify
BloglinesConfigOPML, XOXOFile, DBI, FOAF …
Mixi, FrepaPOP3, iCaliTunes, AmazonYouTube …
Subscription
CustomFeed
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
IRC, Eject, GrowlMSAgent, SSTP …
Filter Publish
StripRSSAdTruePermalinkEntryFullTextPipeThumbnailFindEnclosuresFetchEnclosureSpamAssassinRSSLiberalDateTimeURLBLResolveRelativeLink…
GmailDeliciousPDFMTFeedPlanetSpeech…
Notify
BloglinesConfigOPML, XOXOFile, DBI, FOAF …
Mixi, FrepaPOP3, iCaliTunes, AmazonYouTube …
Subscription
CustomFeed
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
IRC, Eject, GrowlMSAgent, SSTP …
Filter Publish
StripRSSAdTruePermalinkEntryFullTextPipeThumbnailFindEnclosuresFetchEnclosureSpamAssassinRSSLiberalDateTimeURLBLResolveRelativeLink…
GmailDeliciousPDFMTFeedPlanetSpeech…
Notify
BloglinesConfigOPML, XOXOFile, DBI, FOAF …
Mixi, FrepaPOP3, iCaliTunes, AmazonYouTube …
Subscription
CustomFeed
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
IRC, Eject, GrowlMSAgent, SSTP …
Filter Publish
StripRSSAdTruePermalinkEntryFullTextPipeThumbnailFindEnclosuresFetchEnclosureSpamAssassinRSSLiberalDateTimeURLBLResolveRelativeLink…
GmailDeliciousPDFMTFeedPlanetSpeech…
Notify
BloglinesConfigOPML, XOXOFile, DBI, FOAF …
Mixi, FrepaPOP3, iCaliTunes, AmazonYouTube …
Subscription
CustomFeed
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Just like UNIX pipe
Subscribe OPML | StripRSSAd | ResolveRelativeLink \| Publish Feed --type=Atom
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
I believe RSS has the potential to be the “UNIX pipe of the internet” …
Ray OzzieCTO of Microsoft
http://rayozzie.spaces.live.com/blog/cns!FB3017FBB9B2E142!285.entry
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
"the Unix shell for Web 2.0"
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
組み合わせの数
{CustomFeed,Subscription}/*.pm: 35
{Publish,Notify}/*.pm: 37
35 * 37 = 1295
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plagger Core features
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
RSS/AtomAuto-Discovery
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Support Feed formatsRSS 0.91 to Atom 1.0(XML::Feed + hacks)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Support parsingBroken feeds(XML::Liberal)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
HTTP optimizationsIf-Modified-Since /
gzip(URI::Fetch)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Podcast / VideocastSupport
(RSS 2.0 & Atom 1.0)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
PhotocastMedia RSS
iTunes RSS*
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
非同期ダウンロードcURL, wget,
HTTP::Parallel & HTTP::Async*
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
完全な国際化Unicode & Timezone
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Access tobrowser Cookies
IE, Safari, Firefox and w3m
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Screen-scrapingVia CutomFeed::*
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Stackable Plugins
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Rule-basedDispatch of Plugins
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plagger のインストール
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
省略http://plagger.org/trac/wiki/PlaggerQuickStart
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plaggerクイックチュートリアル
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Email クライアントでRSS フィードを読みたい!(Gmail, Thunderbird)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
rss2email.yaml
plugins: - module: Subscription::Config config: feed: - http://bulknews.vox.com/library/posts/atom.xml - http://bulknews.typepad.com/blog/ - module: Publish::Gmail config: mailto: miyagawa@gmail.com
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
RSS in Gmail
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
HTML + Images
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Feed Image (Logo / Buddy Icon)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Search
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Auto grouping (“Conversations”)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Diff
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
オフライン(飛行機)でもフィードを読みたい!
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
rss2email.yaml
plugins: - module: Subscription::Config config: feed: - http://bulknews.vox.com/library/posts/atom.xml - http://bulknews.typepad.com/blog/ - module: Filter::FindEnclosures - module: Filter::FetchEnclosure config: dir: /tmp - module: Publish::Gmail config: mailto: miyagawa@gmail.com attach_enclosures: 1
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Offline Mode
POP3 + Thunderbird
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
" フィードのリストをYAML で管理するのメンドウ "
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
opml2email.yamlplugins: - module: Subscription::OPML config: url: http://example.com/subscription.opml - module: Publish::Gmail config: mailto: miyagawa@gmail.com
# subscription.opml<?xml version="1.0"?><opml><outline title="Subscriptions"> <outline title="miyagawa" type="rss" xmlUrl="http://bulknews.typepad.com/blog/atom.xml" /> <outline title="miyagawa on Vox" type="rss" htmlUrl="http://bulknews.vox.com/" /></outline></opml>
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
"OPML を手動で編集するのはテラダルス "
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
filesub2email.yaml
plugins: - module: Subscription::File config: url: file:///path/to/subscription.txt - module: Publish::Gmail config: mailto: miyagawa@gmail.com
> cat subscription.txthttp://bulknews.typepad.com/blog/atom.xmlhttp://bulknews.vox.com/>
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
"1000 フィード以上読んでると自分のマシンで読むのは帯域のムダ。 Bloglines にクロールさせたい。 "
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
bloglines2email.yaml
plugins: - module: Subscription::Bloglines config: username: YOU@example.com password: blahblahblah - module: Publish::Gmail config: mailto: miyagawa@gmail.com
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
" それ Livedoor Reader で "
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
bloglines2email.yaml
plugins: - module: Subscription::LivedoorReader config: username: YOU@example.com password: blahblahblah - module: Publish::Gmail config: mailto: miyagawa@gmail.com
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
"Gmail / Thunderbird からdel.icio.us にブクマしたい !"
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
bloglines2email.yaml
plugins: - module: Subscription::Bloglines config: username: YOU@example.com password: blahblahblah
- module: Widget::Simple config: widget: delicious
- module: Publish::Gmail config: mailto: miyagawa@gmail.com
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
" それはてなブックマークで "
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
bloglines2email.yaml
plugins: - module: Subscription::Bloglines config: username: YOU@example.com password: blahblahblah
- module: Widget::Simple config: widget: hatena_bookmark_users
- module: Publish::Gmail config: mailto: miyagawa@gmail.com
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
"RSS 広告ウザス "
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
bloglines2email.yaml
plugins: - module: Subscription::Bloglines config: username: YOU@example.com password: blahblahblah
- module: Widget::Simple config: widget: delicious
- module: Filter::StripRSSAd
- module: Publish::Gmail config: mailto: miyagawa@gmail.com
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/23 XML Developers' Day #92006/11/23 XML Developers' Day #9
Quick tourFor more plugins
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plugin phases (types)
SubscriptionAggregatorCustomFeed
FilterPublishSearchNotify
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plugin phases (types)
SubscriptionAggregatorCustomFeed
FilterPublishSearchNotify
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Subscription
load subscriptions(list the feeds/URLs to aggregate)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Subscription::Config - module: Subscription::Config config: feed: - http://www.yapcchicago.org/feed/ - http://tokyo.yapcasia.org/blog/
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
- module: Subscription::OPML config: url: http://www.example.com/subs.opml
# subs.opml <opml> <outline xmlUrl="http://www.yapcchicago.org/feed/" /> <outline htmlUrl="http://tokyo.yapcasia.org/blog/" /> </opml>
Subscription::OPML
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
- module: Subscription::File config: url: file:///path/to/subscription.txt
% cat subscription.txt http://www.yapcchicago.org/feed/ http://tokyo.yapcasia.org/blog/ %
Subscription::File
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Subscription::XOXO - module: Subscription::XOXO config: url: http://www.example.com/subscription.html
# subscription.html <ul class="xoxo"> <li><a href="http://www.yapcchicago.org/feed/">YAPC::NA</a></li> <li><a href="http://tokyo.yapcasia.org/blog/">YAPC::NA</a></li> </ul>
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Subscription::Bookmarks
Read bookmarks file of IE, Firefox and Safari
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plugin phases (types)
SubscriptionAggregatorCustomFeed
FilterPublishSearchNotify
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Filter
Normalize / Repair feed metadataUpgrade feed content
Filter feed content using text filtersInvoke some action on entries
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Filter::EntryFullText
本文なしのフィードをアップグレード個別 HTML を取得して正規表現 / XPath
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Filter::TruePermalink
リダイレクト URL などを Canonicalize(e.g. http://…/go.php?url=….)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Filter::FindEnclosures
コンテンツからエンクロージャを抽出<a href="http://…./foo.mp3">episode
#1</a>
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plugin phases (types)
SubscriptionAggregatorCustomFeed
FilterPublishSearchNotify
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Publish
Publish aggregated entry to online servicesreBlogging
Convert feeds to other formats
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Publish::Feed
Republish feed in RSS/AtomGood to use with scrapers
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Publish::MT
Reblog entries using MT XML-RPC
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Publish::MTWidget
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Publish::Email
text/plain, multipart/alternativePluggable email protocols
(SMTP, SMTP Auth, IMAP, Maildir …)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Publish::iCal
Publish iCal feeds out of RSS/Atom
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Publish::Excel
仕事の合間に !
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plugin phases (types)
SubscriptionAggregatorCustomFeed
FilterPublishSearchNotify
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Search
Index aggregated entries on search engines
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Search::Spotlight
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Search::Estraier
Uses HyperEstraier XMLRPC node API
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Search::Lucene*
Use Lucene WebService API (OpenSearch 1.1 and Atom)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plugin phases (types)
SubscriptionAggregatorCustomFeed
FilterPublishSearchNotify
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Notify
Notify feed updates in various ways
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Notify::Growl
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Notify::Balloon
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Notify::MSAgent
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Notify::Eject
Supports: Windows, Linux, FreeBSD and Mac OSX!
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Notify::Pizza
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Notify::Pizza
Now it does Sushi too!
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plagger に対する誤解
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
それ Plagger でできるよ
それプラズマで説明できるよ
http://d.hatena.ne.jp/sugarcut/20061117/p1
それ Pla 脳
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
何でもできる
… わけじゃない
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plagger is a"Feed" aggregator
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plagger::Subscription
Plagger::Feed
authoridlinktitletagsurlentries
Plagger::Feed
authoridlinktitletagsurlentries
Plagger::Feed
authoridlinktitletagsurlentries
Plagger::Entry
authoridlinkpermalinktitletagsenclosures
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
ピザ Pla の意義
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
"the Unix shell for Web 2.0"
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
"RSS is the Standard IO for the Web"
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
"RSS is the Standard IO for the Web"
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Feed formats
RSS 0.91RSS 2.0RSS1.0 / RDF
Atom 1.0
JSON
iCal
OPML
XOXOXBEL
Sitemaps
attention.xml
Amazon API
Google APIOpenSearch
AtomPP
GData
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
rvw:
Enclosures
Feed Vocabulary / Extensions
Photocast
iTunes RSSMedia RSS
Dublin Core
FOAF
microformats
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plagger = The duct tape of the web.
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Example:Location metadata
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
N 37.7782 W 122.3973
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
GeoRSS
<georss:point>37.7782 -122.3973</georss:point>
<georss:where> <gml:Point> <gml:pos>37.7782 -122.3973</gml:pos> </gml:Point></georss:where>
xmlns:georss="http://www.georss.org/georss"xmlns:gml="http://www.opengis.net/gml"
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
RDF geo vocabulary
<foaf:based_near> <geo:Point> <geo:lat>35.678</geo:lat> <geo:long>139.770</geo:long> </geo:Point></foaf:based_near>
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Flickr geo tag
<media:category scheme="urn:flickr:tags">geo:lat=37.7782 geo:lon=-122.3973</media:category>
xmlns:media="http://search.yahoo.com/mrss/"
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
GeoURL
<meta name="ICBM" content="37.7782, -122.3973" />
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
geo microformats
<div class="geo"> <span class="latitude">37.7782</span> <span class="longitude">-122.3973</span></div>
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Links to Google Maps
<a href="http://maps.google.com/maps?q=37.7782,-122.3973&z=16">Link to Google Maps</a>
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Eznavi mail
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Photo EXIF
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
adr
<div class="adr"> <div class="street-address">548 4th St.</div> <span class="locality">San Francisco</span>, <span class="region">CA</span> <span class="postal-code">94107</span> <div class="country-name">U.S.A.</div></div>
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
We don't careabout format diffs.
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
GeoRSS
<georss:point>37.7782 -122.3973</georss:point>
<georss:where> <gml:Point> <gml:pos>37.7782 -122.3973</gml:pos> </gml:Point></georss:where>
Namespace::GeoRSS
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
RDF geo vocabulary
<foaf:based_near> <geo:Point> <geo:lat>35.678</geo:lat> <geo:long>139.770</geo:long> </geo:Point></foaf:based_near>
Namespace::Geo
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Flickr geo tag
<media:category scheme="urn:flickr:tags">geo:lat=37.7782 geo:lon=-122.3973</media:category>
Filter::geotagged
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
GeoURL
<meta name="ICBM" content="37.7782, -122.3973" />
Filter::GeoURL
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
geo microformats
<div class="geo"> <span class="latitude">37.7782</span> <span class="longitude">-122.3973</span></div>
Filter::Microformats::geo
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Links to Google Maps
<a href="http://maps.google.com/maps?q=37.7782,-122.3973&z=16">Link to Google Maps</a>
Filter::ExtractMapsLinks
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Eznavi mail
Filter::ExtractMapsLinks
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Photo EXIF
Filter::FetchEnclosure +Filter::ExtractEXIF
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
adr
<div class="adr"> <div class="street-address">548 4th St.</div> <span class="locality">San Francisco</span>, <span class="region">CA</span> <span class="postal-code">94107</span> <div class="country-name">U.S.A.</div></div>
Filter::Microformats::adr +Filter::Geocoding::US
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Publish::KMLPublish::GoogleMaps
Publish::Feed(with geotags)
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Everything's donein plugins
= Clean & extensible.
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Plaggerdev. Status
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Version0.7.13
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Coming Soon …
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
iTunes RSS support
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Geo extensions
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Enclosure processors
ffmpeg, Sync::PSP, Sync::iPodVideo
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Pluggable summarizer
& text formatter
Lingua::EN::Summarize, Text::Original, HTML::WikiConverter, HTML::FormatText
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Rich Media metadata
ID3 tag in enclosuresLinks to imdb.com / amazon.com
hReview microformats
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Calendar Support
iCal parser & emitterhCalendar microformats.ics attached in emails
Sync::SyncML
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Email refactoring
text/plain, iso-2022-jp supportPluggable storage engines
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
http://plagger.org/
Planet, Mailing List, IRCBug Tracking, SVN repository
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
#plagger-ja on freenode
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Join Us!
Tatsuhiko MiyagawaTatsuhiko Miyagawa 2006/11/24 XML developers' day #92006/11/24 XML developers' day #9
Thank you
Questions?
Recommended