1(function(w,q){w.HAPYoutubeLoader=function(p){function t(a){q.ajax({url:a,dataType:"jsonp"}).done(function(b){if(b.error&&b.error.message)console.log(b.error.message);else{var c,d=b.items.length;(f=b.nextPageToken)&&(f=l+"&pageToken="+f);for(c=0;c<d&&h.length!=m;c++){var e=b.items[c];if("youtube_playlist"==g||"youtube_single"==g||"youtube_single_list"==g)e.status?"public"==e.status.privacyStatus&&h.push(v(e,g)):e.snippet&&"Private video"!=e.snippet.title&&h.push(v(e,g))}if("youtube_single"==g||"youtube_single_list"== 2g)q(r).trigger("HAPYoutubeLoader.END_LOAD",{data:h,nextPageToken:f});else if(h.length<m)if(f){h.length+n>m&&(n=m-h.length,b=f.substr(0,l.indexOf("&maxResults=")+12),c=f.substr(l.indexOf("&key=")),f=b+n.toString()+c);if("youtube_playlist"==g)var x=f;t(x)}else q(r).trigger("HAPYoutubeLoader.END_LOAD",{data:h,nextPageToken:f});else q(r).trigger("HAPYoutubeLoader.END_LOAD",{data:h,nextPageToken:f})}}).fail(function(b,c,d){console.log(b,c,d)})}function v(a,b){var c=jQuery.extend(!0,{},k);c.type="youtube"; 3"youtube_single"==b||"youtube_single_list"==b?c.mp3=a.id:"youtube_playlist"==b&&(c.mp3=a.contentDetails.videoId);a.snippet&&(!c.title&&a.snippet.title&&(c.title=a.snippet.title),!c.description&&a.snippet.description&&(c.description=a.snippet.description),a.snippet.publishedAt&&(c.date=a.snippet.publishedAt),!a.thumb&&a.snippet.thumbnails&&(a.snippet.thumbnails.medium?c.thumb=a.snippet.thumbnails.medium.url:a.snippet.thumbnails.high?c.thumb=a.snippet.thumbnails.high.url:a.snippet.thumbnails["default"]&& 4(c.thumb=a.snippet.thumbnails["default"].url)));if(a.contentDetails&&a.contentDetails.duration){var d=a.contentDetails.duration,e=d.match(/\d+/g);0<=d.indexOf("M")&&-1==d.indexOf("H")&&-1==d.indexOf("S")&&(e=[0,e[0],0]);0<=d.indexOf("H")&&-1==d.indexOf("M")&&(e=[e[0],0,e[1]]);0<=d.indexOf("H")&&-1==d.indexOf("M")&&-1==d.indexOf("S")&&(e=[e[0],0,0]);d=0;3==e.length&&(d+=3600*parseInt(e[0]),d+=60*parseInt(e[1]),d+=parseInt(e[2]));2==e.length&&(d+=60*parseInt(e[0]),d+=parseInt(e[1]));1==e.length&&(d+= 5parseInt(e[0]));c.duration=d}return c}
5var r=this,g,k,h=[],n=50,l,f,m,u=p.youtubeAppId;this.resumeLoad=function(a){h=[];a?(l=a.substr(0,a.lastIndexOf("&pageToken=")),t(a)):q(r).trigger("HAPYoutubeLoader.END_LOAD",{data:h,nextPageToken:a})};this.setData=function(a){if(u){h=[];k=a;m=k.limit||400;n=50;m<n&&(n=m);g=k.type;f=null;var b="";-1<p.playlistItemContent.indexOf("title")&&(b+="title,");-1<p.playlistItemContent.indexOf("description")&&(b+="description,");-1<p.playlistItemContent.indexOf("date")&& 6(b+="publishedAt,");-1<p.playlistItemContent.indexOf("thumb")&&(b+="thumbnails,");0<b.length?(b=b.substr(0,b.length-1),a=",snippet",b=",snippet("+b+")"):b=a="";if("youtube_single"==g||"youtube_single_list"==g){"youtube_single_list"==g&&(k.path=k.path.replace(/\s+/g,""));if(-1<p.playlistItemContent.indexOf("duration"))var c=",contentDetails",d=",contentDetails(duration)";else d=c="";l="https://www.googleapis.com/youtube/v3/videos?id="+k.path+"&key="+u+"&part=id"+a+c+"&fields=items(id"+b+d+")"}else"youtube_playlist"== 7g&&(l="https://www.googleapis.com/youtube/v3/playlistItems?playlistId="+k.path+"&maxResults="+n+"&key="+u+"&part=contentDetails"+a+"&fields=items(contentDetails(videoId)"+b+"),nextPageToken");t(l)}else alert("Youtube API key missing! Set API key in settings.")};this.getNextPageToken=function(){return f}}})(window,jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.