Feed and subscription list detection algorithm


Neither RDF+FOAF nor the iGoogle exported settings formats support embedded subscription lists. This detection algorithm only applies to OPML subscription lists.

Many services and softwares output OPML subscription lists with slight variations. listparser attempts to correctly determine whether an outline element is attempting to reference a feed or subscription list. As an example, although feeds should be indicated using type="rss" (no matter the format), some services refer to feeds using type="link", others indicate that the feed is Atom-formatted using type="pie", and still others fail to include a type attribute at all! Therefore it is necessary to make educated guesses.

Feed detection

If the outline element contains an xmlUrl attribute, the outline is assumed to represent a feed. listparser will also accept xmlurl, or xmlURL, or indeed any capitalization combination.

The type is ignored entirely in making the decision, with one notable exception (see below).

Subscription list detection

If the outline element has a url attribute and type="link" or type="include", listparser assumes that it has found a subscription list. Additionally, if it has an xmlUrl attribute and type="source", it is also considered a subscription list.

Although the “include” value was only introduced in OPML 2.0, listparser ignores the OPML version entirely. Additionally, despite the OPML 2.0 requirement that the url value of “link” outline elements must end in ”.opml” to be considered an OPML file, listparser ignores the URL suffix when detecting whether the element is a subscription list.