Tune my feeds
Adam Burt emails me to inform about a utility app he wrote: TuneMyFeeds. It converts articles to audio, so you can listen instead of read, which is useful if you're travelling with your iPod.
Events in endo: A screencast
Drew McLellan made a really nice screencast of endo's events support. Check it out.
Technorati Tags: aggregator, endo, events, hCalendar, ical, microformat
How to write a plugin
endo's subscription handling can be extended using plugins. You can create plugins that configure a subscription, provide a feed, and/or parse a feed. endo comes pre-packaged with three plugins that handle subscriptions for del.icio.us, Flickr, and Technorati and one that runs user-defined scripts. To create your own plugin, you will need to know Objective-C and Apple's Cocoa Framework.
Plugins are packages with the "endoplug" extension and the following directory stucture:

An "endoplug" package must have an "Info.plist" at the root level, with keys as in the following example:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CreatorName</key> <string>Adriaan Tijsseling</string> <key>CreatorEmail</key> <string>endo@dot.com</string> <key>CreatorWebsite</key> <string>http://blog.kung-foo.tv</string> <key>ComponentWebsite</key> <string>http://infinite-sushi.com/endo</string> <key>ComponentComments</key> <string>This plugin creates subscriptions for Technorati tags and cosmos.</string> <key>ComponentCopyright</key> <string>http://creativecommons.org/licenses/by-nc-nd/2.5/</string> <key>ComponentVersion</key> <string>1.0</string> </dict> </plist>
You can download the XCode project for a sample plugin. This sample illustrates the plugin protocol by showing how to get a feed from the World of Warcraft home page. This page has no feed, so we use our plugin to extract from the HTML contents. It's just for demo purposes. The code is heavily commented and should be transparent. To adapt this code to your own plugin, please make sure to rename ALL occurrences of "PluginSample", in particular the class and plugin name. This includes occurrences in the Target and Build settings. The plugin's name is defined in the build settings for the active target and is referred to in most places by $(PRODUCT_NAME). You also must conform to the plugin protocol defined in the PluginInterface.h file.
If you have questions about the code, feel free to ask in the comments. Based on user input I can probably write a more elaborated documentation. For now, please play around with the sample code.
Technorati Tags: documentation, endo, plugin, sample code
Let endo users read your blog in your style
Subscriptions in endo can be configured to display articles using the originating website's style-sheet. This gives bloggers the option to let users view their blog entries in their own style. For example, here's my blog's subscription:

The "Use site's css" option is checked. Any article displayed in endo's main viewer uses my blog's style-sheet. For this to work, the style sheet has to define an "aggregator" ID. This is the ID of the main DIV element in endo's HTML template for articles. Using this name, "aggregator", is general enough so that any other aggregator that supports external style-sheets can use it. It's always nice to have a standard after all. The rest of my CSS tries to match my blog's look as much as possible. I also define styles for INS and DEL, which are used by endo to mark changes in an article (you need to turn that on in Preferences).
#aggregator { margin:1em; } #aggregator #item { padding: 1em 2.6em 2.6em 2.6em; background-color: #fff; } #aggregator #item p { margin: 0.8em 0 0.8em 0; font-size:1em; font-weight:normal; line-height: 1.33em; text-align:justify; } #aggregator #content { margin: 0; } #aggregator h1 { border-bottom: 1px solid #999; } #aggregator h1 a { color: #ad5000; text-decoration: none; } #aggregator h2 { text-align: left; font-size: 0.8em; margin: 0.2em 0 0.3em 0; color: #999; } #aggregator img { border: none; } #categories { text-align: right; font-size: 0.8em; margin: 0.3em 0 0.3em 0; color: #999; } ins.diff { background: #aaffab; text-decoration:none; } del.diff { background: #fddacb; text-decoration:none; }
If your blog or website supports the #aggregator ID, drop me a line. Once I've got a list compiled, I will link them here.
Technorati Tags: aggregator, css, endo