0
Plagger – RSS/Atom remixing platform Tatsuhiko Miyagawa   [email_address] Six Apart, Ltd. / Shibuya Perl Mongers YAPC::NA ...
<ul><li>What is Plagger? </li></ul>
<ul><li>Pl uggable </li></ul><ul><li>RSS/Atom </li></ul><ul><li>Agg regato r </li></ul>
<ul><li>Pl atform for </li></ul><ul><li>Aggr egation </li></ul><ul><li>/ remixing </li></ul>
<ul><li>Whatever </li></ul>
<ul><li>Speaking of </li></ul><ul><li>RSS/Atom aggregator </li></ul>
<ul><li>Who here is </li></ul><ul><li>using Bloglines? </li></ul><ul><li>(or any other web-based aggregators) </li></ul>
<ul><li>Who here </li></ul><ul><li>thinks that it sucks? </li></ul>
<ul><li>Plagger is for you. </li></ul><ul><li>see Bloglines2gmail </li></ul>
<ul><li>Who here has </li></ul><ul><li>ever written a tool </li></ul><ul><li>using XML::RSS? </li></ul>
<ul><li>Welcome aboard. </li></ul><ul><li>There's a chance that you can transform </li></ul><ul><li>your script into a Pla...
<ul><li>Why Pluggable? </li></ul><ul><li>Just  for a feed aggregation? </li></ul>
<ul><li>2002 Apr. </li></ul><ul><li>baseball2rss </li></ul><ul><li>http://search.cpan.org/dist/WWW-Baseball-NPB/ </li></ul>
<ul><li>2003 Oct. </li></ul><ul><li>rss2javascript </li></ul><ul><li>http://blog.bulknews.net/cookbook/blosxom/rss/rss2js....
<ul><li>2004 Sep. </li></ul><ul><li>bloglines2ipod </li></ul><ul><li>http://bulknews.net/lib/utils/bloglines2ipod/ </li></ul>
<ul><li>2004 Oct. </li></ul><ul><li>rss2audiobook </li></ul><ul><li>http://bulknews.net/lib/utils/rss2audiobook/ </li></ul>
<ul><li>2005 Aug. </li></ul><ul><li>bloglines2gmail </li></ul><ul><li>http://svn.bulknews.net/repos/public/bloglines2email...
<ul><li>Looks like </li></ul><ul><li>It's not only me </li></ul><ul><li>doing these things. </li></ul>
<ul><li>rss2opml </li></ul><ul><li>http://aruntx.com/software/rss2opml/ </li></ul>
<ul><li>rss2pdf </li></ul><ul><li>http://rss2pdf.com/ </li></ul>
<ul><li>rss2atom </li></ul><ul><li>brian.wanamaker.com/mybicycle/2004/02/rss2atom.html </li></ul>
<ul><li>atom2rss </li></ul><ul><li>http://www.2rss.com/software.php?page=atom2rss </li></ul>
<ul><li>rss2ical </li></ul><ul><li>http://bura-bura.com/blog/archives/2004/06/22/rss2ical/ </li></ul>
<ul><li>Bloglines2opml </li></ul><ul><li>http://mycvs.org/wp/wp-content/wp-transform.php </li></ul>
<ul><li>rss2gmail </li></ul><ul><li>http://www.cs.utexas.edu/~karu/gmailrss/ </li></ul>
<ul><li>rss2imap </li></ul><ul><li>http://rss2imap.sourceforge.jp/ </li></ul>
<ul><li>ebay2rss </li></ul><ul><li>http://www.2rss.com/software.php?page=ebay2rss </li></ul>
<ul><li>svn2rss </li></ul><ul><li>http://twiki.org/cgi-bin/view/Codev/Svn2rss </li></ul>
<ul><li><anything>2<anything> </li></ul>
<ul><li>Being sick of </li></ul><ul><li>writing the same code </li></ul><ul><li>again and again </li></ul>
<ul><li>Why not creating </li></ul><ul><li>A pluggable platform </li></ul><ul><li>Instead? </li></ul>
<ul><li>With reusable </li></ul><ul><li>Parsers / Emitters </li></ul><ul><li>/ Filters? </li></ul>
<ul><li>That's what </li></ul><ul><li>Plagger is. </li></ul>
IRC, Eject, Growl MSAgent, SSTP … Filter Publish StripRSSAd TruePermalink EntryFullText Pipe Thumbnail FindEnclosures Fetc...
IRC, Eject, Growl MSAgent, SSTP … Filter Publish StripRSSAd TruePermalink EntryFullText Pipe Thumbnail FindEnclosures Fetc...
IRC, Eject, Growl MSAgent, SSTP … Filter Publish StripRSSAd TruePermalink EntryFullText Pipe Thumbnail FindEnclosures Fetc...
IRC, Eject,  Growl MSAgent, SSTP … Filter Publish StripRSSAd TruePermalink EntryFullText Pipe Thumbnail FindEnclosures Fet...
<ul><li>Just like  </li></ul><ul><li>Lego™ Block </li></ul>
<ul><li>Create an app </li></ul><ul><li>With combo of </li></ul><ul><li>Plugins! </li></ul>
<ul><li>Example App #1 </li></ul><ul><li>Bloglines to Gmail </li></ul>
bloglines2gmail.yaml plugins: - module: Subscription::Bloglines config: username: you@example.com password: foobar mark_re...
<ul><li>Run it on crontab </li></ul><ul><li>% ./plagger –c bloglines2gmail.yaml </li></ul>
RSS in Gmail
HTML + Images
Feed Image (Logo / Buddy Icon)
Search
Auto grouping (“Conversations”)
Diff
Tips: Filter
Tips: is:unread
<ul><li>Example App #2 </li></ul><ul><li>RSS to ircbot </li></ul>
RSS bot in action <ul><li>#plagger on freenode </li></ul>
Config for RSS bot (1/3) plugins: - module: Subscription::Config config: feed: # Trac's feed for changesets  - http://plag...
Config for RSS bot (2/3) # I don't like to be notified of same items # more than once! - module: Filter::Rule rule: module...
Config for RSS bot (3/3) - module: Notify::IRC config: daemon_port: 9999 nickname: plaggerbot server_host: chat.freenode.n...
<ul><li>See more in </li></ul><ul><li>examples/irc.yaml </li></ul>
<ul><li>Example App #3 </li></ul><ul><li>Planet </li></ul>
<ul><li>http://planet.yapcchicago.org/ </li></ul>
planet-yapcna.yaml (1/4) plugins: - module: Subscription::Config config: feed: - http://yapcchicago.org/feed/ - http://use...
planet-yapcna.yaml (2/4) # Normalize feed title and permalinks - module: Filter::FeedBurnerPermalink - module: Filter::Tru...
planet-yapcna.yaml (3/4) # Create a smartfeed for all the entries merged - module: SmartFeed::All rule_op: AND rule: - mod...
planet-yapcna.yaml (4/4) # Generate nice XHTML out of the SmartFeed - module: Publish::Planet rule:  expression: $args->{f...
<ul><li>(I admit this Planet config is so clumsy </li></ul><ul><li>and I'll work on that to make it suck less.) </li></ul>
<ul><li>Example App #4 </li></ul><ul><li>YouTube downloader </li></ul>
youtube.yaml plugins: - module: Subscription::Config config: feed: - http://www.youtube.com/rss/tag/yapc.rss # discover re...
<ul><li>Coming soon … </li></ul><ul><li>Filter::ffmpeg, Sync::PSP, Sync::iPodVideo </li></ul>
<ul><li>Plagger  </li></ul><ul><li>Core features </li></ul>
<ul><li>RSS/Atom </li></ul><ul><li>Auto-Discovery </li></ul>
<ul><li>Support various </li></ul><ul><li>Feed formats </li></ul><ul><li>RSS 0.91 to Atom 1.0 </li></ul>
<ul><li>Support parsing </li></ul><ul><li>Broken XML feeds </li></ul><ul><li>(XML::Liberal) </li></ul>
<ul><li>Podcast / Videocast </li></ul><ul><li>Support </li></ul><ul><li>(RSS 2.0 & Atom 1.0) </li></ul>
<ul><li>Photocast </li></ul><ul><li>Media RSS </li></ul><ul><li>iTunes RSS* </li></ul>
<ul><li>Sane I18N impl. </li></ul><ul><li>Unicode & Timezone </li></ul>
<ul><li>Access to </li></ul><ul><li>browser's Cookies </li></ul><ul><li>IE, Safari, Firefox and w3m </li></ul><ul><li>Than...
<ul><li>Quick tour </li></ul><ul><li>On available plugins </li></ul>
Plugin phases (types) <ul><li>Subscription </li></ul><ul><li>Aggregator </li></ul><ul><li>CustomFeed </li></ul><ul><li>Fil...
<ul><li>Subscription </li></ul><ul><li>load subscriptions </li></ul><ul><li>(list the feeds/URLs to aggregate) </li></ul>
<ul><li>Subscription::Config </li></ul>- module: Subscription::Config config: feed: - http://www.yapcchicago.org/feed/ - h...
<ul><li>Subscription::OPML </li></ul>- module: Subscription::OPML config: url: http://www.example.com/subs.opml # subs.opm...
<ul><li>Subscription::File </li></ul>- module: Subscription::File config: url: file:///path/to/subscription.txt % cat subs...
<ul><li>Subscription::XOXO </li></ul>- module: Subscription::XOXO config: url: http://www.example.com/subscription.html # ...
<ul><li>Subscription::Bookmarks </li></ul><ul><li>Read bookmarks file of IE, Firefox and Safari </li></ul>
<ul><li>Aggregator </li></ul><ul><li>Aggregate and parse the feeds </li></ul><ul><li>listed in subscription(s) </li></ul>
<ul><li>Aggregator::Simple </li></ul><ul><li>The &quot;dumb&quot; aggregator </li></ul><ul><li>Using LWP and XML::Feed </l...
<ul><li>Aggregator::Xango </li></ul><ul><li>The &quot;fast&quot; aggregator using Xango.pm </li></ul><ul><li>the POE based...
<ul><li>CustomFeed </li></ul><ul><li>Feed formats other than RSS/Atom </li></ul><ul><li>Scrapers </li></ul>
<ul><li>CustomFeed::POP3 </li></ul><ul><li>Each email is a feed. </li></ul><ul><li>Attachments are enclosures. </li></ul>
<ul><li>CustomFeed::MySpace* </li></ul><ul><li>Your friends journal as feed </li></ul><ul><li>(* indicates it's not develo...
<ul><li>CustomFeed::FlickrSearch </li></ul><ul><li>Search results as feed </li></ul><ul><li>Each photo found is an entry <...
<ul><li>Filter </li></ul><ul><li>Normalize / Repair feed metadata </li></ul><ul><li>Upgrade feed content </li></ul><ul><li...
<ul><li>Filter::StripRSSAd </li></ul>Supports: Google AdSense, FeedBurner, Pheedo
<ul><li>Filter::EntryFullText </li></ul><ul><li>Upgrade content-less feed to fulltext feed </li></ul><ul><li>by fetching i...
<ul><li>Filter::TruePermalink </li></ul><ul><li>Resolves nasty redirection URL </li></ul><ul><li>to the &quot;true&quot; p...
<ul><li>Filter::FindEnclosures </li></ul><ul><li>Find enclosures from content body </li></ul><ul><li><a href=&quot;http://...
<ul><li>Filter::RSSLiberalDateTime </li></ul><ul><li>Deal with broken rss datetime format </li></ul><ul><li><pubDate>2006/...
<ul><li>Publish </li></ul><ul><li>Publish aggregated entry to online services </li></ul><ul><li>Convert feeds to other for...
<ul><li>Publish::Feed </li></ul><ul><li>Republish feed in RSS/Atom </li></ul><ul><li>Good to use with scrapers </li></ul>
<ul><li>Publish::Delicious </li></ul><ul><li>Auto-post entries to your del.icio.us </li></ul><ul><li>using its REST API </...
<ul><li>Publish::iCal* </li></ul><ul><li>Publish iCal feeds out of RSS/Atom </li></ul>
<ul><li>Publish::MTWidget </li></ul>
<ul><li>Publish::Excel </li></ul>If your boss is unhappy your reading blogs on browsers.
<ul><li>Search </li></ul><ul><li>Index aggregated entries on search engines </li></ul>
<ul><li>Search::Spotlight </li></ul>
<ul><li>Search::Estraier </li></ul><ul><li>Uses HyperEstraier XMLRPC node API </li></ul>
<ul><li>Notify </li></ul><ul><li>Notify feed updates in various ways </li></ul>
<ul><li>Notify::Campfire </li></ul>
<ul><li>Notify::Growl </li></ul>
<ul><li>Notify::MSAgent </li></ul>
Notify::Eject Supports: Windows, Linux, FreeBSD and Mac OSX!
<ul><li>So far, </li></ul><ul><li>Plagger rocks   </li></ul>
<ul><li>Actually, </li></ul><ul><li>Plagger sucks   </li></ul>
<ul><li>No good </li></ul><ul><li>Documentation </li></ul><ul><li>(Not a big deal if you can read Perl code) </li></ul>
<ul><li>Horrible lots of  </li></ul><ul><li>CPAN deps. </li></ul>% grep requires Makefile.PL | wc –l 25 % grep recommends ...
<ul><li>cpan Plagger </li></ul><ul><li>Doesn't work (partially) </li></ul>
<ul><li>144 open tickets </li></ul><ul><li>On Trac </li></ul><ul><li>http://plagger.org/trac/query </li></ul><ul><li>(Not ...
<ul><li>The way it </li></ul><ul><li>de-dupes entries </li></ul><ul><li>is clumsy </li></ul>
<ul><li>No database </li></ul><ul><li>Backend (yet) </li></ul><ul><li>Planned to be in core of 0.8 </li></ul>
<ul><li>Plugin invocations </li></ul><ul><li>Can be rule-based </li></ul><ul><li>but undocumented </li></ul>
<ul><li>Different Plugin functionalities </li></ul><ul><li>On the same namespaces </li></ul><ul><li>(CustomFeed, Filter, P...
<ul><li>Publish::Gmail </li></ul><ul><li>was badly named </li></ul>
<ul><li>I want you </li></ul><ul><li>To fix & improve it. </li></ul>
<ul><li>Plagger </li></ul><ul><li>dev. Status </li></ul>
<ul><li>Version </li></ul><ul><li>0.7.3 </li></ul>
<ul><li>Coming Soon … </li></ul>
<ul><li>iTunes RSS support </li></ul>
<ul><li>Enclosure processors </li></ul><ul><li>ffmpeg, Sync::PSP, Sync::iPodVideo </li></ul>
<ul><li>Rich Media metadata </li></ul><ul><li>ID3 tag in enclosures </li></ul><ul><li>Links to imdb.com / amazon.com </li>...
<ul><li>Database Storage </li></ul><ul><li>& Server API </li></ul><ul><li>branches/plagger-server </li></ul>
<ul><li>Calendar Support </li></ul><ul><li>iCal parser & emitter </li></ul><ul><li>hCalendar microformats </li></ul><ul><l...
<ul><li>How's the dev </li></ul><ul><li>going on? </li></ul>
<ul><li>31 authors </li></ul><ul><li>128 plugins </li></ul><ul><li>(most of them are from Japan) </li></ul>
<ul><li>Buzz in Japan </li></ul>
<ul><li>I am Happy </li></ul><ul><li>With &quot;the Buzz&quot; </li></ul>
<ul><li>I am !Happy </li></ul><ul><li>With &quot;In Japan&quot; </li></ul>
<ul><li>Help spreading </li></ul><ul><li>the words </li></ul>
<ul><li>Doc Contribution </li></ul><ul><li>Is highly welcome </li></ul>
<ul><li>http://plagger.org/ </li></ul><ul><li>Planet, Mailing List, IRC </li></ul><ul><li>Bug Tracking, SVN repository </l...
<ul><li>#plagger on freenode </li></ul>
<ul><li>Join Us! </li></ul>
<ul><li>Thank you </li></ul><ul><li>Questions? </li></ul>
Upcoming SlideShare
Loading in...5
×

Miyagawa

1,164

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,164
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Miyagawa"

  1. 1. Plagger – RSS/Atom remixing platform Tatsuhiko Miyagawa [email_address] Six Apart, Ltd. / Shibuya Perl Mongers YAPC::NA 2006 Chicago
  2. 2. <ul><li>What is Plagger? </li></ul>
  3. 3. <ul><li>Pl uggable </li></ul><ul><li>RSS/Atom </li></ul><ul><li>Agg regato r </li></ul>
  4. 4. <ul><li>Pl atform for </li></ul><ul><li>Aggr egation </li></ul><ul><li>/ remixing </li></ul>
  5. 5. <ul><li>Whatever </li></ul>
  6. 6. <ul><li>Speaking of </li></ul><ul><li>RSS/Atom aggregator </li></ul>
  7. 7. <ul><li>Who here is </li></ul><ul><li>using Bloglines? </li></ul><ul><li>(or any other web-based aggregators) </li></ul>
  8. 8. <ul><li>Who here </li></ul><ul><li>thinks that it sucks? </li></ul>
  9. 9. <ul><li>Plagger is for you. </li></ul><ul><li>see Bloglines2gmail </li></ul>
  10. 10. <ul><li>Who here has </li></ul><ul><li>ever written a tool </li></ul><ul><li>using XML::RSS? </li></ul>
  11. 11. <ul><li>Welcome aboard. </li></ul><ul><li>There's a chance that you can transform </li></ul><ul><li>your script into a Plagger plugin. </li></ul><ul><li>And I can give you a svn commit bit! </li></ul>
  12. 12. <ul><li>Why Pluggable? </li></ul><ul><li>Just for a feed aggregation? </li></ul>
  13. 13. <ul><li>2002 Apr. </li></ul><ul><li>baseball2rss </li></ul><ul><li>http://search.cpan.org/dist/WWW-Baseball-NPB/ </li></ul>
  14. 14. <ul><li>2003 Oct. </li></ul><ul><li>rss2javascript </li></ul><ul><li>http://blog.bulknews.net/cookbook/blosxom/rss/rss2js.html </li></ul>
  15. 15. <ul><li>2004 Sep. </li></ul><ul><li>bloglines2ipod </li></ul><ul><li>http://bulknews.net/lib/utils/bloglines2ipod/ </li></ul>
  16. 16. <ul><li>2004 Oct. </li></ul><ul><li>rss2audiobook </li></ul><ul><li>http://bulknews.net/lib/utils/rss2audiobook/ </li></ul>
  17. 17. <ul><li>2005 Aug. </li></ul><ul><li>bloglines2gmail </li></ul><ul><li>http://svn.bulknews.net/repos/public/bloglines2email/trunk/ </li></ul>
  18. 18. <ul><li>Looks like </li></ul><ul><li>It's not only me </li></ul><ul><li>doing these things. </li></ul>
  19. 19. <ul><li>rss2opml </li></ul><ul><li>http://aruntx.com/software/rss2opml/ </li></ul>
  20. 20. <ul><li>rss2pdf </li></ul><ul><li>http://rss2pdf.com/ </li></ul>
  21. 21. <ul><li>rss2atom </li></ul><ul><li>brian.wanamaker.com/mybicycle/2004/02/rss2atom.html </li></ul>
  22. 22. <ul><li>atom2rss </li></ul><ul><li>http://www.2rss.com/software.php?page=atom2rss </li></ul>
  23. 23. <ul><li>rss2ical </li></ul><ul><li>http://bura-bura.com/blog/archives/2004/06/22/rss2ical/ </li></ul>
  24. 24. <ul><li>Bloglines2opml </li></ul><ul><li>http://mycvs.org/wp/wp-content/wp-transform.php </li></ul>
  25. 25. <ul><li>rss2gmail </li></ul><ul><li>http://www.cs.utexas.edu/~karu/gmailrss/ </li></ul>
  26. 26. <ul><li>rss2imap </li></ul><ul><li>http://rss2imap.sourceforge.jp/ </li></ul>
  27. 27. <ul><li>ebay2rss </li></ul><ul><li>http://www.2rss.com/software.php?page=ebay2rss </li></ul>
  28. 28. <ul><li>svn2rss </li></ul><ul><li>http://twiki.org/cgi-bin/view/Codev/Svn2rss </li></ul>
  29. 29. <ul><li><anything>2<anything> </li></ul>
  30. 30. <ul><li>Being sick of </li></ul><ul><li>writing the same code </li></ul><ul><li>again and again </li></ul>
  31. 31. <ul><li>Why not creating </li></ul><ul><li>A pluggable platform </li></ul><ul><li>Instead? </li></ul>
  32. 32. <ul><li>With reusable </li></ul><ul><li>Parsers / Emitters </li></ul><ul><li>/ Filters? </li></ul>
  33. 33. <ul><li>That's what </li></ul><ul><li>Plagger is. </li></ul>
  34. 34. IRC, Eject, Growl MSAgent, SSTP … Filter Publish StripRSSAd TruePermalink EntryFullText Pipe Thumbnail FindEnclosures FetchEnclosure SpamAssassin RSSLiberalDateTime URLBL ResolveRelativeLink … Gmail Delicious PDF MT Feed Planet Speech … Notify Bloglines Config OPML, XOXO File, DBI, FOAF … Mixi, Yahoo360JP POP3, iCal iTunes, Amazon YouTube … Subscription CustomFeed
  35. 35. IRC, Eject, Growl MSAgent, SSTP … Filter Publish StripRSSAd TruePermalink EntryFullText Pipe Thumbnail FindEnclosures FetchEnclosure SpamAssassin RSSLiberalDateTime URLBL ResolveRelativeLink … Gmail Delicious PDF MT Feed Planet Speech … Notify Bloglines Config OPML, XOXO File, DBI, FOAF … Mixi, Yahoo360JP POP3, iCal iTunes, Amazon YouTube … Subscription CustomFeed
  36. 36. IRC, Eject, Growl MSAgent, SSTP … Filter Publish StripRSSAd TruePermalink EntryFullText Pipe Thumbnail FindEnclosures FetchEnclosure SpamAssassin RSSLiberalDateTime URLBL ResolveRelativeLink … Gmail Delicious PDF MT Feed Planet Speech … Notify Bloglines Config OPML, XOXO File, DBI, FOAF … Mixi, Yahoo360JP POP3, iCal iTunes, Amazon YouTube … Subscription CustomFeed
  37. 37. IRC, Eject, Growl MSAgent, SSTP … Filter Publish StripRSSAd TruePermalink EntryFullText Pipe Thumbnail FindEnclosures FetchEnclosure SpamAssassin RSSLiberalDateTime URLBL ResolveRelativeLink … Gmail Delicious PDF MT Feed Planet Speech … Notify Bloglines Config OPML , XOXO File, DBI, FOAF … Mixi, Yahoo360JP POP3, iCal iTunes, Amazon YouTube … Subscription CustomFeed
  38. 38. <ul><li>Just like </li></ul><ul><li>Lego™ Block </li></ul>
  39. 39. <ul><li>Create an app </li></ul><ul><li>With combo of </li></ul><ul><li>Plugins! </li></ul>
  40. 40. <ul><li>Example App #1 </li></ul><ul><li>Bloglines to Gmail </li></ul>
  41. 41. bloglines2gmail.yaml plugins: - module: Subscription::Bloglines config: username: you@example.com password: foobar mark_read: 1 - module: Publish::Gmail config: mailto: [email_address] mailfrom: miyagawa@example.com mailroute: via: smtp host: smtp.example.com
  42. 42. <ul><li>Run it on crontab </li></ul><ul><li>% ./plagger –c bloglines2gmail.yaml </li></ul>
  43. 43. RSS in Gmail
  44. 44. HTML + Images
  45. 45. Feed Image (Logo / Buddy Icon)
  46. 46. Search
  47. 47. Auto grouping (“Conversations”)
  48. 48. Diff
  49. 49. Tips: Filter
  50. 50. Tips: is:unread
  51. 51. <ul><li>Example App #2 </li></ul><ul><li>RSS to ircbot </li></ul>
  52. 52. RSS bot in action <ul><li>#plagger on freenode </li></ul>
  53. 53. Config for RSS bot (1/3) plugins: - module: Subscription::Config config: feed: # Trac's feed for changesets - http://plagger.org/…/rss
  54. 54. Config for RSS bot (2/3) # I don't like to be notified of same items # more than once! - module: Filter::Rule rule: module: Fresh mtime: path: /tmp/rssbot.time autoupdate: 1
  55. 55. Config for RSS bot (3/3) - module: Notify::IRC config: daemon_port: 9999 nickname: plaggerbot server_host: chat.freenode.net server_channels: - #plagger-ja - #plagger
  56. 56. <ul><li>See more in </li></ul><ul><li>examples/irc.yaml </li></ul>
  57. 57. <ul><li>Example App #3 </li></ul><ul><li>Planet </li></ul>
  58. 58. <ul><li>http://planet.yapcchicago.org/ </li></ul>
  59. 59. planet-yapcna.yaml (1/4) plugins: - module: Subscription::Config config: feed: - http://yapcchicago.org/feed/ - http://use.perl.org/search.pl?query=YAPC… - http://del.icio.us/rss/tag/yapcna2006 - http://feeds.technorati.com/feed/posts/… - http://bloglines.com/search?q=YAPC+NA&… # etc, etc …
  60. 60. planet-yapcna.yaml (2/4) # Normalize feed title and permalinks - module: Filter::FeedBurnerPermalink - module: Filter::TruePermalink - module: Filter::StripTagsFromTitle
  61. 61. planet-yapcna.yaml (3/4) # Create a smartfeed for all the entries merged - module: SmartFeed::All rule_op: AND rule: - module: Fresh duration: 10080 # seven days - module: URLBL dnsbl: rbl.bulkfeeds.jp config: title: Planet YAPC::NA
  62. 62. planet-yapcna.yaml (4/4) # Generate nice XHTML out of the SmartFeed - module: Publish::Planet rule: expression: $args->{feed}->id eq 'smartfeed:all' config: dir: /path/to/htdocs skin: sixapart-std template: members_list: 1 style_url: http://example.com/style.css
  63. 63. <ul><li>(I admit this Planet config is so clumsy </li></ul><ul><li>and I'll work on that to make it suck less.) </li></ul>
  64. 64. <ul><li>Example App #4 </li></ul><ul><li>YouTube downloader </li></ul>
  65. 65. youtube.yaml plugins: - module: Subscription::Config config: feed: - http://www.youtube.com/rss/tag/yapc.rss # discover real .flv URLs on YouTube.com - module: Filter::FindEnclosures # fetch them to local directory - module: Filter::FertchEnclosure config: dir: path/to/save
  66. 66. <ul><li>Coming soon … </li></ul><ul><li>Filter::ffmpeg, Sync::PSP, Sync::iPodVideo </li></ul>
  67. 67. <ul><li>Plagger </li></ul><ul><li>Core features </li></ul>
  68. 68. <ul><li>RSS/Atom </li></ul><ul><li>Auto-Discovery </li></ul>
  69. 69. <ul><li>Support various </li></ul><ul><li>Feed formats </li></ul><ul><li>RSS 0.91 to Atom 1.0 </li></ul>
  70. 70. <ul><li>Support parsing </li></ul><ul><li>Broken XML feeds </li></ul><ul><li>(XML::Liberal) </li></ul>
  71. 71. <ul><li>Podcast / Videocast </li></ul><ul><li>Support </li></ul><ul><li>(RSS 2.0 & Atom 1.0) </li></ul>
  72. 72. <ul><li>Photocast </li></ul><ul><li>Media RSS </li></ul><ul><li>iTunes RSS* </li></ul>
  73. 73. <ul><li>Sane I18N impl. </li></ul><ul><li>Unicode & Timezone </li></ul>
  74. 74. <ul><li>Access to </li></ul><ul><li>browser's Cookies </li></ul><ul><li>IE, Safari, Firefox and w3m </li></ul><ul><li>Thanks to brian d foy </li></ul>
  75. 75. <ul><li>Quick tour </li></ul><ul><li>On available plugins </li></ul>
  76. 76. Plugin phases (types) <ul><li>Subscription </li></ul><ul><li>Aggregator </li></ul><ul><li>CustomFeed </li></ul><ul><li>Filter </li></ul><ul><li>Publish </li></ul><ul><li>Notify </li></ul><ul><li>Search </li></ul>
  77. 77. <ul><li>Subscription </li></ul><ul><li>load subscriptions </li></ul><ul><li>(list the feeds/URLs to aggregate) </li></ul>
  78. 78. <ul><li>Subscription::Config </li></ul>- module: Subscription::Config config: feed: - http://www.yapcchicago.org/feed/ - http://tokyo.yapcasia.org/blog/
  79. 79. <ul><li>Subscription::OPML </li></ul>- module: Subscription::OPML config: url: http://www.example.com/subs.opml # subs.opml <opml> <outline xmlUrl=&quot;http://www.yapcchicago.org/feed/&quot; /> <outline htmlUrl=&quot;http://tokyo.yapcasia.org/blog/&quot; /> </opml>
  80. 80. <ul><li>Subscription::File </li></ul>- module: Subscription::File config: url: file:///path/to/subscription.txt % cat subscription.txt http://www.yapcchicago.org/feed/ http://tokyo.yapcasia.org/blog/ %
  81. 81. <ul><li>Subscription::XOXO </li></ul>- module: Subscription::XOXO config: url: http://www.example.com/subscription.html # subscription.html <ul class=&quot;xoxo&quot;> <li><a href=&quot;http://www.yapcchicago.org/feed/&quot;>YAPC::NA</a></li> <li><a href=&quot;http://tokyo.yapcasia.org/blog/&quot;>YAPC::NA</a></li> </ul>
  82. 82. <ul><li>Subscription::Bookmarks </li></ul><ul><li>Read bookmarks file of IE, Firefox and Safari </li></ul>
  83. 83. <ul><li>Aggregator </li></ul><ul><li>Aggregate and parse the feeds </li></ul><ul><li>listed in subscription(s) </li></ul>
  84. 84. <ul><li>Aggregator::Simple </li></ul><ul><li>The &quot;dumb&quot; aggregator </li></ul><ul><li>Using LWP and XML::Feed </li></ul><ul><li>Might be okay < 20 feeds </li></ul>
  85. 85. <ul><li>Aggregator::Xango </li></ul><ul><li>The &quot;fast&quot; aggregator using Xango.pm </li></ul><ul><li>the POE based scalable web crawler </li></ul><ul><li>For > 100 feeds </li></ul>
  86. 86. <ul><li>CustomFeed </li></ul><ul><li>Feed formats other than RSS/Atom </li></ul><ul><li>Scrapers </li></ul>
  87. 87. <ul><li>CustomFeed::POP3 </li></ul><ul><li>Each email is a feed. </li></ul><ul><li>Attachments are enclosures. </li></ul>
  88. 88. <ul><li>CustomFeed::MySpace* </li></ul><ul><li>Your friends journal as feed </li></ul><ul><li>(* indicates it's not developed yet) </li></ul>
  89. 89. <ul><li>CustomFeed::FlickrSearch </li></ul><ul><li>Search results as feed </li></ul><ul><li>Each photo found is an entry </li></ul><ul><li>(with enclosures). </li></ul>
  90. 90. <ul><li>Filter </li></ul><ul><li>Normalize / Repair feed metadata </li></ul><ul><li>Upgrade feed content </li></ul><ul><li>Filter feed content using text filters </li></ul><ul><li>Invoke some action on entries </li></ul>
  91. 91. <ul><li>Filter::StripRSSAd </li></ul>Supports: Google AdSense, FeedBurner, Pheedo
  92. 92. <ul><li>Filter::EntryFullText </li></ul><ul><li>Upgrade content-less feed to fulltext feed </li></ul><ul><li>by fetching individual HTML </li></ul><ul><li>and extracting the content body </li></ul>
  93. 93. <ul><li>Filter::TruePermalink </li></ul><ul><li>Resolves nasty redirection URL </li></ul><ul><li>to the &quot;true&quot; permalink </li></ul><ul><li>(e.g. http://…/go.php?url=….) </li></ul>
  94. 94. <ul><li>Filter::FindEnclosures </li></ul><ul><li>Find enclosures from content body </li></ul><ul><li><a href=&quot;http://…./foo.mp3&quot;>episode #1</a> </li></ul>
  95. 95. <ul><li>Filter::RSSLiberalDateTime </li></ul><ul><li>Deal with broken rss datetime format </li></ul><ul><li><pubDate>2006/06/27 01:45:22 +0900</pubDate> </li></ul>
  96. 96. <ul><li>Publish </li></ul><ul><li>Publish aggregated entry to online services </li></ul><ul><li>Convert feeds to other formats </li></ul>
  97. 97. <ul><li>Publish::Feed </li></ul><ul><li>Republish feed in RSS/Atom </li></ul><ul><li>Good to use with scrapers </li></ul>
  98. 98. <ul><li>Publish::Delicious </li></ul><ul><li>Auto-post entries to your del.icio.us </li></ul><ul><li>using its REST API </li></ul>
  99. 99. <ul><li>Publish::iCal* </li></ul><ul><li>Publish iCal feeds out of RSS/Atom </li></ul>
  100. 100. <ul><li>Publish::MTWidget </li></ul>
  101. 101. <ul><li>Publish::Excel </li></ul>If your boss is unhappy your reading blogs on browsers.
  102. 102. <ul><li>Search </li></ul><ul><li>Index aggregated entries on search engines </li></ul>
  103. 103. <ul><li>Search::Spotlight </li></ul>
  104. 104. <ul><li>Search::Estraier </li></ul><ul><li>Uses HyperEstraier XMLRPC node API </li></ul>
  105. 105. <ul><li>Notify </li></ul><ul><li>Notify feed updates in various ways </li></ul>
  106. 106. <ul><li>Notify::Campfire </li></ul>
  107. 107. <ul><li>Notify::Growl </li></ul>
  108. 108. <ul><li>Notify::MSAgent </li></ul>
  109. 109. Notify::Eject Supports: Windows, Linux, FreeBSD and Mac OSX!
  110. 110. <ul><li>So far, </li></ul><ul><li>Plagger rocks  </li></ul>
  111. 111. <ul><li>Actually, </li></ul><ul><li>Plagger sucks  </li></ul>
  112. 112. <ul><li>No good </li></ul><ul><li>Documentation </li></ul><ul><li>(Not a big deal if you can read Perl code) </li></ul>
  113. 113. <ul><li>Horrible lots of </li></ul><ul><li>CPAN deps. </li></ul>% grep requires Makefile.PL | wc –l 25 % grep recommends Makefile.PL | wc –l 70
  114. 114. <ul><li>cpan Plagger </li></ul><ul><li>Doesn't work (partially) </li></ul>
  115. 115. <ul><li>144 open tickets </li></ul><ul><li>On Trac </li></ul><ul><li>http://plagger.org/trac/query </li></ul><ul><li>(Not a bad sign. I use it as a Wishlist) </li></ul>
  116. 116. <ul><li>The way it </li></ul><ul><li>de-dupes entries </li></ul><ul><li>is clumsy </li></ul>
  117. 117. <ul><li>No database </li></ul><ul><li>Backend (yet) </li></ul><ul><li>Planned to be in core of 0.8 </li></ul>
  118. 118. <ul><li>Plugin invocations </li></ul><ul><li>Can be rule-based </li></ul><ul><li>but undocumented </li></ul>
  119. 119. <ul><li>Different Plugin functionalities </li></ul><ul><li>On the same namespaces </li></ul><ul><li>(CustomFeed, Filter, Publish) </li></ul>
  120. 120. <ul><li>Publish::Gmail </li></ul><ul><li>was badly named </li></ul>
  121. 121. <ul><li>I want you </li></ul><ul><li>To fix & improve it. </li></ul>
  122. 122. <ul><li>Plagger </li></ul><ul><li>dev. Status </li></ul>
  123. 123. <ul><li>Version </li></ul><ul><li>0.7.3 </li></ul>
  124. 124. <ul><li>Coming Soon … </li></ul>
  125. 125. <ul><li>iTunes RSS support </li></ul>
  126. 126. <ul><li>Enclosure processors </li></ul><ul><li>ffmpeg, Sync::PSP, Sync::iPodVideo </li></ul>
  127. 127. <ul><li>Rich Media metadata </li></ul><ul><li>ID3 tag in enclosures </li></ul><ul><li>Links to imdb.com / amazon.com </li></ul><ul><li>hReview microformats </li></ul>
  128. 128. <ul><li>Database Storage </li></ul><ul><li>& Server API </li></ul><ul><li>branches/plagger-server </li></ul>
  129. 129. <ul><li>Calendar Support </li></ul><ul><li>iCal parser & emitter </li></ul><ul><li>hCalendar microformats </li></ul><ul><li>.ics attached in emails </li></ul><ul><li>Sync::SyncML </li></ul>
  130. 130. <ul><li>How's the dev </li></ul><ul><li>going on? </li></ul>
  131. 131. <ul><li>31 authors </li></ul><ul><li>128 plugins </li></ul><ul><li>(most of them are from Japan) </li></ul>
  132. 132. <ul><li>Buzz in Japan </li></ul>
  133. 133. <ul><li>I am Happy </li></ul><ul><li>With &quot;the Buzz&quot; </li></ul>
  134. 134. <ul><li>I am !Happy </li></ul><ul><li>With &quot;In Japan&quot; </li></ul>
  135. 135. <ul><li>Help spreading </li></ul><ul><li>the words </li></ul>
  136. 136. <ul><li>Doc Contribution </li></ul><ul><li>Is highly welcome </li></ul>
  137. 137. <ul><li>http://plagger.org/ </li></ul><ul><li>Planet, Mailing List, IRC </li></ul><ul><li>Bug Tracking, SVN repository </li></ul>
  138. 138. <ul><li>#plagger on freenode </li></ul>
  139. 139. <ul><li>Join Us! </li></ul>
  140. 140. <ul><li>Thank you </li></ul><ul><li>Questions? </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×