How do you get your comics? (photo by cartese) |
I had the idea that I should be supplying an RSS or Atom feed of my comic so those people who use readers like Feedly will be automatically given the new comics when they are available.
Since my comic server application is JavaScript on Node, of course I looked for a module on npm that would enable me to easily create feeds. The top one is simply called feed. And it worked fine. But I found a few limitations and quirks with it when I was creating Atom format.
First, the validation was a little off from the Atom specification. Link is not technically a required element of the feed element, but an error was generated if I didn't include it. It was also putting in a "hub" type link, but that's not an Atom thing - it's from the RSS 2.0 type. There was an option for "image" which mapped to the logo element, but there was not an option for specifying the icon element. The logo should be more like a banner (twice as wide as it is tall) and the icon should be square.
For individual entries in the feed, again link was mandatory when it doesn't have to be. It was also missing the published date option for entries.
Now don't get me wrong, it's a great package. The issues I found are relatively minor, so I forked the project on GitHub and made changes to correct them. My version is available at https://github.com/cwleonard/feed.
I am still playing around with how to structure the content and which optional elements make a difference to readers such as Feedly, so I don't recommend subscribing to the feed just yet. But here's an example of how I am currently using it:
var feed = new Feed({ id: "http://amphibian.com", title: "Amphibian.com", description: "A web comic about frogs who run a technology company.", link: "http://amphibian.com", feed: "http://amphibian.com/feeds/atom", icon: "http://amphibian.com/simg/og_logo.png", copyright: "All rights reserved 2014, Casey Leonard", author: { name: "Casey Leonard", email: "casey at amphibian.com", link: "http://caseyleonard.com" } }); var comics = loadComics(); // get the latest comics for (var c in comics) { feed.addItem({ title: comics[c].title, link: "http://amphibian.com/" + comics[c].id, description: "Amphibian.com comic for " + comics[c].pubDate, date: comics[c].pd, content: "comic html goes here" }); } feed.updated = comics[0].pd; // date of the newest comic var atom = feed.render("atom-1.0");
I'll be sure to announce when I think it's done and hope to get the comic listed in the "comics" category on Feedly as well.
Amphibian.com comic for 29 December 2014 |
No comments:
Post a Comment