Changeset 1622
- Timestamp:
- 08/29/06 07:10:58
- Files:
-
- branches/hackathon-summary/plagger (modified) (previous)
- branches/hackathon-summary/plagger/Changes (modified) (1 diff)
- branches/hackathon-summary/plagger/MANIFEST (modified) (19 diffs)
- branches/hackathon-summary/plagger/Makefile.PL (modified) (4 diffs)
- branches/hackathon-summary/plagger/assets/plugins/Filter-EntryFullText/slashcode.pl (modified) (1 diff)
- branches/hackathon-summary/plagger/assets/plugins/Filter-EntryFullText/zakzak.yaml (modified) (1 diff)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/feedburner (deleted)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/feedburner.pat (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/google_adsense (deleted)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/google_adsense.pat (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/google_adsense2 (deleted)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/google_adsense2.pat (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/pheedo (deleted)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/pheedo.pat (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/pheedo_jp (deleted)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/pheedo_jp.pat (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/pheedo_jp2.pat (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/pheedo_jp_ad_entry.yaml (modified) (1 diff)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/plaza_rakuten (deleted)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/plaza_rakuten.pat (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/rssad_jp (deleted)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/rssad_jp.pat (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/seesaa (deleted)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/seesaa.pat (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/valueclick (deleted)
- branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/valueclick.pat (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-TruePermalink/google_groups.yaml (added)
- branches/hackathon-summary/plagger/assets/plugins/Filter-TruePermalink/redirectors.yaml (deleted)
- branches/hackathon-summary/plagger/assets/plugins/Filter-TruePermalink/refrss.yaml (modified) (1 diff)
- branches/hackathon-summary/plagger/assets/plugins/Filter-TruePermalink/rssquery.yaml (added)
- branches/hackathon-summary/plagger/assets/plugins/Notify-IRC/irc_notify.tt (modified) (1 diff)
- branches/hackathon-summary/plagger/assets/plugins/Widget-Simple/1470.yaml (added)
- branches/hackathon-summary/plagger/assets/plugins/Widget-Simple/blogmap.yaml (added)
- branches/hackathon-summary/plagger/assets/plugins/Widget-Simple/digg.yaml (added)
- branches/hackathon-summary/plagger/assets/plugins/Widget-Simple/google_pagerank.yaml (modified) (1 diff)
- branches/hackathon-summary/plagger/assets/plugins/Widget-Simple/technorati.yaml (added)
- branches/hackathon-summary/plagger/bin/plagger-search (modified) (2 diffs)
- branches/hackathon-summary/plagger/deps/Filter-FloatingDateTime.yaml (added)
- branches/hackathon-summary/plagger/deps/Filter-Markdown.yaml (added)
- branches/hackathon-summary/plagger/deps/Filter-URLBL.yaml (added)
- branches/hackathon-summary/plagger/deps/Publish-CHTML.yaml (added)
- branches/hackathon-summary/plagger/examples/weather-notify.yaml (added)
- branches/hackathon-summary/plagger/lib/Plagger.pm (modified) (3 diffs)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin.pm (modified) (2 diffs)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Aggregator/Simple.pm (modified) (2 diffs)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/EntryFullText.pm (modified) (4 diffs)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/FindEnclosures.pm (modified) (2 diffs)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/HEADEnclosureMetadata.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/Rule.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/SpamAssassin.pm (modified) (2 diffs)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/StripRSSAd.pm (modified) (2 diffs)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/TruePermalink.pm (modified) (5 diffs)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Publish/CHTML.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Publish/Feed.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Publish/OutlineText.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Publish/Pipe.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Search/Rast.pm (modified) (5 diffs)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Subscription/Bookmarks/InternetExplorer.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Subscription/Bookmarks/Mozilla.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Subscription/Bookmarks/Safari.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Plugin/Widget/Simple.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Rule/Always.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/lib/Plagger/Util.pm (modified) (3 diffs)
- branches/hackathon-summary/plagger/lib/Plagger/Walker.pm (modified) (1 diff)
- branches/hackathon-summary/plagger/t/99-perlcritic.t (added)
- branches/hackathon-summary/plagger/t/core/feed-parser-discover.t (modified) (1 diff)
- branches/hackathon-summary/plagger/t/core/feed-parser.t (modified) (1 diff)
- branches/hackathon-summary/plagger/t/core/mime-is-enclosure.t (added)
- branches/hackathon-summary/plagger/t/perlcriticrc (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-Emoticon/google_talk.t (modified) (2 diffs)
- branches/hackathon-summary/plagger/t/plugins/Filter-Emoticon/msn.t (modified) (1 diff)
- branches/hackathon-summary/plagger/t/plugins/Filter-EntryFullText/kojiinet.t (modified) (1 diff)
- branches/hackathon-summary/plagger/t/plugins/Filter-EntryFullText/slashcode.t (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-FloatingDateTime (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-FloatingDateTime/base.t (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-HTMLScrubber/base.t (modified) (2 diffs)
- branches/hackathon-summary/plagger/t/plugins/Filter-HatenaDiaryKeywordLink/base.t (modified) (1 diff)
- branches/hackathon-summary/plagger/t/plugins/Filter-HatenaFormat (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-HatenaFormat/base.t (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-Markdown (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-Markdown/base.t (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-SpamAssassin (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-SpamAssassin/base.t (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-StripRSSAd/pheedo.t (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-TruePermalink/bigfile.t (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-TruePermalink/google-groups.t (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-TruePermalink/oreilly.t (modified) (2 diffs)
- branches/hackathon-summary/plagger/t/plugins/Filter-TruePermalink/redirect.t (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-TruePermalink/refrss.t (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-URLBL (added)
- branches/hackathon-summary/plagger/t/plugins/Filter-URLBL/base.t (added)
- branches/hackathon-summary/plagger/t/plugins/Notify-Growl (added)
- branches/hackathon-summary/plagger/t/plugins/Notify-Growl/growl.t (added)
- branches/hackathon-summary/plagger/t/plugins/Publish-CHTML (added)
- branches/hackathon-summary/plagger/t/plugins/Publish-CHTML/publish.t (added)
- branches/hackathon-summary/plagger/t/plugins/Publish-OPML (added)
- branches/hackathon-summary/plagger/t/plugins/Publish-OPML/publish.t (added)
- branches/hackathon-summary/plagger/t/plugins/Publish-OutlineText (added)
- branches/hackathon-summary/plagger/t/plugins/Publish-OutlineText/publish.t (added)
- branches/hackathon-summary/plagger/t/plugins/Publish-PDF (added)
- branches/hackathon-summary/plagger/t/plugins/Publish-PDF/publish.t (added)
- branches/hackathon-summary/plagger/t/plugins/Search-Estraier/search.t (modified) (1 diff)
- branches/hackathon-summary/plagger/t/plugins/SmartFeed-All (added)
- branches/hackathon-summary/plagger/t/plugins/SmartFeed-All/base.t (added)
- branches/hackathon-summary/plagger/t/plugins/Subscription-2chThreadlist/base.t (modified) (1 diff)
- branches/hackathon-summary/plagger/t/regression/mime-type-dup.t (modified) (2 diffs)
- branches/hackathon-summary/plagger/t/regression/mime-type-filename.t (added)
- branches/hackathon-summary/plagger/t/regression/rss2-image.t (added)
- branches/hackathon-summary/plagger/t/samples/hatena-rss.xml (added)
- branches/hackathon-summary/plagger/t/samples/rss2-image.xml (added)
- branches/hackathon-summary/plagger/t/samples/spamassassin (added)
- branches/hackathon-summary/plagger/t/samples/spamassassin/ham_rule.txt (added)
- branches/hackathon-summary/plagger/t/samples/spamassassin/spam_rule.txt (added)
- branches/hackathon-summary/plagger/tools/chimps-smoker.pl (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/hackathon-summary/plagger/Changes
r1370 r1622 1 1 The latest, HTML version of this document is always available at http://plagger.org/trac.cgi/wiki/PlaggerChangeLog 2 3 == 0.7.9 (2006/08/24) == 4 5 === Core === 6 7 * Fixed BaseDirURI logic to allow empty dirname on Mac OSX (Yappo) 8 * Added tests to lots of plugins thanks to Testathoners 9 * Added Plagger::Walker util class to serialize feed data 10 * Merged from hackathon-mt branch. Added Plagger->set_context method 11 * Split bootstrap into new() and run() to be used in persisten programs 12 * Added $context->search() stub to get Plagger::Feed object from Search::* backends 13 * Added bin/plagger-search prototype CLI 14 * Added bin/plagger-atom-stream-consumer, very experimental AtomStream consumer 15 * Updated Plagger::Template->new() parameter 16 * assets_path: can now be localized per plugins using config:assets_path 17 * lots of fixes to tests so it can work on Windows 18 * decode config.yaml as UTF-8 automatically before run, unless you specify global:no_decode_utf8=1 19 * chimps-client: create lock dir to avoid double excecution 20 * Split feed parsing logic from Aggregator::Simple to Plagger::FeedParser so plugins can use. 21 * Added $ua->fetch_parse($feed) and $ua->find_parse($url) 22 * Fixed misusage of Term::Encoding (Yappo) 23 * Support entry level image in RSS 0.91 and 2.0 24 25 26 === New Plugins === 27 28 * Publish::JSON: Serialize feed to JSON (miyagawa) 29 * Publish::Serializer: Dump feed to various format using Data::Serializer (naoya, miyagawa) 30 * Notify::Audio: Play sound files when feed comes. Support playing enclosure files as well (miyagawa, youpy) 31 32 === Plugins Updates === 33 34 * Publish::Gmail: support APOP authentication in POP before SMTP 35 * Filter::Delicious: use Plagger::UA for caching. 36 * CustomFeed::Yahoo360JP: removed from the distro since no one is using it and it's broken 37 * Widget::Simple: Added lots of widgets (hsbt, jiro, drawnboy) 38 * Filter::EntryFullText: Fixed XHTML numeric entities issue when using XPath (spotted by otsune) 39 * Filter::2chRSSContent: Strip AD entry 40 * CustomFeed::YouTube: fix regexp to get page content (mizzy) 41 * Subscription::OPML: Fixed bug where containers are not correctly loaded because of array reference 42 * Subscriptoin::OPML: Ditch XML::OPML and rewrite OPML parser using XML::LibXML::SAX 43 * Filter::EntryFullText: extract_capture defaults to 'body' (suggested by otsune) 44 * Search::Rast: implemented searcher.search API (Yappo) 45 * Filter::TruePermalink: Fixed ref=rss YAML. Removed redirectors.yaml and instead introduced 'follow_redirect' config (default: 1) 46 * Notify::IRC: use color code scheme to colorize feed title and author (#movabletype) 2 47 3 48 == 0.7.8 (2006/08/18) == branches/hackathon-summary/plagger/MANIFEST
r1379 r1622 49 49 assets/plugins/Filter-EntryFullText/japan_zdnet_com.yaml 50 50 assets/plugins/Filter-EntryFullText/juno.yaml 51 assets/plugins/Filter-EntryFullText/kojii_net.yaml 51 52 assets/plugins/Filter-EntryFullText/kyodo.yaml 52 53 assets/plugins/Filter-EntryFullText/kyoko_shimbun_news.yaml … … 118 119 assets/plugins/Filter-FindEnclosures/yourfilehost.pl 119 120 assets/plugins/Filter-FindEnclosures/youtube.pl 120 assets/plugins/Filter-StripRSSAd/feedburner 121 assets/plugins/Filter-StripRSSAd/google_adsense 122 assets/plugins/Filter-StripRSSAd/google_adsense2 121 assets/plugins/Filter-StripRSSAd/feedburner.pat 122 assets/plugins/Filter-StripRSSAd/google_adsense.pat 123 assets/plugins/Filter-StripRSSAd/google_adsense2.pat 123 124 assets/plugins/Filter-StripRSSAd/namaan_ad.yaml 124 assets/plugins/Filter-StripRSSAd/pheedo 125 assets/plugins/Filter-StripRSSAd/pheedo_jp 125 assets/plugins/Filter-StripRSSAd/pheedo.pat 126 assets/plugins/Filter-StripRSSAd/pheedo_jp.pat 126 127 assets/plugins/Filter-StripRSSAd/pheedo_jp_ad_entry.yaml 127 assets/plugins/Filter-StripRSSAd/plaza_rakuten 128 assets/plugins/Filter-StripRSSAd/rssad_jp 129 assets/plugins/Filter-StripRSSAd/seesaa 130 assets/plugins/Filter-StripRSSAd/valueclick 128 assets/plugins/Filter-StripRSSAd/plaza_rakuten.pat 129 assets/plugins/Filter-StripRSSAd/rssad_jp.pat 130 assets/plugins/Filter-StripRSSAd/seesaa.pat 131 assets/plugins/Filter-StripRSSAd/valueclick.pat 131 132 assets/plugins/Filter-TruePermalink/2chrss.yaml 132 133 assets/plugins/Filter-TruePermalink/blogpeople.yaml … … 140 141 assets/plugins/Filter-TruePermalink/rd_yahoo.yaml 141 142 assets/plugins/Filter-TruePermalink/reddit.yaml 142 assets/plugins/Filter-TruePermalink/redirectors.yaml143 143 assets/plugins/Filter-TruePermalink/refrss.yaml 144 assets/plugins/Filter-TruePermalink/rssquery.yaml 144 145 assets/plugins/Filter-TruePermalink/tech_souken.yaml 145 146 assets/plugins/Filter-TruePermalink/tiyu_to.yaml … … 176 177 assets/plugins/Subscription-Planet/default.yaml 177 178 assets/plugins/Subscription-Planet/ja.yaml 179 assets/plugins/Widget-Simple/1470.yaml 178 180 assets/plugins/Widget-Simple/bloglines.yaml 181 assets/plugins/Widget-Simple/blogmap.yaml 179 182 assets/plugins/Widget-Simple/bulkfeeds.yaml 180 183 assets/plugins/Widget-Simple/delicious.yaml 181 184 assets/plugins/Widget-Simple/delicious_bookmark_users.yaml 185 assets/plugins/Widget-Simple/digg.yaml 186 assets/plugins/Widget-Simple/google_pagerank.yaml 182 187 assets/plugins/Widget-Simple/hatena_bookmark.yaml 183 188 assets/plugins/Widget-Simple/hatena_bookmark_users.yaml … … 185 190 assets/plugins/Widget-Simple/mm.yaml 186 191 assets/plugins/Widget-Simple/reddit.yaml 192 assets/plugins/Widget-Simple/technorati.yaml 187 193 AUTHORS 194 bin/plagger-atom-stream-consumer 188 195 bin/plagger-ircbot 196 bin/plagger-search 189 197 bin/spotlight_comment.scpt 190 198 Changes … … 194 202 deps/CustomFeed-Mixi.yaml 195 203 deps/CustomFeed-SVNLog.yaml 204 deps/Filter-2chNewsokuTitle.yaml 205 deps/Filter-2chRSSContent.yaml 206 deps/Filter-AtomLinkRelated.yaml 196 207 deps/Filter-Babelfish.yaml 208 deps/Filter-BlogPet.yaml 197 209 deps/Filter-Delicious.yaml 210 deps/Filter-DeliciousFeedTags.yaml 198 211 deps/Filter-Emoticon.yaml 199 212 deps/Filter-EntryFullText.yaml 200 213 deps/Filter-ExtractAuthorName.yaml 214 deps/Filter-FeedFlareStripper.yaml 201 215 deps/Filter-GuessLanguage.yaml 216 deps/Filter-HatenaBookmarkTag.yaml 202 217 deps/Filter-HatenaBookmarkUsersCount.yaml 203 218 deps/Filter-HatenaDiaryKeywordLink.yaml 204 219 deps/Filter-HatenaFormat.yaml 220 deps/Filter-HatenaKeywordTag.yaml 205 221 deps/Filter-HTMLScrubber.yaml 206 222 deps/Filter-ImageInfo.yaml 223 deps/Filter-Markdown.yaml 207 224 deps/Filter-Pipe.yaml 225 deps/Filter-POPFile.yaml 208 226 deps/Filter-Profanity.yaml 209 227 deps/Filter-ResolveRelativeLink.yaml 210 228 deps/Filter-Romanize.yaml 211 229 deps/Filter-RSSLiberalDateTime.yaml 230 deps/Filter-SpamAssassin.yaml 231 deps/Filter-StripRSSAd.yaml 232 deps/Filter-tDiaryComment.yaml 212 233 deps/Filter-Thumbnail.yaml 213 234 deps/Filter-TTP.yaml 235 deps/Filter-URLBL.yaml 236 deps/Notify-Audio-iTunesWin32.yaml 237 deps/Notify-Audio-MSWin32.yaml 238 deps/Notify-Audio.yaml 214 239 deps/Notify-Balloon.yaml 215 240 deps/Notify-Beep.yaml … … 220 245 deps/Notify-UpdatePing.yaml 221 246 deps/Publish-2chdat.yaml 247 deps/Publish-CHTML.yaml 222 248 deps/Publish-CSV.yaml 223 249 deps/Publish-Delicious.yaml … … 227 253 deps/Publish-IMAP.yaml 228 254 deps/Publish-JavaScript.yaml 255 deps/Publish-JSON.yaml 229 256 deps/Publish-Maildir.yaml 230 257 deps/Publish-MT.yaml … … 233 260 deps/Publish-Planet.yaml 234 261 deps/Publish-PowerPoint.yaml 262 deps/Publish-Serializer.yaml 235 263 deps/Publish-Speech-MacOSX.yaml 236 264 deps/Publish-Speech-Win32.yaml … … 243 271 deps/Subscription-Bloglines.yaml 244 272 deps/Subscription-Bookmarks-InternetExplorer.yaml 273 deps/Subscription-Bookmarks-Mozilla.yaml 245 274 deps/Subscription-Bookmarks-Safari.yaml 246 275 deps/Subscription-DBI.yaml … … 248 277 deps/Subscription-HatenaRSS.yaml 249 278 deps/Subscription-LivedoorReader.yaml 279 deps/Subscription-Odeo.yaml 250 280 deps/Subscription-OPML.yaml 281 deps/Subscription-PingServer.yaml 251 282 deps/Subscription-PlanetINI.yaml 283 deps/Subscription-XOXO.yaml 284 deps/Subscription-XPath.yaml 252 285 deps/Widget-Simple.yaml 253 286 examples/atode.yaml … … 259 292 examples/planet.yaml 260 293 examples/podcast.yaml 294 examples/rss2email.yaml 261 295 examples/search.yaml 296 examples/weather-notify.yaml 262 297 examples/xoxo-planet.yaml 263 298 examples/xoxo2opml.yaml … … 300 335 lib/Plagger/Entry.pm 301 336 lib/Plagger/Feed.pm 337 lib/Plagger/FeedParser.pm 302 338 lib/Plagger/Mechanize.pm 303 339 lib/Plagger/Operator.pm … … 382 418 lib/Plagger/Plugin/Filter/TTP.pm 383 419 lib/Plagger/Plugin/Filter/URLBL.pm 420 lib/Plagger/Plugin/Notify/Audio.pm 421 lib/Plagger/Plugin/Notify/Audio/iTunesMac.pm 422 lib/Plagger/Plugin/Notify/Audio/iTunesWin32.pm 423 lib/Plagger/Plugin/Notify/Audio/MSWin32.pm 384 424 lib/Plagger/Plugin/Notify/Balloon.pm 385 425 lib/Plagger/Plugin/Notify/Beep.pm … … 409 449 lib/Plagger/Plugin/Publish/IMAP.pm 410 450 lib/Plagger/Plugin/Publish/JavaScript.pm 451 lib/Plagger/Plugin/Publish/JSON.pm 411 452 lib/Plagger/Plugin/Publish/LivedoorClip.pm 412 453 lib/Plagger/Plugin/Publish/Maildir.pm … … 422 463 lib/Plagger/Plugin/Publish/PowerPoint.pm 423 464 lib/Plagger/Plugin/Publish/PSP.pm 465 lib/Plagger/Plugin/Publish/Serializer.pm 424 466 lib/Plagger/Plugin/Publish/Speech.pm 425 467 lib/Plagger/Plugin/Publish/Speech/MacOSX.pm … … 485 527 lib/Plagger/UserAgent.pm 486 528 lib/Plagger/Util.pm 529 lib/Plagger/Walker.pm 487 530 Makefile.PL 488 531 MANIFEST This list of files … … 490 533 plagger 491 534 t/00_compile.t 535 t/assets/plugins/Test-AssetsPath/assets_path.tt 536 t/samples/assets_path.tt 492 537 t/samples/atom-category.xml 538 t/samples/atom-related.xml 493 539 t/samples/atom10-example.xml 494 540 t/samples/babelfish.xml 541 t/samples/config.ini 495 542 t/samples/delicious.xml 543 t/samples/feed.xml 544 t/samples/feeds.txt 496 545 t/samples/googlevideo.xml 497 546 t/samples/guess-language/english.xml … … 507 556 t/samples/included.yaml 508 557 t/samples/monkey.rss 558 t/samples/mozilla-bookmarks.html 509 559 t/samples/nasty.xml 510 560 t/samples/non-http-link.xml 561 t/samples/opml-nested.xml 562 t/samples/opml.xml 511 563 t/samples/photocast.rss 512 564 t/samples/rss-20.xml 513 565 t/samples/rss-full.xml 566 t/samples/rss2-image.xml 514 567 t/samples/rss2sample.xml 568 t/samples/safari_bookmarks.plist 569 t/samples/sample.foaf 570 t/samples/spamassassin/ham_rule.txt 571 t/samples/spamassassin/spam_rule.txt 515 572 t/samples/tags-in-title.xml 573 t/samples/tags-to-title.xml 574 t/samples/tdiary.rdf 575 t/samples/top10news.xml 516 576 t/samples/vox.xml 577 t/samples/xoxo.html 517 578 t/TestPlagger.pm 518 579 tools/check-dependencies.pl branches/hackathon-summary/plagger/Makefile.PL
r1544 r1622 29 29 requires('XML::Feed', 0.12); 30 30 requires('XML::LibXML'); 31 requires('XML::Atom', 0. 19);31 requires('XML::Atom', 0.23); 32 32 requires('XML::RSS::LibXML', 0.20); 33 33 requires('Encode', 2.10); … … 43 43 features( 44 44 'Better Encoding detection' => [ 45 -default => 1,45 -default => 0, 46 46 recommends('Encode::Detect'), 47 47 ], … … 57 57 'Liberal XML parsing' => [ 58 58 -default => 1, 59 recommends('XML::Liberal', 0.1 3),59 recommends('XML::Liberal', 0.14), 60 60 recommends('XML::RSS::Liberal'), 61 61 ], … … 96 96 auto_include; 97 97 auto_install; 98 98 99 install_script('plagger'); 99 100 install_script('bin/plagger-ircbot'); branches/hackathon-summary/plagger/assets/plugins/Filter-EntryFullText/slashcode.pl
r757 r1622 1 1 sub handle { 2 2 my($self, $args) = @_; 3 $args->{entry}->permalink =~ m!article\.pl\?sid=\d\d/\d\d/\d\d/\d+ !;3 $args->{entry}->permalink =~ m!article\.pl\?sid=\d\d/\d\d/\d\d/\d+|/~\w+/journal/\d+$!; 4 4 } 5 5 branches/hackathon-summary/plagger/assets/plugins/Filter-EntryFullText/zakzak.yaml
r519 r1622 1 1 # used with http://www.zakzak.co.jp/ or http://bulknews.net/rss/rdf.cgi?ZakZak 2 2 author: youpy 3 custom_feed_handle: http://www\.zakzak\.co\.jp/ $3 custom_feed_handle: http://www\.zakzak\.co\.jp/ 4 4 custom_feed_follow_link: (?:top|spo|gei)/\d+.*?\.html 5 5 handle: http://www\.zakzak\.co\.jp/(?:top|spo|gei)/\d+ branches/hackathon-summary/plagger/assets/plugins/Filter-StripRSSAd/pheedo_jp_ad_entry.yaml
r758 r1622 1 condition: $args->{entry}->link =~ m!^http://www\.pheedo\.jp/click\.phdo\? z=\w+&a=\w+&unq=\w+!1 condition: $args->{entry}->link =~ m!^http://www\.pheedo\.jp/click\.phdo\?(?:a=[\w\/]+|z=\w+&a=\w+&unq=\w+)! && $args->{entry}->title =~ m!^AD:! 2 2 strip: 1 3 3 branches/hackathon-summary/plagger/assets/plugins/Filter-TruePermalink/refrss.yaml
r690 r1622 1 1 author: youpy 2 rewrite: s/[\?&](?:ref|from|FM)=(?:atom|rss)// 2 rewrite: s/[\?&;](?:ref|from|FM)=(?:atom|rss|rssall)([&;].*)?$/$1/ 3 branches/hackathon-summary/plagger/assets/plugins/Notify-IRC/irc_notify.tt
r1232 r1622 1 [%- SET title = feed.title || '(no-title)' -%] 2 [% feed.title_text %]: [% entry.title_text %] - [% entry.link %][% IF entry.author %] by [% entry.author %][% END %] 1 [% IF feed.title %][% feed.title_text %]: [% END %][% entry.title_text %][% IF entry.author %] (03[% entry.author %])[% END %] - 14[% entry.permalink %] branches/hackathon-summary/plagger/assets/plugins/Widget-Simple/google_pagerank.yaml
r1380 r1622 2 2 query: 3 3 q: $args->{feed}->link 4 content_dynamic: <img src="http://www.pagerankon.com/smerankcheck.php?site=[% feed.link %]&s=style7" border="0" alt="Google PageRank" >4 content_dynamic: <img src="http://www.pagerankon.com/smerankcheck.php?site=[% feed.link %]&s=style7" border="0" alt="Google PageRank" style="border:0;vertical-align:middle" /> branches/hackathon-summary/plagger/bin/plagger-search
r1391 r1622 3 3 use warnings; 4 4 5 use Encode ;5 use Encode (); 6 6 use FindBin; 7 7 use Getopt::Long; … … 15 15 16 16 my $context = Plagger->new(config => $path); 17 my $query = Encode::decode_utf8($ARGV[0]);17 my $query = decode($ARGV[0]); 18 18 19 19 my @feeds = $context->search($query); 20 20 21 21 my $feed = $feeds[0]; 22 binmode STDOUT, ":utf8"; 23 print "Search for '$query': ", $feed->count, " entries found.\n\n"; 22 binmode STDOUT, ":utf8" unless $context->conf->{log}->{encoding}; 23 exit unless $feed; 24 print "Search for '" . encode($query) . "': ", $feed->count , " entries found.\n\n"; 24 25 25 26 for my $entry ($feed->entries) { 26 print $entry->title, $entry->author ? "(by " . $entry->author. ")" : '', "\n";27 print $entry->body; # summary27 print encode($entry->title), $entry->author ? "(by " . encode($entry->author) . ")" : '', "\n"; 28 print encode($entry->body); # summary 28 29 print $entry->permalink, "\n"; 29 30 } 30 31 32 sub decode { 33 my $str = shift; 34 if ($context->conf->{log}->{encoding}) { 35 $str = Encode::decode($context->conf->{log}->{encoding}, $str); 36 } else { 37 $str = Encode::decode_utf8($str); 38 } 39 return $str; 40 } 41 42 sub encode { 43 my $str = shift; 44 if ($context->conf->{log}->{encoding}) { 45 $str = Encode::decode_utf8($str) unless utf8::is_utf8($str); 46 $str = Encode::encode($context->conf->{log}->{encoding}, $str); 47 } 48 return $str; 49 } branches/hackathon-summary/plagger/lib/Plagger.pm
r1618 r1622 1 1 package Plagger; 2 2 use strict; 3 our $VERSION = '0.7. 8';3 our $VERSION = '0.7.9'; 4 4 5 5 use 5.8.1; … … 91 91 } 92 92 93 open my $fh, $self->{config_path} or $self->error("$self->{config_path}: $!");93 open my $fh, '<', $self->{config_path} or $self->error("$self->{config_path}: $!"); 94 94 my $data = join '', <$fh>; 95 95 close $fh; … … 187 187 my($self, $file) = @_; 188 188 189 open my $fh, $file or die "$file: $!";189 open my $fh, '<', $file or die "$file: $!"; 190 190 while (<$fh>) { 191 191 /^package (Plagger::Plugin::.*?);/ and return $1; branches/hackathon-summary/plagger/lib/Plagger/Plugin.pm
r1412 r1622 13 13 use File::Find::Rule (); 14 14 use File::Spec; 15 use Scalar::Util qw(blessed); 15 16 16 17 sub new { … … 149 150 my($self, $rule, $callback) = @_; 150 151 151 my $context = Plagger->context;152 153 my $dir = $self->assets_dir;152 unless (blessed($rule) && $rule->isa('File::Find::Rule')) { 153 $rule = File::Find::Rule->name($rule); 154 } 154 155 155 156 # $rule isa File::Find::Rule 156 for my $file ($rule->in($dir)) { 157 $callback->($file); 157 for my $file ($rule->in($self->assets_dir)) { 158 my $base = File::Basename::basename($file); 159 $callback->($file, $base); 158 160 } 159 161 } branches/hackathon-summary/plagger/lib/Plagger/Plugin/Aggregator/Simple.pm
r1611 r1622 99 99 100 100 if ($remote->format =~ /^RSS/) { 101 $feed->image( $remote->{rss}->image)101 $feed->image( \%{$remote->{rss}->image} ) 102 102 if $remote->{rss}->image; 103 103 } elsif ($remote->format eq 'Atom') { … … 170 170 } 171 171 172 # entry image support 173 if ($remote->format =~ /^RSS / and my $img = $e->{entry}->{image}) { 174 $entry->icon(\%$img); 175 } 176 172 177 # TODO: move MediaRSS, Hatena, iTunes and those specific parser to be subclassed 173 178 $self->handle_media_rss($entry, $e); branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/EntryFullText.pm
r1573 r1622 37 37 my $context = Plagger->context; 38 38 39 my $dir = $self->assets_dir; 40 my $dh = DirHandle->new($dir) or $context->error("$dir: $!"); 41 for my $file (grep -f $_->[0] && $_->[0] =~ /\.(?:pl|yaml)$/, 42 map [ File::Spec->catfile($dir, $_), $_ ], sort $dh->read) { 43 $self->load_plugin(@$file); 44 } 45 } 46 47 sub load_plugin { 48 my($self, $file, $base) = @_; 49 50 Plagger->context->log(debug => "loading $file"); 51 52 my $load_method = $file =~ /\.pl$/ ? 'load_plugin_perl' : 'load_plugin_yaml'; 53 push @{ $self->{plugins} }, $self->$load_method($file, $base); 39 $self->load_assets('*.yaml', sub { $self->load_plugin_yaml(@_) }); 40 $self->load_assets('*.pl', sub { $self->load_plugin_perl(@_) }); 54 41 } 55 42 … … 57 44 my($self, $file, $base) = @_; 58 45 59 open my $fh, $file or Plagger->context->error("$file: $!"); 46 Plagger->context->log(debug => "Load plugin $file"); 47 48 open my $fh, '<', $file or Plagger->context->error("$file: $!"); 60 49 (my $pkg = $base) =~ s/\.pl$//; 61 50 my $plugin_class = "Plagger::Plugin::Filter::EntryFullText::Site::$pkg"; … … 80 69 Plagger->context->error($@) if $@; 81 70 82 return$plugin_class->new;71 push @{ $self->{plugins} }, $plugin_class->new; 83 72 } 84 73 85 74 sub load_plugin_yaml { 86 75 my($self, $file, $base) = @_; 76 77 Plagger->context->log(debug => "Load YAML $file"); 87 78 my @data = YAML::LoadFile($file); 88 79 89 return map { Plagger::Plugin::Filter::EntryFullText::YAML->new($_, $base) }90 @data;80 push @{ $self->{plugins} }, 81 map { Plagger::Plugin::Filter::EntryFullText::YAML->new($_, $base) } @data; 91 82 } 92 83 … … 253 244 if (my @match = $args->{content} =~ /$self->{extract}/s) { 254 245 my @capture = split /\s+/, $self->{extract_capture}; 246 @capture = ('body') unless @capture; 255 247 @{$data}{@capture} = @match; 256 248 } branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/FindEnclosures.pm
r1551 r1622 53 53 my($self, $file, $base) = @_; 54 54 55 open my $fh, $file or Plagger->context->error("$file: $!");55 open my $fh, '<', $file or Plagger->context->error("$file: $!"); 56 56 (my $pkg = $base) =~ s/\.pl$//; 57 57 my $plugin_class = "Plagger::Plugin::Filter::FindEnclosures::Site::$pkg"; … … 184 184 185 185 my $mime = $type ? MIME::Type->new(type => $type) : Plagger::Util::mime_type_of( URI->new($url) ); 186 $mime && $mime->mediaType =~ m!^(?:audio|video|image)$!;186 Plagger::Util::mime_is_enclosure($mime); 187 187 } 188 188 branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/HEADEnclosureMetadata.pm
r1505 r1622 71 71 my($res, $header) = @_; 72 72 73 my $value = $res->header($header) or return undef; 73 my $value = $res->header($header) or return undef; ## no critic 74 74 $value =~ s/;.*?$//; 75 75 $value; branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/Rule.pm
r444 r1622 28 28 29 29 if ($args->{feed}->count == 0) { 30 $context->log(debug => "Deleting " . $args->{feed}-> url. " since it has 0 entries");30 $context->log(debug => "Deleting " . $args->{feed}->title . " since it has 0 entries"); 31 31 $context->update->delete_feed($args->{feed}) 32 32 } branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/SpamAssassin.pm
r1432 r1622 32 32 33 33 # create a pseudo mail header to skip some of the sa's default tests 34 my $status = $sa->check_message_text( 35 MIME::Lite->new( 36 From => 'plagger@localhost', 37 To => 'plagger@localhost', 38 Subject => encode('MIME-Header', $entry->title_text), 39 Data => $entry->body_text, 40 )->as_string 41 ); 34 35 my $mail = MIME::Lite->new( 36 From => 'plagger@localhost', 37 To => 'plagger@localhost', 38 Subject => encode('MIME-Header', $entry->title_text), 39 'X-Mailer' => 'plagger', 40 Data => $entry->body_text, 41 )->as_string; 42 43 my $status = $sa->check_message_text( $mail ); 42 44 43 45 if ($status->is_spam) { … … 65 67 new: 66 68 local_tests_only: 1 67 config_text: 68 - score NO_RELAYS 0.0 69 - score NO_RECEIVED 0.0 69 site_rules_filename: some_rule.cf 70 70 71 71 =head1 CONFIG branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/StripRSSAd.pm
r1551 r1622 9 9 $self->SUPER::init(@_); 10 10 Plagger->context->autoload_plugin({ module => 'Filter::BloglinesContentNormalize' }); 11 $self->load_patterns();12 }13 11 14 sub load_patterns { 15 my $self = shift; 16 17 my $dir = $self->assets_dir; 18 my $dh = DirHandle->new($dir) or Plagger->context->error("$dir: $!"); 19 for my $file (grep -f $_->[0] && $_->[1] =~ /^[\w\-\.]+$/, 20 map [ File::Spec->catfile($dir, $_), $_ ], sort $dh->read) { 21 $self->load_pattern(@$file); 22 } 23 } 24 25 sub load_pattern { 26 my($self, $file, $base) = @_; 27 28 Plagger->context->log(debug => "loading $file"); 29 30 if ($file =~ /\.yaml$/) { 31 $self->load_yaml($file, $base); 32 } else { 33 $self->load_regexp($file, $base); 34 } 12 $self->load_assets('*.yaml', sub { $self->load_yaml(@_) }); 13 $self->load_assets('*.pat', sub { $self->load_regexp(@_)}); 35 14 } 36 15 37 16 sub load_regexp { 38 17 my($self, $file, $base) = @_; 18 Plagger->context->log(debug => "Load regexp $file"); 39 19 40 open my $fh, $file or Plagger->context->error("$file: $!");20 open my $fh, '<', $file or Plagger->context->error("$file: $!"); 41 21 my $re = join '', <$fh>; 42 22 chomp($re); … … 47 27 sub load_yaml { 48 28 my($self, $file, $base) = @_; 29 Plagger->context->log(debug => "Load YAML $file"); 49 30 50 31 my $pattern = eval { YAML::LoadFile($file) } branches/hackathon-summary/plagger/lib/Plagger/Plugin/Filter/TruePermalink.pm
