!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.SimpleYoutubeAPI=e():t.SimpleYoutubeAPI=e()}(window,function(){return function(t){var e={};function s(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,s),i.l=!0,i.exports}return s.m=t,s.c=e,s.d=function(t,e,n){s.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},s.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.t=function(t,e){if(1&e&&(t=s(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)s.d(n,i,function(e){return t[e]}.bind(null,i));return n},s.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return s.d(e,"a",e),e},s.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},s.p="",s(s.s=4)}([function(t,e){e.PARTS={Search:"snippet",Videos:"snippet,contentDetails",Playlists:"snippet",PlaylistItems:"snippet,status",Channels:"snippet"},e.KINDS={Video:"youtube#video",PlaylistItem:"youtube#playlistItem",Playlist:"youtube#playlist",SearchResult:"youtube#searchResult",Channel:"youtube#channel"},e.ENDPOINTS={PlaylistItems:"playlistItems",Channels:"channels",Videos:"videos",Playlists:"playlists",Search:"search"}},function(t,e,s){const{parse:n}=s(8);e.parseURL=(t=>{const e=n(t,!0);switch(e.hostname){case"www.youtube.com":case"youtube.com":case"m.youtube.com":{const t=/^[a-zA-Z0-9-_]+$/;if("/watch"===e.pathname){if(!t.test(e.query.v))return{};const s={video:e.query.v};return e.query.list&&(s.playlist=e.query.list),s}if("/playlist"===e.pathname)return t.test(e.query.list)?{playlist:e.query.list}:{};if(e.pathname.startsWith("/channel/")){const s=e.pathname.replace("/channel/","");return t.test(s)?{channel:s}:{}}return{}}case"youtu.be":return{video:/^\/[a-zA-Z0-9-_]+$/.test(e.pathname)?e.pathname.slice(1):null};default:return{}}})},function(t,e,s){const{parseURL:n}=s(1),i=s(0);t.exports=class{constructor(t,e){this.youtube=t,Object.defineProperty(this,"youtube",{enumerable:!1}),this.type="channel",this._patch(e)}_patch(t){if(t){switch(this.raw=t,this.full=t.kind===i.KINDS.Channel,this.kind=t.kind,t.kind){case i.KINDS.Playlist:case i.KINDS.PlaylistItem:case i.KINDS.Video:if(t.snippet){this.id=t.snippet.channelId,this.title=t.snippet.channelTitle;break}throw new Error("Attempted to make a channel out of a resource with no channel data.");case i.KINDS.SearchResult:if(t.id.kind===i.KINDS.Channel){this.id=t.id.channelId;break}if(t.snippet){this.id=t.snippet.channelId,this.title=t.snippet.channelTitle;break}throw new Error("Attempted to make a channel out of a search result with no channel data.");case i.KINDS.Channel:this.id=t.id,t.snippet&&(this.title=t.snippet.title,this.description=t.snippet.description,this.customURL=t.snippet.customUrl,this.publishedAt=new Date(t.snippet.publishedAt),this.thumbnails=t.snippet.thumbnails,this.defaultLanguage=t.snippet.defaultLanguage,this.localized=t.snippet.localized,this.country=t.snippet.country),t.contentDetails&&(this.relatedPlaylists=t.contentDetails.relatedPlaylists),t.statistics&&(this.viewCount=t.statistics.viewCount,this.commentCount=t.statistics.commentCount,this.subscriberCount=t.statistics.subscriberCount,this.hiddenSubscriberCount=t.statistics.hiddenSubscriberCount,this.videoCount=t.statistics.videoCount);break;default:throw new Error(`Unknown channel kind: ${t.kind}.`)}return this}}fetch(t){return this.youtube.request.getChannel(this.id,t).then(this._patch.bind(this))}get url(){return`https://www.youtube.com/channel/${this.id}`}static extractID(t){return n(t).channel}}},function(t,e,s){const n=s(7),{parseURL:i}=s(1),r=s(0),o=s(2);t.exports=class{constructor(t,e){this.youtube=t,Object.defineProperty(this,"youtube",{enumerable:!1}),this.type="video",this._patch(e)}_patch(t){if(t){switch(this.raw=t,this.full=t.kind===r.KINDS.Video,this.kind=t.kind,t.kind){case r.KINDS.PlaylistItem:if(t.snippet){if(t.snippet.resourceId.kind!==r.KINDS.Video)throw new Error("Attempted to make a video out of a non-video playlist item.");this.id=t.snippet.resourceId.videoId;break}throw new Error("Attempted to make a video out of a playlist item with no video data.");case r.KINDS.Video:this.id=t.id;break;case r.KINDS.SearchResult:if(t.id.kind!==r.KINDS.Video)throw new Error("Attempted to make a video out of a non-video search result.");this.id=t.id.videoId;break;default:throw new Error(`Unknown video kind: ${t.kind}.`)}return t.snippet&&(this.title=t.snippet.title,this.description=t.snippet.description,this.thumbnails=t.snippet.thumbnails,this.publishedAt=new Date(t.snippet.publishedAt),this.channel=new o(this.youtube,t)),t.contentDetails&&(this.duration=t.contentDetails.duration?n.parse(t.contentDetails.duration):null),this}}get maxRes(){const t=this.thumbnails;return t.maxres||t.standard||t.high||t.medium||t.default}get url(){return`https://www.youtube.com/watch?v=${this.id}`}get shortURL(){return`https://youtu.be/${this.id}`}get durationSeconds(){return this.duration?n.toSeconds(this.duration):-1}fetch(t){return this.youtube.request.getVideo(this.id,t).then(this._patch.bind(this))}static extractID(t){return i(t).video}}},function(t,e,s){const n=s(5),i=s(3),r=s(16),o=s(2),a=s(1),h=s(0);class u{constructor(t){if("string"!=typeof t)throw new Error("The YouTube API key you provided was not a string.");this.key=t,Object.defineProperty(this,"key",{enumerable:!1}),this.request=new n(this)}getVideo(t,e={}){const s=i.extractID(t);return s?this.getVideoByID(s,e):Promise.reject(new Error(`No video ID found in URL: ${t}`))}getVideoByID(t,e={}){return this.request.getVideo(t,e).then(t=>t?new i(this,t):null)}getPlaylist(t,e={}){const s=r.extractID(t);return s?this.getPlaylistByID(s,e):Promise.reject(new Error(`No playlist ID found in URL: ${t}`))}getPlaylistByID(t,e={}){return this.request.getPlaylist(t,e).then(t=>t?new r(this,t):null)}getChannel(t,e={}){const s=o.extractID(t);return s?this.getChannelByID(s,e):Promise.reject(new Error(`No channel ID found in URL: ${t}`))}getChannelByID(t,e={}){return this.request.getChannel(t,e).then(t=>t?new o(this,t):null)}search(t,e=5,s={}){return this.request.getPaginated(h.ENDPOINTS.Search,e,Object.assign(s,{q:t,part:h.PARTS.Search})).then(t=>t.map(t=>t.id.kind===h.KINDS.Video?new i(this,t):t.id.kind===h.KINDS.Playlist?new r(this,t):t.id.kind===h.KINDS.Channel?new o(this,t):null))}searchVideos(t,e=5,s={}){return this.search(t,e,Object.assign(s,{type:"video"}))}searchPlaylists(t,e=5,s={}){return this.search(t,e,Object.assign(s,{type:"playlist"}))}searchChannels(t,e=5,s={}){return this.search(t,e,Object.assign(s,{type:"channel"}))}}u.Video=i,u.Playlist=r,u.Channel=o,u.util=a,t.exports=u},function(t,e,s){const n=s(6),i=s(0);t.exports=class{constructor(t){this.youtube=t}make(t,e={}){e=Object.assign({key:this.youtube.key},e);const s=Object.keys(e).filter(t=>e[t]).map(t=>`${t}=${e[t]}`);return n(encodeURI(`https://www.googleapis.com/youtube/v3/${t}${s.length?`?${s.join("&")}`:""}`)).then(t=>t.json()).then(t=>t.error?Promise.reject(t.error):t)}getResource(t,e={}){return e=Object.assign({part:i.PARTS[t]},e),this.make(i.ENDPOINTS[t],e).then(t=>t.items.length?t.items[0]:Promise.reject(new Error(`resource ${t.kind} not found`)))}getResourceByID(t,e,s={}){return this.getResource(t,Object.assign(s,{id:e}))}getVideo(t,e){return this.getResourceByID("Videos",t,e)}getPlaylist(t,e){return this.getResourceByID("Playlists",t,e)}getChannel(t,e){return this.getResourceByID("Channels",t,e)}getPaginated(t,e=1/0,s={},n=[],i=null){if(e<1)return Promise.reject("Cannot fetch less than 1.");const r=e>50?50:e;return this.make(t,Object.assign(s,{pageToken:i,maxResults:r})).then(i=>{const o=n.concat(i.items);return i.nextPageToken&&r!==e?this.getPaginated(t,e-r,s,o,i.nextPageToken):o})}}},function(t,e,s){"use strict";t.exports=e=self.fetch,e.default=self.fetch.bind(self),e.Headers=self.Headers,e.Request=self.Request,e.Response=self.Response},function(t,e,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["weeks","years","months","days","hours","minutes","seconds"],i=e.pattern=new RegExp("P(?:(\\d+(?:[\\.,]\\d{0,3})?W)|(\\d+(?:[\\.,]\\d{0,3})?Y)?(\\d+(?:[\\.,]\\d{0,3})?M)?(\\d+(?:[\\.,]\\d{0,3})?D)?(?:T(\\d+(?:[\\.,]\\d{0,3})?H)?(\\d+(?:[\\.,]\\d{0,3})?M)?(\\d+(?:[\\.,]\\d{0,3})?S)?)?)"),r=e.parse=function(t){return t.match(i).slice(1).reduce(function(t,e,s){return t[n[s]]=parseFloat(e)||0,t},{})},o=e.end=function(t,e){var s=e?e.getTime():Date.now(),n=new Date(s);return n.setFullYear(n.getFullYear()+t.years),n.setMonth(n.getMonth()+t.months),n.setDate(n.getDate()+t.days),n.setHours(n.getHours()+t.hours),n.setMinutes(n.getMinutes()+t.minutes),n.setMilliseconds(n.getMilliseconds()+1e3*t.seconds),n.setDate(n.getDate()+7*t.weeks),n},a=e.toSeconds=function(t,e){var s=e?e.getTime():Date.now(),n=new Date(s);return(o(t,e).getTime()-n.getTime())/1e3};e.default={end:o,toSeconds:a,pattern:i,parse:r}},function(t,e,s){"use strict";var n=s(9),i=s(12);function r(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=v,e.resolve=function(t,e){return v(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?v(t,!1,!0).resolveObject(e):e},e.format=function(t){i.isString(t)&&(t=v(t));return t instanceof r?t.format():r.prototype.format.call(t)},e.Url=r;var o=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,h=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(u),c=["%","/","?",";","#"].concat(l),p=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},y={javascript:!0,"javascript:":!0},b={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},g=s(13);function v(t,e,s){if(t&&i.isObject(t)&&t instanceof r)return t;var n=new r;return n.parse(t,e,s),n}r.prototype.parse=function(t,e,s){if(!i.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var r=t.indexOf("?"),a=-1!==r&&r127?q+="x":q+=N[U];if(!q.match(f)){var E=A.slice(0,S),K=A.slice(S+1),$=N.match(d);$&&(E.push($[1]),K.unshift($[2])),K.length&&(v="/"+K.join(".")+v),this.hostname=E.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),C||(this.hostname=n.toASCII(this.hostname));var _=this.port?":"+this.port:"",V=this.hostname||"";this.host=V+_,this.href+=this.host,C&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==v[0]&&(v="/"+v))}if(!m[j])for(S=0,R=l.length;S0)&&s.host.split("@"))&&(s.auth=C.shift(),s.host=s.hostname=C.shift());return s.search=t.search,s.query=t.query,i.isNull(s.pathname)&&i.isNull(s.search)||(s.path=(s.pathname?s.pathname:"")+(s.search?s.search:"")),s.href=s.format(),s}if(!P.length)return s.pathname=null,s.search?s.path="/"+s.search:s.path=null,s.href=s.format(),s;for(var D=P.slice(-1)[0],O=(s.host||t.host||P.length>1)&&("."===D||".."===D)||""===D,S=0,x=P.length;x>=0;x--)"."===(D=P[x])?P.splice(x,1):".."===D?(P.splice(x,1),S++):S&&(P.splice(x,1),S--);if(!I&&!j)for(;S--;S)P.unshift("..");!I||""===P[0]||P[0]&&"/"===P[0].charAt(0)||P.unshift(""),O&&"/"!==P.join("/").substr(-1)&&P.push("");var C,A=""===P[0]||P[0]&&"/"===P[0].charAt(0);k&&(s.hostname=s.host=A?"":P.length?P.shift():"",(C=!!(s.host&&s.host.indexOf("@")>0)&&s.host.split("@"))&&(s.auth=C.shift(),s.host=s.hostname=C.shift()));return(I=I||s.host&&P.length)&&!A&&P.unshift(""),P.length?s.pathname=P.join("/"):(s.pathname=null,s.path=null),i.isNull(s.pathname)&&i.isNull(s.search)||(s.path=(s.pathname?s.pathname:"")+(s.search?s.search:"")),s.auth=t.auth||s.auth,s.slashes=s.slashes||t.slashes,s.href=s.format(),s},r.prototype.parseHost=function(){var t=this.host,e=a.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,s){(function(t,n){var i;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(r){e&&e.nodeType,t&&t.nodeType;var o="object"==typeof n&&n;o.global!==o&&o.window!==o&&o.self;var a,h=2147483647,u=36,l=1,c=26,p=38,f=700,d=72,m=128,y="-",b=/^xn--/,g=/[^\x20-\x7E]/,v=/[\x2E\u3002\uFF0E\uFF61]/g,w={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},I=u-l,j=Math.floor,P=String.fromCharCode;function k(t){throw new RangeError(w[t])}function D(t,e){for(var s=t.length,n=[];s--;)n[s]=e(t[s]);return n}function O(t,e){var s=t.split("@"),n="";return s.length>1&&(n=s[0]+"@",t=s[1]),n+D((t=t.replace(v,".")).split("."),e).join(".")}function S(t){for(var e,s,n=[],i=0,r=t.length;i=55296&&e<=56319&&i65535&&(e+=P((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=P(t)}).join("")}function C(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:u}function A(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function R(t,e,s){var n=0;for(t=s?j(t/f):t>>1,t+=j(t/e);t>I*c>>1;n+=u)t=j(t/I);return j(n+(I+1)*t/(t+p))}function N(t){var e,s,n,i,r,o,a,p,f,b,g=[],v=t.length,w=0,I=m,P=d;for((s=t.lastIndexOf(y))<0&&(s=0),n=0;n=128&&k("not-basic"),g.push(t.charCodeAt(n));for(i=s>0?s+1:0;i=v&&k("invalid-input"),((p=C(t.charCodeAt(i++)))>=u||p>j((h-w)/o))&&k("overflow"),w+=p*o,!(p<(f=a<=P?l:a>=P+c?c:a-P));a+=u)o>j(h/(b=u-f))&&k("overflow"),o*=b;P=R(w-r,e=g.length+1,0==r),j(w/e)>h-I&&k("overflow"),I+=j(w/e),w%=e,g.splice(w++,0,I)}return x(g)}function q(t){var e,s,n,i,r,o,a,p,f,b,g,v,w,I,D,O=[];for(v=(t=S(t)).length,e=m,s=0,r=d,o=0;o=e&&gj((h-s)/(w=n+1))&&k("overflow"),s+=(a-e)*w,e=a,o=0;oh&&k("overflow"),g==e){for(p=s,f=u;!(p<(b=f<=r?l:f>=r+c?c:f-r));f+=u)D=p-b,I=u-b,O.push(P(A(b+D%I,0))),p=j(D/I);O.push(P(A(p,0))),r=R(s,w,n==i),s=0,++n}++s,++e}return O.join("")}a={version:"1.4.1",ucs2:{decode:S,encode:x},decode:N,encode:q,toASCII:function(t){return O(t,function(t){return g.test(t)?"xn--"+q(t):t})},toUnicode:function(t){return O(t,function(t){return b.test(t)?N(t.slice(4).toLowerCase()):t})}},void 0===(i=function(){return a}.call(e,s,e,t))||(t.exports=i)}()}).call(this,s(10)(t),s(11))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e){var s;s=function(){return this}();try{s=s||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(s=window)}t.exports=s},function(t,e,s){"use strict";t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e,s){"use strict";e.decode=e.parse=s(14),e.encode=e.stringify=s(15)},function(t,e,s){"use strict";function n(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,s,r){e=e||"&",s=s||"=";var o={};if("string"!=typeof t||0===t.length)return o;var a=/\+/g;t=t.split(e);var h=1e3;r&&"number"==typeof r.maxKeys&&(h=r.maxKeys);var u=t.length;h>0&&u>h&&(u=h);for(var l=0;l=0?(c=m.substr(0,y),p=m.substr(y+1)):(c=m,p=""),f=decodeURIComponent(c),d=decodeURIComponent(p),n(o,f)?i(o[f])?o[f].push(d):o[f]=[o[f],d]:o[f]=d}return o};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},function(t,e,s){"use strict";var n=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,s,a){return e=e||"&",s=s||"=",null===t&&(t=void 0),"object"==typeof t?r(o(t),function(o){var a=encodeURIComponent(n(o))+s;return i(t[o])?r(t[o],function(t){return a+encodeURIComponent(n(t))}).join(e):a+encodeURIComponent(n(t[o]))}).join(e):a?encodeURIComponent(n(a))+s+encodeURIComponent(n(t)):""};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function r(t,e){if(t.map)return t.map(e);for(var s=[],n=0;nthis.videos=t.map(t=>new r(this.youtube,t)))}static extractID(t){return n(t).playlist}}}])});