1 /** The osmplayer namespace. */
  2 var osmplayer = osmplayer || {};
  3 
  4 /** The parser object. */
  5 osmplayer.parser = osmplayer.parser || {};
  6 
  7 /**
  8  * The youtube parser object.
  9  *
 10  * @return {object} The youtube parser.
 11  **/
 12 osmplayer.parser.youtube = {
 13 
 14   // The priority for this parser.
 15   priority: 10,
 16 
 17   // Return if this is a valid youtube feed.
 18   valid: function(feed) {
 19     return (feed.search(/^http(s)?\:\/\/gdata\.youtube\.com/i) === 0);
 20   },
 21 
 22   // Returns the type of request to make.
 23   getType: function(feed) {
 24     return 'jsonp';
 25   },
 26 
 27   // Returns the feed provided the start and numItems.
 28   getFeed: function(feed, start, numItems) {
 29     feed = feed.replace(/(.*)\??(.*)/i, '$1');
 30     feed += '?start-index=' + (start + 1);
 31     feed += '&max-results=' + (numItems);
 32     feed += '&v=2&alt=jsonc';
 33     return feed;
 34   },
 35 
 36   // Parse the feed.
 37   parse: function(data) {
 38     data = data.data;
 39     var playlist = {
 40       total_rows: data.totalItems,
 41       nodes: []
 42     };
 43 
 44     // Iterate through the items and parse it.
 45     for (var index in data.items) {
 46       if (data.items.hasOwnProperty(index)) {
 47         var item = data.items[index];
 48         playlist.nodes.push({
 49           title: item.title,
 50           description: item.description,
 51           mediafiles: {
 52             image: {
 53               'thumbnail': {
 54                 path: item.thumbnail.sqDefault
 55               },
 56               'image': {
 57                 path: item.thumbnail.hqDefault
 58               }
 59             },
 60             media: {
 61               'media': {
 62                 player: 'youtube',
 63                 id: item.id
 64               }
 65             }
 66           }
 67         });
 68       }
 69     }
 70 
 71     return playlist;
 72   }
 73 };
 74