js-video-url-parser
Advanced tools
@@ -333,3 +333,4 @@ (function (w) { | ||
| STREAM: 'stream', | ||
| EMBEDVIDEO: 'embed-video' | ||
| EMBEDVIDEO: 'embed-video', | ||
| CLIP: 'clip', | ||
| }; | ||
@@ -354,14 +355,22 @@ } | ||
| Twitch.prototype.parseUrl = function (url, result, params) { | ||
| var match; | ||
| match = url.match( | ||
| /twitch\.tv\/(\w+)(?:\/(.)\/(\d+))?/i | ||
| /(clips\.)?twitch\.tv\/(\w+)(?:\/(?:(.)\/(\d+)|(\w+)))?/i | ||
| ); | ||
| result.channel = match ? match[1] : undefined; | ||
| if (match && match[2] && match[3]) { | ||
| result.id = match[2] + match[3]; | ||
| } else if (params.video) { | ||
| result.channel = match ? match[2] : undefined; | ||
| if (match && match[3] && match[4]) { //video | ||
| result.id = match[3] + match[4]; | ||
| } else if (params.video) { //video embed | ||
| result.id = params.video; | ||
| delete params.video; | ||
| } else if (match && match[1] && match[5]) { //clips | ||
| result.id = match[5]; | ||
| result.isClip = true; | ||
| } else if (params.clip) { //clips embed | ||
| var split = params.clip.split('/'); | ||
| result.channel = split[0]; | ||
| result.id = split[1]; | ||
| result.isClip = true; | ||
| delete params.clip; | ||
| } | ||
@@ -374,3 +383,10 @@ return result; | ||
| if (result.channel) { | ||
| mediaType = result.id ? this.mediaTypes.VIDEO : this.mediaTypes.STREAM; | ||
| if (result.id && result.isClip) { | ||
| mediaType = this.mediaTypes.CLIP; | ||
| delete result.isClip; | ||
| } else if (result.id && !result.isClip) { | ||
| mediaType = this.mediaTypes.VIDEO; | ||
| } else { | ||
| mediaType = this.mediaTypes.STREAM; | ||
| } | ||
| } else if (result.id) { | ||
@@ -413,2 +429,4 @@ mediaType = this.mediaTypes.EMBEDVIDEO; | ||
| } | ||
| } else if (vi.mediaType === this.mediaTypes.CLIP) { | ||
| url = 'https://clips.twitch.tv/' + vi.channel + '/' + vi.id; | ||
| } | ||
@@ -434,2 +452,5 @@ url += combineParams({ | ||
| } | ||
| } else if (vi.mediaType === this.mediaTypes.CLIP) { | ||
| url = 'https://clips.twitch.tv/embed'; | ||
| params.clip = vi.channel + '/' + vi.id; | ||
| } | ||
@@ -436,0 +457,0 @@ |
@@ -1,1 +0,1 @@ | ||
| !function(a){"use strict";function b(a){if(null===a||"object"!=typeof a)return a;var c=a.constructor();for(var d in a)a.hasOwnProperty(d)&&(c[d]=b(a[d]));return c}function c(a){if("string"!=typeof a)return{};a=a.split("+").join(" ");var b,c={},d=a.match(/(?:[\?](?:[^=]+)=(?:[^&#]*)(?:[&](?:[^=]+)=(?:[^&#]*))*(?:[#].*)?)|(?:[#].*)/);if(null===d)return{};b=d[0].substr(1).split(/[&#=]/);for(var e=0;e<b.length;e+=2)c[decodeURIComponent(b[e])]=decodeURIComponent(b[e+1]||"");return c}function d(a){if("object"!=typeof a)return"";a.params=a.params||{};var b="",c=0,d=Object.keys(a.params);if(0===d.length)return"";for(d.sort(),a.hasParams||(b+="?"+d[0]+"="+a.params[d[0]],c+=1);c<d.length;c+=1)b+="&"+d[c]+"="+a.params[d[c]];return b}function e(a){var b,c=0,d={s:1,m:60,h:3600,d:86400,w:604800};if(!a.match(/^(\d+[smhdw]?)+$/))return 0;a=a.replace(/([smhdw])/g," $1 ").trim(),b=a.split(" ");for(var e=0;e<b.length;e+=2)c+=parseInt(b[e],10)*d[b[e+1]||"s"];return c}function f(){this.plugins={}}function g(){this.provider="canalplus",this.defaultFormat="embed",this.formats={embed:this.createEmbedUrl},this.mediaTypes={VIDEO:"video"}}function h(){this.provider="coub",this.defaultFormat="long",this.formats={long:this.createLongUrl,embed:this.createEmbedUrl},this.mediaTypes={VIDEO:"video"}}function i(){this.provider="dailymotion",this.alternatives=["dai"],this.defaultFormat="long",this.formats={short:this.createShortUrl,long:this.createLongUrl,embed:this.createEmbedUrl},this.mediaTypes={VIDEO:"video"}}function j(){this.provider="twitch",this.defaultFormat="long",this.formats={long:this.createLongUrl,embed:this.createEmbedUrl},this.mediaTypes={VIDEO:"video",STREAM:"stream",EMBEDVIDEO:"embed-video"}}function k(){this.provider="vimeo",this.alternatives=["vimeopro"],this.defaultFormat="long",this.formats={long:this.createLongUrl,embed:this.createEmbedUrl},this.mediaTypes={VIDEO:"video"}}function l(){this.provider="youtube",this.alternatives=["youtu","ytimg"],this.defaultFormat="long",this.formats={short:this.createShortUrl,long:this.createLongUrl,embed:this.createEmbedUrl,shortImage:this.createShortImageUrl,longImage:this.createLongImageUrl},this.imageQualities={0:"0",1:"1",2:"2",3:"3",DEFAULT:"default",HQDEFAULT:"hqdefault",SDDEFAULT:"sddefault",MQDEFAULT:"mqdefault",MAXRESDEFAULT:"maxresdefault"},this.defaultImageQuality=this.imageQualities.HQDEFAULT,this.mediaTypes={VIDEO:"video",PLAYLIST:"playlist",SHARE:"share"}}function m(){this.provider="youku",this.defaultFormat="long",this.formats={embed:this.createEmbedUrl,long:this.createLongUrl,flash:this.createFlashUrl,static:this.createStaticUrl},this.mediaTypes={VIDEO:"video"}}f.prototype.parseProvider=function(a){var b=a.match(/(?:(?:https?:)?\/\/)?(?:[^\.]+\.)?(\w+)\./i);return b?b[1]:void 0},f.prototype.removeEmptyParameters=function(a){return a.params&&0===Object.keys(a.params).length&&delete a.params,a},f.prototype.parse=function(a){var b,d=this,e=d.parseProvider(a),f=d.plugins[e];if(e&&f&&f.parse)return b=f.parse.apply(f,[a,c(a)]),b&&(b=d.removeEmptyParameters(b),b.provider=f.provider),b},f.prototype.bind=function(a){if(this.plugins[a.provider]=a,a.alternatives)for(var b=0;b<a.alternatives.length;b+=1)this.plugins[a.alternatives[b]]=a},f.prototype.create=function(a){var c=a.videoInfo,d=a.params,e=this.plugins[c.provider];if(d="internal"===d?c.params:d||{},e&&(a.format=a.format||e.defaultFormat,e.formats.hasOwnProperty(a.format)))return e.formats[a.format].apply(e,[c,b(d)])};var n=new f;g.prototype.parseParameters=function(a){return delete a.vid,a},g.prototype.parse=function(a,b){var c=this,d={mediaType:this.mediaTypes.VIDEO,id:b.vid};if(d.params=c.parseParameters(b),d.id)return d},g.prototype.createEmbedUrl=function(a,b){var c="http://player.canalplus.fr/embed/";return b.vid=a.id,c+=d({params:b})},n.bind(new g),h.prototype.parseUrl=function(a){var b=a.match(/(?:embed|view)\/([a-zA-Z\d]+)/i);return b?b[1]:void 0},h.prototype.parse=function(a,b){var c={mediaType:this.mediaTypes.VIDEO,params:b,id:this.parseUrl(a)};if(c.id)return c},h.prototype.createUrl=function(a,b,c){var e=a+b.id;return e+=d({params:c})},h.prototype.createLongUrl=function(a,b){return this.createUrl("https://coub.com/view/",a,b)},h.prototype.createEmbedUrl=function(a,b){return this.createUrl("//coub.com/embed/",a,b)},n.bind(new h),i.prototype.parseParameters=function(a){return this.parseTime(a)},i.prototype.parseTime=function(a){return a.start&&(a.start=e(a.start)),a},i.prototype.parseUrl=function(a){var b=a.match(/(?:\/video|ly)\/([A-Za-z0-9]+)/i);return b?b[1]:void 0},i.prototype.parse=function(a,b){var c=this,d={mediaType:this.mediaTypes.VIDEO,params:c.parseParameters(b),id:c.parseUrl(a)};return d.id?d:void 0},i.prototype.createUrl=function(a,b,c){return a+b.id+d({params:c})},i.prototype.createShortUrl=function(a){return this.createUrl("https://dai.ly/",a,{})},i.prototype.createLongUrl=function(a,b){return this.createUrl("https://dailymotion.com/video/",a,b)},i.prototype.createEmbedUrl=function(a,b){return this.createUrl("//www.dailymotion.com/embed/video/",a,b)},n.bind(new i),j.prototype.seperateId=function(a){return{pre:a[0],id:a.substr(1)}},j.prototype.parseChannel=function(a,b){var c=b.channel||b.utm_content||a.channel;return delete b.utm_content,delete b.channel,c},j.prototype.parseUrl=function(a,b,c){var d;return d=a.match(/twitch\.tv\/(\w+)(?:\/(.)\/(\d+))?/i),b.channel=d?d[1]:void 0,d&&d[2]&&d[3]?b.id=d[2]+d[3]:c.video&&(b.id=c.video,delete c.video),b},j.prototype.parseMediaType=function(a){var b;return a.channel?b=a.id?this.mediaTypes.VIDEO:this.mediaTypes.STREAM:a.id&&(b=this.mediaTypes.EMBEDVIDEO,delete a.channel),b},j.prototype.parseParameters=function(a){return a.t&&(a.start=e(a.t),delete a.t),a},j.prototype.parse=function(a,b){var c=this,d={};return d=c.parseUrl(a,d,b),d.channel=c.parseChannel(d,b),d.mediaType=c.parseMediaType(d),d.params=c.parseParameters(b),d.channel||d.id?d:void 0},j.prototype.createLongUrl=function(a,b){var c="";if(a.mediaType===this.mediaTypes.STREAM)c="https://twitch.tv/"+a.channel;else if(a.mediaType===this.mediaTypes.VIDEO){var e=this.seperateId(a.id);c="https://twitch.tv/"+a.channel+"/"+e.pre+"/"+e.id,b.start&&(b.t=b.start+"s",delete b.start)}return c+=d({params:b})},j.prototype.createEmbedUrl=function(a,b){var c="https://player.twitch.tv/";return a.mediaType===this.mediaTypes.STREAM?b.channel=a.channel:a.mediaType!==this.mediaTypes.VIDEO&&a.mediaType!==this.mediaTypes.EMBEDVIDEO||(b.video=a.id,b.start&&(b.t=b.start+"s",delete b.start)),c+=d({params:b})},n.bind(new j),k.prototype.parseUrl=function(a){var b=a.match(/(?:\/(?:channels\/[\w]+|(?:(?:album\/\d+|groups\/[\w]+)\/)?videos?))?\/(\d+)/i);return b?b[1]:void 0},k.prototype.parseParameters=function(a){return this.parseTime(a)},k.prototype.parseTime=function(a){return a.t&&(a.start=e(a.t),delete a.t),a},k.prototype.parse=function(a,b){var c={mediaType:this.mediaTypes.VIDEO,params:this.parseParameters(b),id:this.parseUrl(a)};return c.id?c:void 0},k.prototype.createUrl=function(a,b,c){var e=a+b.id,f=c.start;return delete c.start,e+=d({params:c}),f&&(e+="#t="+f),e},k.prototype.createLongUrl=function(a,b){return this.createUrl("https://vimeo.com/",a,b)},k.prototype.createEmbedUrl=function(a,b){return this.createUrl("//player.vimeo.com/video/",a,b)},n.bind(new k),l.prototype.parseUrl=function(a){var b=a.match(/(?:(?:v|vi|be|videos|embed)\/(?!videoseries)|(?:v|ci)=)([\w\-]{11})/i);return b?b[1]:void 0},l.prototype.parseParameters=function(a,b){return(a.start||a.t)&&(a.start=e(a.start||a.t),delete a.t),a.v===b.id&&delete a.v,a.list===b.id&&delete a.list,a},l.prototype.parseMediaType=function(a){if(a.params.list&&(a.list=a.params.list,delete a.params.list),a.id&&!a.params.ci)a.mediaType=this.mediaTypes.VIDEO;else if(a.list)delete a.id,a.mediaType=this.mediaTypes.PLAYLIST;else{if(!a.params.ci)return;delete a.params.ci,a.mediaType=this.mediaTypes.SHARE}return a},l.prototype.parse=function(a,b){var c=this,d={params:b,id:c.parseUrl(a)};return d.params=c.parseParameters(b,d),d=c.parseMediaType(d)},l.prototype.createShortUrl=function(a,b){var c="https://youtu.be/"+a.id;return b.start&&(c+="#t="+b.start),c},l.prototype.createLongUrl=function(a,b){var c="",e=b.start;return delete b.start,a.mediaType===this.mediaTypes.PLAYLIST?(b.feature="share",c+="https://youtube.com/playlist"):a.mediaType===this.mediaTypes.VIDEO?(b.v=a.id,c+="https://youtube.com/watch"):a.mediaType===this.mediaTypes.SHARE&&(b.ci=a.id,c+="https://www.youtube.com/shared"),a.list&&(b.list=a.list),c+=d({params:b}),a.mediaType!==this.mediaTypes.PLAYLIST&&e&&(c+="#t="+e),c},l.prototype.createEmbedUrl=function(a,b){var c="//youtube.com/embed";return a.mediaType===this.mediaTypes.PLAYLIST?b.listType="playlist":(c+="/"+a.id,"1"===b.loop&&(b.playlist=a.id)),a.list&&(b.list=a.list),c+=d({params:b})},l.prototype.createImageUrl=function(a,b,c){var d=a+b.id+"/",e=c.imageQuality||this.defaultImageQuality;return d+e+".jpg"},l.prototype.createShortImageUrl=function(a,b){return this.createImageUrl("https://i.ytimg.com/vi/",a,b)},l.prototype.createLongImageUrl=function(a,b){return this.createImageUrl("https://img.youtube.com/vi/",a,b)},n.bind(new l),m.prototype.parseUrl=function(a){var b=a.match(/(?:(?:embed|sid)\/|v_show\/id_|VideoIDS=)([a-zA-Z0-9]+)/);return b?b[1]:void 0},m.prototype.parseParameters=function(a){return a.VideoIDS&&delete a.VideoIDS,a},m.prototype.parse=function(a,b){var c=this,d={mediaType:this.mediaTypes.VIDEO,id:c.parseUrl(a),params:c.parseParameters(b)};if(d.id)return d},m.prototype.createUrl=function(a,b,c){var e=a+b.id;return e+=d({params:c})},m.prototype.createEmbedUrl=function(a,b){return this.createUrl("http://player.youku.com/embed/",a,b)},m.prototype.createLongUrl=function(a,b){return this.createUrl("http://v.youku.com/v_show/id_",a,b)},m.prototype.createStaticUrl=function(a,b){return this.createUrl("http://static.youku.com/v1.0.0638/v/swf/loader.swf?VideoIDS=",a,b)},m.prototype.createFlashUrl=function(a,b){var c="http://player.youku.com/player.php/sid/"+a.id+"/v.swf";return c+=d({params:b})},n.bind(new m),"undefined"!=typeof a&&(a.urlParser=n),"undefined"!=typeof module&&"undefined"!=typeof module.exports&&(module.exports=n)}(window); | ||
| !function(a){"use strict";function b(a){if(null===a||"object"!=typeof a)return a;var c=a.constructor();for(var d in a)a.hasOwnProperty(d)&&(c[d]=b(a[d]));return c}function c(a){if("string"!=typeof a)return{};a=a.split("+").join(" ");var b,c={},d=a.match(/(?:[\?](?:[^=]+)=(?:[^&#]*)(?:[&](?:[^=]+)=(?:[^&#]*))*(?:[#].*)?)|(?:[#].*)/);if(null===d)return{};b=d[0].substr(1).split(/[&#=]/);for(var e=0;e<b.length;e+=2)c[decodeURIComponent(b[e])]=decodeURIComponent(b[e+1]||"");return c}function d(a){if("object"!=typeof a)return"";a.params=a.params||{};var b="",c=0,d=Object.keys(a.params);if(0===d.length)return"";for(d.sort(),a.hasParams||(b+="?"+d[0]+"="+a.params[d[0]],c+=1);c<d.length;c+=1)b+="&"+d[c]+"="+a.params[d[c]];return b}function e(a){var b,c=0,d={s:1,m:60,h:3600,d:86400,w:604800};if(!a.match(/^(\d+[smhdw]?)+$/))return 0;a=a.replace(/([smhdw])/g," $1 ").trim(),b=a.split(" ");for(var e=0;e<b.length;e+=2)c+=parseInt(b[e],10)*d[b[e+1]||"s"];return c}function f(){this.plugins={}}function g(){this.provider="canalplus",this.defaultFormat="embed",this.formats={embed:this.createEmbedUrl},this.mediaTypes={VIDEO:"video"}}function h(){this.provider="coub",this.defaultFormat="long",this.formats={long:this.createLongUrl,embed:this.createEmbedUrl},this.mediaTypes={VIDEO:"video"}}function i(){this.provider="dailymotion",this.alternatives=["dai"],this.defaultFormat="long",this.formats={short:this.createShortUrl,long:this.createLongUrl,embed:this.createEmbedUrl},this.mediaTypes={VIDEO:"video"}}function j(){this.provider="twitch",this.defaultFormat="long",this.formats={long:this.createLongUrl,embed:this.createEmbedUrl},this.mediaTypes={VIDEO:"video",STREAM:"stream",EMBEDVIDEO:"embed-video",CLIP:"clip"}}function k(){this.provider="vimeo",this.alternatives=["vimeopro"],this.defaultFormat="long",this.formats={long:this.createLongUrl,embed:this.createEmbedUrl},this.mediaTypes={VIDEO:"video"}}function l(){this.provider="youtube",this.alternatives=["youtu","ytimg"],this.defaultFormat="long",this.formats={short:this.createShortUrl,long:this.createLongUrl,embed:this.createEmbedUrl,shortImage:this.createShortImageUrl,longImage:this.createLongImageUrl},this.imageQualities={0:"0",1:"1",2:"2",3:"3",DEFAULT:"default",HQDEFAULT:"hqdefault",SDDEFAULT:"sddefault",MQDEFAULT:"mqdefault",MAXRESDEFAULT:"maxresdefault"},this.defaultImageQuality=this.imageQualities.HQDEFAULT,this.mediaTypes={VIDEO:"video",PLAYLIST:"playlist",SHARE:"share"}}function m(){this.provider="youku",this.defaultFormat="long",this.formats={embed:this.createEmbedUrl,long:this.createLongUrl,flash:this.createFlashUrl,static:this.createStaticUrl},this.mediaTypes={VIDEO:"video"}}f.prototype.parseProvider=function(a){var b=a.match(/(?:(?:https?:)?\/\/)?(?:[^\.]+\.)?(\w+)\./i);return b?b[1]:void 0},f.prototype.removeEmptyParameters=function(a){return a.params&&0===Object.keys(a.params).length&&delete a.params,a},f.prototype.parse=function(a){var b,d=this,e=d.parseProvider(a),f=d.plugins[e];if(e&&f&&f.parse)return b=f.parse.apply(f,[a,c(a)]),b&&(b=d.removeEmptyParameters(b),b.provider=f.provider),b},f.prototype.bind=function(a){if(this.plugins[a.provider]=a,a.alternatives)for(var b=0;b<a.alternatives.length;b+=1)this.plugins[a.alternatives[b]]=a},f.prototype.create=function(a){var c=a.videoInfo,d=a.params,e=this.plugins[c.provider];if(d="internal"===d?c.params:d||{},e&&(a.format=a.format||e.defaultFormat,e.formats.hasOwnProperty(a.format)))return e.formats[a.format].apply(e,[c,b(d)])};var n=new f;g.prototype.parseParameters=function(a){return delete a.vid,a},g.prototype.parse=function(a,b){var c=this,d={mediaType:this.mediaTypes.VIDEO,id:b.vid};if(d.params=c.parseParameters(b),d.id)return d},g.prototype.createEmbedUrl=function(a,b){var c="http://player.canalplus.fr/embed/";return b.vid=a.id,c+=d({params:b})},n.bind(new g),h.prototype.parseUrl=function(a){var b=a.match(/(?:embed|view)\/([a-zA-Z\d]+)/i);return b?b[1]:void 0},h.prototype.parse=function(a,b){var c={mediaType:this.mediaTypes.VIDEO,params:b,id:this.parseUrl(a)};if(c.id)return c},h.prototype.createUrl=function(a,b,c){var e=a+b.id;return e+=d({params:c})},h.prototype.createLongUrl=function(a,b){return this.createUrl("https://coub.com/view/",a,b)},h.prototype.createEmbedUrl=function(a,b){return this.createUrl("//coub.com/embed/",a,b)},n.bind(new h),i.prototype.parseParameters=function(a){return this.parseTime(a)},i.prototype.parseTime=function(a){return a.start&&(a.start=e(a.start)),a},i.prototype.parseUrl=function(a){var b=a.match(/(?:\/video|ly)\/([A-Za-z0-9]+)/i);return b?b[1]:void 0},i.prototype.parse=function(a,b){var c=this,d={mediaType:this.mediaTypes.VIDEO,params:c.parseParameters(b),id:c.parseUrl(a)};return d.id?d:void 0},i.prototype.createUrl=function(a,b,c){return a+b.id+d({params:c})},i.prototype.createShortUrl=function(a){return this.createUrl("https://dai.ly/",a,{})},i.prototype.createLongUrl=function(a,b){return this.createUrl("https://dailymotion.com/video/",a,b)},i.prototype.createEmbedUrl=function(a,b){return this.createUrl("//www.dailymotion.com/embed/video/",a,b)},n.bind(new i),j.prototype.seperateId=function(a){return{pre:a[0],id:a.substr(1)}},j.prototype.parseChannel=function(a,b){var c=b.channel||b.utm_content||a.channel;return delete b.utm_content,delete b.channel,c},j.prototype.parseUrl=function(a,b,c){var d;if(d=a.match(/(clips\.)?twitch\.tv\/(\w+)(?:\/(?:(.)\/(\d+)|(\w+)))?/i),b.channel=d?d[2]:void 0,d&&d[3]&&d[4])b.id=d[3]+d[4];else if(c.video)b.id=c.video,delete c.video;else if(d&&d[1]&&d[5])b.id=d[5],b.isClip=!0;else if(c.clip){var e=c.clip.split("/");b.channel=e[0],b.id=e[1],b.isClip=!0,delete c.clip}return b},j.prototype.parseMediaType=function(a){var b;return a.channel?a.id&&a.isClip?(b=this.mediaTypes.CLIP,delete a.isClip):b=a.id&&!a.isClip?this.mediaTypes.VIDEO:this.mediaTypes.STREAM:a.id&&(b=this.mediaTypes.EMBEDVIDEO,delete a.channel),b},j.prototype.parseParameters=function(a){return a.t&&(a.start=e(a.t),delete a.t),a},j.prototype.parse=function(a,b){var c=this,d={};return d=c.parseUrl(a,d,b),d.channel=c.parseChannel(d,b),d.mediaType=c.parseMediaType(d),d.params=c.parseParameters(b),d.channel||d.id?d:void 0},j.prototype.createLongUrl=function(a,b){var c="";if(a.mediaType===this.mediaTypes.STREAM)c="https://twitch.tv/"+a.channel;else if(a.mediaType===this.mediaTypes.VIDEO){var e=this.seperateId(a.id);c="https://twitch.tv/"+a.channel+"/"+e.pre+"/"+e.id,b.start&&(b.t=b.start+"s",delete b.start)}else a.mediaType===this.mediaTypes.CLIP&&(c="https://clips.twitch.tv/"+a.channel+"/"+a.id);return c+=d({params:b})},j.prototype.createEmbedUrl=function(a,b){var c="https://player.twitch.tv/";return a.mediaType===this.mediaTypes.STREAM?b.channel=a.channel:a.mediaType===this.mediaTypes.VIDEO||a.mediaType===this.mediaTypes.EMBEDVIDEO?(b.video=a.id,b.start&&(b.t=b.start+"s",delete b.start)):a.mediaType===this.mediaTypes.CLIP&&(c="https://clips.twitch.tv/embed",b.clip=a.channel+"/"+a.id),c+=d({params:b})},n.bind(new j),k.prototype.parseUrl=function(a){var b=a.match(/(?:\/(?:channels\/[\w]+|(?:(?:album\/\d+|groups\/[\w]+)\/)?videos?))?\/(\d+)/i);return b?b[1]:void 0},k.prototype.parseParameters=function(a){return this.parseTime(a)},k.prototype.parseTime=function(a){return a.t&&(a.start=e(a.t),delete a.t),a},k.prototype.parse=function(a,b){var c={mediaType:this.mediaTypes.VIDEO,params:this.parseParameters(b),id:this.parseUrl(a)};return c.id?c:void 0},k.prototype.createUrl=function(a,b,c){var e=a+b.id,f=c.start;return delete c.start,e+=d({params:c}),f&&(e+="#t="+f),e},k.prototype.createLongUrl=function(a,b){return this.createUrl("https://vimeo.com/",a,b)},k.prototype.createEmbedUrl=function(a,b){return this.createUrl("//player.vimeo.com/video/",a,b)},n.bind(new k),l.prototype.parseUrl=function(a){var b=a.match(/(?:(?:v|vi|be|videos|embed)\/(?!videoseries)|(?:v|ci)=)([\w\-]{11})/i);return b?b[1]:void 0},l.prototype.parseParameters=function(a,b){return(a.start||a.t)&&(a.start=e(a.start||a.t),delete a.t),a.v===b.id&&delete a.v,a.list===b.id&&delete a.list,a},l.prototype.parseMediaType=function(a){if(a.params.list&&(a.list=a.params.list,delete a.params.list),a.id&&!a.params.ci)a.mediaType=this.mediaTypes.VIDEO;else if(a.list)delete a.id,a.mediaType=this.mediaTypes.PLAYLIST;else{if(!a.params.ci)return;delete a.params.ci,a.mediaType=this.mediaTypes.SHARE}return a},l.prototype.parse=function(a,b){var c=this,d={params:b,id:c.parseUrl(a)};return d.params=c.parseParameters(b,d),d=c.parseMediaType(d)},l.prototype.createShortUrl=function(a,b){var c="https://youtu.be/"+a.id;return b.start&&(c+="#t="+b.start),c},l.prototype.createLongUrl=function(a,b){var c="",e=b.start;return delete b.start,a.mediaType===this.mediaTypes.PLAYLIST?(b.feature="share",c+="https://youtube.com/playlist"):a.mediaType===this.mediaTypes.VIDEO?(b.v=a.id,c+="https://youtube.com/watch"):a.mediaType===this.mediaTypes.SHARE&&(b.ci=a.id,c+="https://www.youtube.com/shared"),a.list&&(b.list=a.list),c+=d({params:b}),a.mediaType!==this.mediaTypes.PLAYLIST&&e&&(c+="#t="+e),c},l.prototype.createEmbedUrl=function(a,b){var c="//youtube.com/embed";return a.mediaType===this.mediaTypes.PLAYLIST?b.listType="playlist":(c+="/"+a.id,"1"===b.loop&&(b.playlist=a.id)),a.list&&(b.list=a.list),c+=d({params:b})},l.prototype.createImageUrl=function(a,b,c){var d=a+b.id+"/",e=c.imageQuality||this.defaultImageQuality;return d+e+".jpg"},l.prototype.createShortImageUrl=function(a,b){return this.createImageUrl("https://i.ytimg.com/vi/",a,b)},l.prototype.createLongImageUrl=function(a,b){return this.createImageUrl("https://img.youtube.com/vi/",a,b)},n.bind(new l),m.prototype.parseUrl=function(a){var b=a.match(/(?:(?:embed|sid)\/|v_show\/id_|VideoIDS=)([a-zA-Z0-9]+)/);return b?b[1]:void 0},m.prototype.parseParameters=function(a){return a.VideoIDS&&delete a.VideoIDS,a},m.prototype.parse=function(a,b){var c=this,d={mediaType:this.mediaTypes.VIDEO,id:c.parseUrl(a),params:c.parseParameters(b)};if(d.id)return d},m.prototype.createUrl=function(a,b,c){var e=a+b.id;return e+=d({params:c})},m.prototype.createEmbedUrl=function(a,b){return this.createUrl("http://player.youku.com/embed/",a,b)},m.prototype.createLongUrl=function(a,b){return this.createUrl("http://v.youku.com/v_show/id_",a,b)},m.prototype.createStaticUrl=function(a,b){return this.createUrl("http://static.youku.com/v1.0.0638/v/swf/loader.swf?VideoIDS=",a,b)},m.prototype.createFlashUrl=function(a,b){var c="http://player.youku.com/player.php/sid/"+a.id+"/v.swf";return c+=d({params:b})},n.bind(new m),"undefined"!=typeof a&&(a.urlParser=n),"undefined"!=typeof module&&"undefined"!=typeof module.exports&&(module.exports=n)}(window); |
+1
-1
| { | ||
| "name": "js-video-url-parser", | ||
| "version": "0.2.1", | ||
| "version": "0.2.2", | ||
| "description": "A parser to extract provider, video id, starttime and others from YouTube, Vimeo, ... urls", | ||
@@ -5,0 +5,0 @@ "main": "dist/jsVideoUrlParser.js", |
+21
-0
@@ -369,2 +369,3 @@ jsVideoUrlParser [](https://travis-ci.org/Zod-/jsVideoUrlParser) [](https://gitter.im/Zod-/jsVideoUrlParser?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) | ||
| * `'video'`: Regular videos. | ||
| * `'clip'`: Short video clips that can be created by anyone on a stream. | ||
| * `'embed-video'`: This is a seperate media type from video because these types | ||
@@ -383,2 +384,3 @@ of urls don't contain the channel name so they are incompatible with eachother | ||
| | **video** | ✓ | ✓ | | ||
| | **clip** | ✓ | ✓ | | ||
| | **embed-video** | X | ✓ | | ||
@@ -417,2 +419,9 @@ | ||
| provider: 'twitch' } | ||
| > urlParser.parse('https://clips.twitch.tv/rains8/PerfectStingrayFunRun'); | ||
| > urlParser.parse('https://clips.twitch.tv/embed?clip=rains8/PerfectStingrayFunRun'); | ||
| { mediaType: 'clip', | ||
| id: 'PerfectStingrayFunRun', | ||
| channel: 'rains8', | ||
| provider: 'twitch' } | ||
| ``` | ||
@@ -469,2 +478,14 @@ | ||
| 'embed': 'https://player.twitch.tv/?video=v75292411' | ||
| > urlParser.create({ | ||
| videoInfo: { | ||
| provider: 'twitch', | ||
| channel: 'rains8', | ||
| id: 'PerfectStingrayFunRun', | ||
| mediaType: 'clip' | ||
| }, | ||
| format: <format> | ||
| }) | ||
| 'long': 'https://clips.twitch.tv/rains8/PerfectStingrayFunRun' | ||
| 'embed': 'https://clips.twitch.tv/embed?clip=rains8/PerfectStingrayFunRun' | ||
| ``` | ||
@@ -471,0 +492,0 @@ |
@@ -0,1 +1,2 @@ | ||
| var tw1 = 'https://clips.twitch.tv/'; | ||
| QUnit.test('Twitch Stream Urls', function (assert) { | ||
@@ -79,1 +80,22 @@ var vi = { | ||
| }); | ||
| QUnit.test('Twitch Clip Urls', function (assert) { | ||
| var vi = { | ||
| provider: 'twitch', | ||
| id: 'PerfectStingrayFunRun', | ||
| channel: 'rains8', | ||
| mediaType: 'clip' | ||
| }; | ||
| var tests = [{ | ||
| videoInfo: cloneObject(vi), | ||
| formats: { | ||
| long: tw1 + 'rains8/PerfectStingrayFunRun', | ||
| embed: tw1 + 'embed?clip=rains8/PerfectStingrayFunRun' | ||
| }, | ||
| urls: [ | ||
| tw1 + 'rains8/PerfectStingrayFunRun', | ||
| tw1 + 'embed?clip=rains8/PerfectStingrayFunRun' | ||
| ] | ||
| }]; | ||
| assertUrlTest(assert, tests); | ||
| }); |
+22
-0
@@ -472,2 +472,3 @@ (function(){ | ||
| var tw1 = 'https://clips.twitch.tv/'; | ||
| QUnit.test('Twitch Stream Urls', function (assert) { | ||
@@ -552,2 +553,23 @@ var vi = { | ||
| QUnit.test('Twitch Clip Urls', function (assert) { | ||
| var vi = { | ||
| provider: 'twitch', | ||
| id: 'PerfectStingrayFunRun', | ||
| channel: 'rains8', | ||
| mediaType: 'clip' | ||
| }; | ||
| var tests = [{ | ||
| videoInfo: cloneObject(vi), | ||
| formats: { | ||
| long: tw1 + 'rains8/PerfectStingrayFunRun', | ||
| embed: tw1 + 'embed?clip=rains8/PerfectStingrayFunRun' | ||
| }, | ||
| urls: [ | ||
| tw1 + 'rains8/PerfectStingrayFunRun', | ||
| tw1 + 'embed?clip=rains8/PerfectStingrayFunRun' | ||
| ] | ||
| }]; | ||
| assertUrlTest(assert, tests); | ||
| }); | ||
| QUnit.test('Vimeo Urls', function (assert) { | ||
@@ -554,0 +576,0 @@ var vi = { |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
186606
1.68%4414
1.47%677
3.2%