/** The osmplayer namespace. */
var osmplayer = osmplayer || {};
/** The parser object. */
osmplayer.parser = osmplayer.parser || {};
/**
* The rss parser object.
*
* @return {object} The rss parser.
**/
osmplayer.parser.rss = {
// The priority for this parser.
priority: 8,
// Return if this is a valid youtube feed.
valid: function(feed) {
feed = feed.replace(/(.*)\??(.*)/i, '$1');
return feed.match(/\.rss$/i) !== null;
},
// Returns the type of request to make.
getType: function(feed) {
return 'xml';
},
// Returns the feed provided the start and numItems.
getFeed: function(feed, start, numItems) {
return feed;
},
// Parse the feed.
parse: function(data) {
var playlist = {
total_rows: 0,
nodes: []
};
jQuery('rss channel', data).find('item').each(function(index) {
osmplayer.parser.rss.addRSSItem(playlist, jQuery(this));
});
return playlist;
},
// Parse an RSS item.
addRSSItem: function(playlist, item) {
playlist.total_rows++;
var node = {}, title = '', desc = '', img = '', media = '';
// Get the title.
title = item.find('title');
if (title.length) {
node.title = title.text();
}
// Get the description.
desc = item.find('annotation');
if (desc.length) {
node.description = desc.text();
}
// Add the media files.
node.mediafiles = {};
// Get the image.
img = item.find('image');
if (img.length) {
node.mediafiles.image = {
image: {
path: img.text()
}
};
}
// Get the media.
media = item.find('location');
if (media.length) {
node.mediafiles.media = {
media: {
path: media.text()
}
};
}
// Add this node to the playlist.
playlist.nodes.push(node);
}
};