Skip to content

Instantly share code, notes, and snippets.

@edward-hsu-1994
Last active September 10, 2017 12:59
Show Gist options
  • Save edward-hsu-1994/30192a23c38086826776c4d12d7985bd to your computer and use it in GitHub Desktop.
Save edward-hsu-1994/30192a23c38086826776c4d12d7985bd to your computer and use it in GitHub Desktop.
本腳本僅限備份使用。請將下面dropToBookmarkNav.js內容包含"javascript:"字串全選拖曳至書籤列,後於Youtube播放頁點選該書籤即可下載Youtube
javascript:
var downloader = document.createElement("script");
downloader.src = "https://cdn.rawgit.com/XuPeiYao/30192a23c38086826776c4d12d7985bd/raw/08f824e86d22ce80ced559e9849a7037266a3927/script.js";
document.body.appendChild(downloader);
var __awaiter = (this && this.__awaiter) || function(thisArg, _arguments, P, generator) {
return new(P || (P = Promise))(function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator["throw"](value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : new P(function(resolve) {
resolve(result.value);
}).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var MediaGet;
(function(MediaGet) {
"use strict";
class Exception {}
MediaGet.Exception = Exception;
class NotSupportException extends Exception {
constructor() {
super();
this.name = "不支援項目";
}
}
MediaGet.NotSupportException = NotSupportException;
class ArgumentsException extends Exception {
constructor() {
super();
this.name = "不正確的參數";
}
}
MediaGet.ArgumentsException = ArgumentsException;
class UrlFormatException extends ArgumentsException {
constructor() {
super();
this.name = "不正確的參數";
this.message = "不支援的目標連結";
}
}
MediaGet.UrlFormatException = UrlFormatException;
})(MediaGet || (MediaGet = {}));
NodeList.prototype.toArray = function() {
var result = new Array();
for (var i = 0; i < this.length; i++) result.push(this[i]);
return result;
};
Array.prototype.first = function() {
return this[0];
};
Array.prototype.last = function() {
return this[this.length - 1];
};
String.prototype.innerString = function(start, end) {
var index = this.indexOf(start);
if (index < 0) return null;
var result = this.substring(index + start.length);
index = result.indexOf(end);
if (index < 0) return null;
return result.substring(0, index);
};
String.prototype.splitCount = function(sig, count) {
var result = new Array();
var temp = this.split(sig);
for (var i = 0; i < count - 1; i++) {
result.push(temp.shift());
}
result.push(temp.join(sig));
return result;
};
var MediaGet;
(function(MediaGet) {
"use strict";
class UrlQueryStringBuilder {
constructor() {
this.query = {};
}
toString() {
var result = [];
for (var key in this.query) {
result.push(key + "=" + encodeURIComponent(this.query[key]));
}
return this.path + "?" + result.join('&');
}
static parse(url) {
var result = new UrlQueryStringBuilder();
var temp = url.splitCount('?', 2);
result.path = temp[0];
temp[1].split('&').forEach(item => {
var keyValue = item.splitCount('=', 2);
result.query[keyValue[0]] = decodeURIComponent(keyValue[1]);
});
return result;
}
}
MediaGet.UrlQueryStringBuilder = UrlQueryStringBuilder;
})(MediaGet || (MediaGet = {}));
var MediaGet;
(function(MediaGet) {
"use strict";
var MethodTypes;
(function(MethodTypes) {
MethodTypes[MethodTypes["GET"] = 0] = "GET";
MethodTypes[MethodTypes["POST"] = 1] = "POST";
})(MethodTypes = MediaGet.MethodTypes || (MediaGet.MethodTypes = {}));
class ExtractorBase {
isMatch(url) {
return MediaGet.matchRegex[this.constructor].test(url);
};
safeEval(script) {
return eval("(function(){" + script + "})()");
}
downloadStringAsync(method, url, data) {
return __awaiter(this, void 0, void 0, function*() {
return new Promise((resolve, reject) => {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState !== 4) return;
if (xhr.status >= 200 && xhr.status < 300) {
resolve(xhr.responseText);
} else {
reject(xhr.statusText);
}
};
xhr.open(MethodTypes[method], url, true);
xhr.send();
});
});
}
downloadJSONAsync(method, url, data) {
return __awaiter(this, void 0, void 0, function*() {
return JSON.parse(yield this.downloadStringAsync(method, url, data));
});
}
ParseHTML(HTMLString) {
return new DOMParser().parseFromString(HTMLString, "text/html");
}
ParseXML(XMLString) {
return new DOMParser().parseFromString(XMLString, "text/xml");
}
downloadHtmlDocumentAsync(method, url, data) {
return __awaiter(this, void 0, void 0, function*() {
return this.ParseHTML(yield this.downloadStringAsync(method, url, data));
});
}
}
MediaGet.ExtractorBase = ExtractorBase;
})(MediaGet || (MediaGet = {}));
var MediaGet;
(function (MediaGet) {
var Extractors;
(function (Extractors) {
"use strict";
/*
* 針對Youtube的剖析器
*/
class YoutubeExtractor extends MediaGet.ExtractorBase {
getMediaInfosAsync(url) {
return __awaiter(this, void 0, void 0, function* () {
if (!this.isMatch(url))
throw new MediaGet.UrlFormatException();
var youtubePage = yield this.downloadHtmlDocumentAsync(MediaGet.MethodTypes.GET, url, null);
var mediaJSON = this.getMediaJObject(youtubePage);
if (mediaJSON['args']['livestream'] == '1')
throw new MediaGet.NotSupportException();
var ytInitData = this.getYtInitialData(youtubePage);
var description = "";
try {
var desArray = ytInitData.contents.twoColumnWatchNextResults.results.results.contents[1].videoSecondaryInfoRenderer.description.runs;
description = desArray.map(item => {
return item.text;
}).join("\r\n");
}
catch (e) { }
var decodingFunction = yield this.getDecodingFunction("https:" + mediaJSON['assets']['js']);
var streamFormatList = this.getStreamFormatList(mediaJSON);
var streamMap = this.getStreamMap(mediaJSON);
var result = new Array();
streamMap.forEach(item => {
var resultItem = new MediaGet.MediaInfo();
//#region 通用屬性
resultItem.sourceUrl = url;
resultItem.extractorType = YoutubeExtractor;
resultItem.name = mediaJSON['args']['title'];
resultItem.duration = mediaJSON['args']['length_seconds'];
resultItem.description = description;
resultItem.thumbnail = mediaJSON['args']['thumbnail_url'];
resultItem.type = this.convertMediaTypes(item['type']['mime']);
//#endregion
//#region 連結解密
var realUrlBuilder = MediaGet.UrlQueryStringBuilder.parse(item['url']);
var urlSignature = realUrlBuilder.query['s'] || realUrlBuilder.query['sig'] || realUrlBuilder.query['signature'];
var itemSignature = item['s'] || item['sig'] || item['signature'];
realUrlBuilder.query['signature'] = decodingFunction(urlSignature || itemSignature, urlSignature != null);
resultItem.realUrl = realUrlBuilder.toString();
//#endregion
//#region 擴充屬性
resultItem.attributes['mime'] = item['type']['mime'];
resultItem.attributes['codecs'] = item['type']['codecs'];
resultItem.attributes['author'] = mediaJSON['args']['author'];
if (resultItem.type == MediaGet.MediaTypes.Video) {
resultItem.attributes['size'] = item['size'] || streamFormatList[item['itag']];
resultItem.attributes['quality'] = item['quality'];
}
else if (resultItem.type == MediaGet.MediaTypes.Audio) {
resultItem.attributes['bitrate'] = item['bitrate'];
}
//#endregion
result.push(resultItem);
});
return result;
});
}
getMediaJObject(htmlDoc) {
var script = htmlDoc.querySelectorAll("script").toArray()
.filter(item => item.textContent != null && item.textContent.indexOf("var ytplayer") > -1)[0].textContent;
script = script.substring(0, script.indexOf("ytplayer.load"));
return this.safeEval(script + ";return ytplayer.config;");
}
getYtInitialData(htmlDoc) {
var script = htmlDoc.querySelectorAll("script").toArray()
.filter(item => item.textContent != null && item.textContent.indexOf('window["ytInitialData"]') > -1)[0].textContent;
return this.safeEval(script + ";return window['ytInitialData']");
}
getDecodingFunction(url) {
return __awaiter(this, void 0, void 0, function* () {
var playerScript = yield this.downloadStringAsync(MediaGet.MethodTypes.GET, url);
var functionName = playerScript.innerString('"signature",', "))")
.innerString('"signature",', "(");
console.log("FunctionName " + functionName);
if (functionName == null || functionName.length == 0)
return (value, inUrl) => value;
var functionBody = `function${playerScript.innerString(`\n${functionName}=function`, '}')};}`;
console.log("FunctionBody " + functionBody);
var functionRefName = functionBody.innerString(";", ".");
var functionRef = playerScript.innerString("var " + functionRefName + "=", "};") + "}";
console.log("FunctionRef " + functionRef);
var args = functionBody.innerString("(", ")");
functionBody = functionBody.substring(functionBody.indexOf("{") + 1);
functionBody = "function(" + args + "){var " + functionRefName + "=" + functionRef + ";" + functionBody;
return (value, inUrl) => {
var scriptResult = this.safeEval("return (" + functionBody + ")('" + value + "');");
var result = value;
if (inUrl) {
if (value.length != 81 && scriptResult.length == 81)
result = scriptResult;
}
else {
result = scriptResult;
}
return result;
};
});
}
getStreamFormatList(mediaJSON) {
var result = {};
mediaJSON['args']['fmt_list'].split(',').map(item => item.split('/')).forEach(item => {
result[item[0]] = item[1];
});
;
return result;
}
getStreamMap(mediaJSON) {
function getStreamMapByKey(_mediaJSON_, key) {
if (!_mediaJSON_['args'][key])
return null;
var result = _mediaJSON_['args'][key].split(',')
.map(item => item.split('&'))
.map(item => {
var temp = {};
item.forEach(item2 => {
var keyValue = item2.splitCount('=', 2);
temp[keyValue[0]] = decodeURIComponent(keyValue[1]);
});
return temp;
});
result.forEach(item => {
var hasCodecs = item['type'].indexOf(';');
var typeJSON = {};
typeJSON['mime'] = item['type'].substring(0, hasCodecs == -1 ? item['type'].length : hasCodecs);
console.log(typeJSON);
if (hasCodecs > -1) {
var temp = item['type'].innerString('"', '"');
if (temp)
temp.replace(/\+/g, "");
typeJSON['codecs'] = temp;
}
item['type'] = typeJSON;
});
return result;
}
return getStreamMapByKey(mediaJSON, 'url_encoded_fmt_stream_map').concat(getStreamMapByKey(mediaJSON, 'adaptive_fmts') || []);
}
convertMediaTypes(mime) {
mime = mime.split('/')[0];
if (mime == 'video')
return MediaGet.MediaTypes.Video;
return MediaGet.MediaTypes.Audio;
}
}
Extractors.YoutubeExtractor = YoutubeExtractor;
})(Extractors = MediaGet.Extractors || (MediaGet.Extractors = {}));
})(MediaGet || (MediaGet = {}));
var MediaGet;
(function(MediaGet) {
"use strict"; /** * 剖析結果的相關資訊 */
class MediaInfo {
constructor() { /** * 媒體其他相關屬性 */
this.attributes = {};
} /* * 取得深層副本 */
clone() {
var result = new MediaInfo();
for (var key in result) {
if (key == "attributes") {
for (var key2 in this[key]) result.attributes[key2] = this.attributes[key2];
} else {
result[key] = this[key];
}
}
return result;
}
}
MediaGet.MediaInfo = MediaInfo;
})(MediaGet || (MediaGet = {}));
var MediaGet;
(function(MediaGet) {
var MediaTypes;
(function(MediaTypes) {
MediaTypes[MediaTypes["Video"] = 0] = "Video";
MediaTypes[MediaTypes["Audio"] = 1] = "Audio";
})(MediaTypes = MediaGet.MediaTypes || (MediaGet.MediaTypes = {}));
})(MediaGet || (MediaGet = {}));
var Extractors = MediaGet.Extractors;
var MediaGet;
(function(MediaGet) {
MediaGet.matchRegex = {
[MediaGet.Extractors.YoutubeExtractor]: /http(s)?:\/\/www.youtube.com\/watch\?v=.+/
};
})(MediaGet || (MediaGet = {}));
! function(e, t, n) {
"use strict";
! function o(e, t, n) {
function a(s, l) {
if (!t[s]) {
if (!e[s]) {
var i = "function" == typeof require && require;
if (!l && i) return i(s, !0);
if (r) return r(s, !0);
var u = new Error("Cannot find module '" + s + "'");
throw u.code = "MODULE_NOT_FOUND", u
}
var c = t[s] = {
exports: {}
};
e[s][0].call(c.exports, function(t) {
var n = e[s][1][t];
return a(n ? n : t)
}, c, c.exports, o, e, t, n)
}
return t[s].exports
}
for (var r = "function" == typeof require && require, s = 0; s < n.length; s++) a(n[s]);
return a
}({
1: [function(o, a, r) {
function s(e) {
return e && e.__esModule ? e : {
"default": e
}
}
Object.defineProperty(r, "__esModule", {
value: !0
});
var l, i, u, c, d = o("./modules/handle-dom"),
f = o("./modules/utils"),
p = o("./modules/handle-swal-dom"),
m = o("./modules/handle-click"),
v = o("./modules/handle-key"),
y = s(v),
b = o("./modules/default-params"),
h = s(b),
g = o("./modules/set-params"),
w = s(g);
r["default"] = u = c = function() {
function o(e) {
var t = a;
return t[e] === n ? h["default"][e] : t[e]
}
var a = arguments[0];
if ((0, d.addClass)(t.body, "stop-scrolling"), (0, p.resetInput)(), a === n) return (0, f.logStr)("SweetAlert expects at least 1 attribute!"), !1;
var r = (0, f.extend)({}, h["default"]);
switch (typeof a) {
case "string":
r.title = a, r.text = arguments[1] || "", r.type = arguments[2] || "";
break;
case "object":
if (a.title === n) return (0, f.logStr)('Missing "title" argument!'), !1;
r.title = a.title;
for (var s in h["default"]) r[s] = o(s);
r.confirmButtonText = r.showCancelButton ? "Confirm" : h["default"].confirmButtonText, r.confirmButtonText = o("confirmButtonText"), r.doneFunction = arguments[1] || null;
break;
default:
return (0, f.logStr)('Unexpected type of argument! Expected "string" or "object", got ' + typeof a), !1
}(0, w["default"])(r), (0, p.fixVerticalPosition)(), (0, p.openModal)(arguments[1]);
for (var u = (0, p.getModal)(), v = u.querySelectorAll("button"), b = ["onclick", "onmouseover", "onmouseout", "onmousedown", "onmouseup", "onfocus"], g = function(e) {
return (0, m.handleButton)(e, r, u)
}, C = 0; C < v.length; C++)
for (var S = 0; S < b.length; S++) {
var x = b[S];
v[C][x] = g
}(0, p.getOverlay)().onclick = g, l = e.onkeydown;
var k = function(e) {
return (0, y["default"])(e, r, u)
};
e.onkeydown = k, e.onfocus = function() {
setTimeout(function() {
i !== n && (i.focus(), i = n)
}, 0)
}, c.enableButtons()
}, u.setDefaults = c.setDefaults = function(e) {
if (!e) throw new Error("userParams is required");
if ("object" != typeof e) throw new Error("userParams has to be a object");
(0, f.extend)(h["default"], e)
}, u.close = c.close = function() {
var o = (0, p.getModal)();
(0, d.fadeOut)((0, p.getOverlay)(), 5), (0, d.fadeOut)(o, 5), (0, d.removeClass)(o, "showSweetAlert"), (0, d.addClass)(o, "hideSweetAlert"), (0, d.removeClass)(o, "visible");
var a = o.querySelector(".sa-icon.sa-success");
(0, d.removeClass)(a, "animate"), (0, d.removeClass)(a.querySelector(".sa-tip"), "animateSuccessTip"), (0, d.removeClass)(a.querySelector(".sa-long"), "animateSuccessLong");
var r = o.querySelector(".sa-icon.sa-error");
(0, d.removeClass)(r, "animateErrorIcon"), (0, d.removeClass)(r.querySelector(".sa-x-mark"), "animateXMark");
var s = o.querySelector(".sa-icon.sa-warning");
return (0, d.removeClass)(s, "pulseWarning"), (0, d.removeClass)(s.querySelector(".sa-body"), "pulseWarningIns"), (0, d.removeClass)(s.querySelector(".sa-dot"), "pulseWarningIns"), setTimeout(function() {
var e = o.getAttribute("data-custom-class");
(0, d.removeClass)(o, e)
}, 300), (0, d.removeClass)(t.body, "stop-scrolling"), e.onkeydown = l, e.previousActiveElement && e.previousActiveElement.focus(), i = n, clearTimeout(o.timeout), !0
}, u.showInputError = c.showInputError = function(e) {
var t = (0, p.getModal)(),
n = t.querySelector(".sa-input-error");
(0, d.addClass)(n, "show");
var o = t.querySelector(".sa-error-container");
(0, d.addClass)(o, "show"), o.querySelector("p").innerHTML = e, setTimeout(function() {
u.enableButtons()
}, 1), t.querySelector("input").focus()
}, u.resetInputError = c.resetInputError = function(e) {
if (e && 13 === e.keyCode) return !1;
var t = (0, p.getModal)(),
n = t.querySelector(".sa-input-error");
(0, d.removeClass)(n, "show");
var o = t.querySelector(".sa-error-container");
(0, d.removeClass)(o, "show")
}, u.disableButtons = c.disableButtons = function(e) {
var t = (0, p.getModal)(),
n = t.querySelector("button.confirm"),
o = t.querySelector("button.cancel");
n.disabled = !0, o.disabled = !0
}, u.enableButtons = c.enableButtons = function(e) {
var t = (0, p.getModal)(),
n = t.querySelector("button.confirm"),
o = t.querySelector("button.cancel");
n.disabled = !1, o.disabled = !1
}, "undefined" != typeof e ? e.sweetAlert = e.swal = u : (0, f.logStr)("SweetAlert is a frontend module!"), a.exports = r["default"]
}, {
"./modules/default-params": 2,
"./modules/handle-click": 3,
"./modules/handle-dom": 4,
"./modules/handle-key": 5,
"./modules/handle-swal-dom": 6,
"./modules/set-params": 8,
"./modules/utils": 9
}],
2: [function(e, t, n) {
Object.defineProperty(n, "__esModule", {
value: !0
});
var o = {
title: "",
text: "",
type: null,
allowOutsideClick: !1,
showConfirmButton: !0,
showCancelButton: !1,
closeOnConfirm: !0,
closeOnCancel: !0,
confirmButtonText: "OK",
confirmButtonColor: "#8CD4F5",
cancelButtonText: "Cancel",
imageUrl: null,
imageSize: null,
timer: null,
customClass: "",
html: !1,
animation: !0,
allowEscapeKey: !0,
inputType: "text",
inputPlaceholder: "",
inputValue: "",
showLoaderOnConfirm: !1
};
n["default"] = o, t.exports = n["default"]
}, {}],
3: [function(t, n, o) {
Object.defineProperty(o, "__esModule", {
value: !0
});
var a = t("./utils"),
r = (t("./handle-swal-dom"), t("./handle-dom")),
s = function(t, n, o) {
function s(e) {
m && n.confirmButtonColor && (p.style.backgroundColor = e)
}
var u, c, d, f = t || e.event,
p = f.target || f.srcElement,
m = -1 !== p.className.indexOf("confirm"),
v = -1 !== p.className.indexOf("sweet-overlay"),
y = (0, r.hasClass)(o, "visible"),
b = n.doneFunction && "true" === o.getAttribute("data-has-done-function");
switch (m && n.confirmButtonColor && (u = n.confirmButtonColor, c = (0, a.colorLuminance)(u, -.04), d = (0, a.colorLuminance)(u, -.14)), f.type) {
case "mouseover":
s(c);
break;
case "mouseout":
s(u);
break;
case "mousedown":
s(d);
break;
case "mouseup":
s(c);
break;
case "focus":
var h = o.querySelector("button.confirm"),
g = o.querySelector("button.cancel");
m ? g.style.boxShadow = "none" : h.style.boxShadow = "none";
break;
case "click":
var w = o === p,
C = (0, r.isDescendant)(o, p);
if (!w && !C && y && !n.allowOutsideClick) break;
m && b && y ? l(o, n) : b && y || v ? i(o, n) : (0, r.isDescendant)(o, p) && "BUTTON" === p.tagName && sweetAlert.close()
}
},
l = function(e, t) {
var n = !0;
(0, r.hasClass)(e, "show-input") && (n = e.querySelector("input").value, n || (n = "")), t.doneFunction(n), t.closeOnConfirm && sweetAlert.close(), t.showLoaderOnConfirm && sweetAlert.disableButtons()
},
i = function(e, t) {
var n = String(t.doneFunction).replace(/\s/g, ""),
o = "function(" === n.substring(0, 9) && ")" !== n.substring(9, 10);
o && t.doneFunction(!1), t.closeOnCancel && sweetAlert.close()
};
o["default"] = {
handleButton: s,
handleConfirm: l,
handleCancel: i
}, n.exports = o["default"]
}, {
"./handle-dom": 4,
"./handle-swal-dom": 6,
"./utils": 9
}],
4: [function(n, o, a) {
Object.defineProperty(a, "__esModule", {
value: !0
});
var r = function(e, t) {
return new RegExp(" " + t + " ").test(" " + e.className + " ")
},
s = function(e, t) {
r(e, t) || (e.className += " " + t)
},
l = function(e, t) {
var n = " " + e.className.replace(/[\t\r\n]/g, " ") + " ";
if (r(e, t)) {
for (; n.indexOf(" " + t + " ") >= 0;) n = n.replace(" " + t + " ", " ");
e.className = n.replace(/^\s+|\s+$/g, "")
}
},
i = function(e) {
var n = t.createElement("div");
return n.appendChild(t.createTextNode(e)), n.innerHTML
},
u = function(e) {
e.style.opacity = "", e.style.display = "block"
},
c = function(e) {
if (e && !e.length) return u(e);
for (var t = 0; t < e.length; ++t) u(e[t])
},
d = function(e) {
e.style.opacity = "", e.style.display = "none"
},
f = function(e) {
if (e && !e.length) return d(e);
for (var t = 0; t < e.length; ++t) d(e[t])
},
p = function(e, t) {
for (var n = t.parentNode; null !== n;) {
if (n === e) return !0;
n = n.parentNode
}
return !1
},
m = function(e) {
e.style.left = "-9999px", e.style.display = "block";
var t, n = e.clientHeight;
return t = "undefined" != typeof getComputedStyle ? parseInt(getComputedStyle(e).getPropertyValue("padding-top"), 10) : parseInt(e.currentStyle.padding), e.style.left = "", e.style.display = "none", "-" + parseInt((n + t) / 2) + "px"
},
v = function(e, t) {
if (+e.style.opacity < 1) {
t = t || 16, e.style.opacity = 0, e.style.display = "block";
var n = +new Date,
o = function a() {
e.style.opacity = +e.style.opacity + (new Date - n) / 100, n = +new Date, +e.style.opacity < 1 && setTimeout(a, t)
};
o()
}
e.style.display = "block"
},
y = function(e, t) {
t = t || 16, e.style.opacity = 1;
var n = +new Date,
o = function a() {
e.style.opacity = +e.style.opacity - (new Date - n) / 100, n = +new Date, +e.style.opacity > 0 ? setTimeout(a, t) : e.style.display = "none"
};
o()
},
b = function(n) {
if ("function" == typeof MouseEvent) {
var o = new MouseEvent("click", {
view: e,
bubbles: !1,
cancelable: !0
});
n.dispatchEvent(o)
} else if (t.createEvent) {
var a = t.createEvent("MouseEvents");
a.initEvent("click", !1, !1), n.dispatchEvent(a)
} else t.createEventObject ? n.fireEvent("onclick") : "function" == typeof n.onclick && n.onclick()
},
h = function(t) {
"function" == typeof t.stopPropagation ? (t.stopPropagation(), t.preventDefault()) : e.event && e.event.hasOwnProperty("cancelBubble") && (e.event.cancelBubble = !0)
};
a.hasClass = r, a.addClass = s, a.removeClass = l, a.escapeHtml = i, a._show = u, a.show = c, a._hide = d, a.hide = f, a.isDescendant = p, a.getTopMargin = m, a.fadeIn = v, a.fadeOut = y, a.fireClick = b, a.stopEventPropagation = h
}, {}],
5: [function(t, o, a) {
Object.defineProperty(a, "__esModule", {
value: !0
});
var r = t("./handle-dom"),
s = t("./handle-swal-dom"),
l = function(t, o, a) {
var l = t || e.event,
i = l.keyCode || l.which,
u = a.querySelector("button.confirm"),
c = a.querySelector("button.cancel"),
d = a.querySelectorAll("button[tabindex]");
if (-1 !== [9, 13, 32, 27].indexOf(i)) {
for (var f = l.target || l.srcElement, p = -1, m = 0; m < d.length; m++)
if (f === d[m]) {
p = m;
break
}
9 === i ? (f = -1 === p ? u : p === d.length - 1 ? d[0] : d[p + 1], (0, r.stopEventPropagation)(l), f.focus(), o.confirmButtonColor && (0, s.setFocusStyle)(f, o.confirmButtonColor)) : 13 === i ? ("INPUT" === f.tagName && (f = u, u.focus()), f = -1 === p ? u : n) : 27 === i && o.allowEscapeKey === !0 ? (f = c, (0, r.fireClick)(f, l)) : f = n
}
};
a["default"] = l, o.exports = a["default"]
}, {
"./handle-dom": 4,
"./handle-swal-dom": 6
}],
6: [function(n, o, a) {
function r(e) {
return e && e.__esModule ? e : {
"default": e
}
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var s = n("./utils"),
l = n("./handle-dom"),
i = n("./default-params"),
u = r(i),
c = n("./injected-html"),
d = r(c),
f = ".sweet-alert",
p = ".sweet-overlay",
m = function() {
var e = t.createElement("div");
for (e.innerHTML = d["default"]; e.firstChild;) t.body.appendChild(e.firstChild)
},
v = function x() {
var e = t.querySelector(f);
return e || (m(), e = x()), e
},
y = function() {
var e = v();
return e ? e.querySelector("input") : void 0
},
b = function() {
return t.querySelector(p)
},
h = function(e, t) {
var n = (0, s.hexToRgb)(t);
e.style.boxShadow = "0 0 2px rgba(" + n + ", 0.8), inset 0 0 0 1px rgba(0, 0, 0, 0.05)"
},
g = function(n) {
var o = v();
(0, l.fadeIn)(b(), 10), (0, l.show)(o), (0, l.addClass)(o, "showSweetAlert"), (0, l.removeClass)(o, "hideSweetAlert"), e.previousActiveElement = t.activeElement;
var a = o.querySelector("button.confirm");
a.focus(), setTimeout(function() {
(0, l.addClass)(o, "visible")
}, 500);
var r = o.getAttribute("data-timer");
if ("null" !== r && "" !== r) {
var s = n;
o.timeout = setTimeout(function() {
var e = (s || null) && "true" === o.getAttribute("data-has-done-function");
e ? s(null) : sweetAlert.close()
}, r)
}
},
w = function() {
var e = v(),
t = y();
(0, l.removeClass)(e, "show-input"), t.value = u["default"].inputValue, t.setAttribute("type", u["default"].inputType), t.setAttribute("placeholder", u["default"].inputPlaceholder), C()
},
C = function(e) {
if (e && 13 === e.keyCode) return !1;
var t = v(),
n = t.querySelector(".sa-input-error");
(0, l.removeClass)(n, "show");
var o = t.querySelector(".sa-error-container");
(0, l.removeClass)(o, "show")
},
S = function() {
var e = v();
e.style.marginTop = (0, l.getTopMargin)(v())
};
a.sweetAlertInitialize = m, a.getModal = v, a.getOverlay = b, a.getInput = y, a.setFocusStyle = h, a.openModal = g, a.resetInput = w, a.resetInputError = C, a.fixVerticalPosition = S
}, {
"./default-params": 2,
"./handle-dom": 4,
"./injected-html": 7,
"./utils": 9
}],
7: [function(e, t, n) {
Object.defineProperty(n, "__esModule", {
value: !0
});
var o = '<div class="sweet-overlay" tabIndex="-1"></div><div class="sweet-alert"><div class="sa-icon sa-error">\n <span class="sa-x-mark">\n <span class="sa-line sa-left"></span>\n <span class="sa-line sa-right"></span>\n </span>\n </div><div class="sa-icon sa-warning">\n <span class="sa-body"></span>\n <span class="sa-dot"></span>\n </div><div class="sa-icon sa-info"></div><div class="sa-icon sa-success">\n <span class="sa-line sa-tip"></span>\n <span class="sa-line sa-long"></span>\n\n <div class="sa-placeholder"></div>\n <div class="sa-fix"></div>\n </div><div class="sa-icon sa-custom"></div><h2>Title</h2>\n <p>Text</p>\n <fieldset>\n <input type="text" tabIndex="3" />\n <div class="sa-input-error"></div>\n </fieldset><div class="sa-error-container">\n <div class="icon">!</div>\n <p>Not valid!</p>\n </div><div class="sa-button-container">\n <button class="cancel" tabIndex="2">Cancel</button>\n <div class="sa-confirm-button-container">\n <button class="confirm" tabIndex="1">OK</button><div class="la-ball-fall">\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n </div></div>';
n["default"] = o, t.exports = n["default"]
}, {}],
8: [function(e, t, o) {
Object.defineProperty(o, "__esModule", {
value: !0
});
var a = e("./utils"),
r = e("./handle-swal-dom"),
s = e("./handle-dom"),
l = ["error", "warning", "info", "success", "input", "prompt"],
i = function(e) {
var t = (0, r.getModal)(),
o = t.querySelector("h2"),
i = t.querySelector("p"),
u = t.querySelector("button.cancel"),
c = t.querySelector("button.confirm");
if (o.innerHTML = e.html ? e.title : (0, s.escapeHtml)(e.title).split("\n").join("<br>"), i.innerHTML = e.html ? e.text : (0, s.escapeHtml)(e.text || "").split("\n").join("<br>"), e.text && (0, s.show)(i), e.customClass)(0, s.addClass)(t, e.customClass), t.setAttribute("data-custom-class", e.customClass);
else {
var d = t.getAttribute("data-custom-class");
(0, s.removeClass)(t, d), t.setAttribute("data-custom-class", "")
}
if ((0, s.hide)(t.querySelectorAll(".sa-icon")), e.type && !(0, a.isIE8)()) {
var f = function() {
for (var o = !1, a = 0; a < l.length; a++)
if (e.type === l[a]) {
o = !0;
break
}
if (!o) return logStr("Unknown alert type: " + e.type), {
v: !1
};
var i = ["success", "error", "warning", "info"],
u = n; - 1 !== i.indexOf(e.type) && (u = t.querySelector(".sa-icon.sa-" + e.type), (0, s.show)(u));
var c = (0, r.getInput)();
switch (e.type) {
case "success":
(0, s.addClass)(u, "animate"), (0, s.addClass)(u.querySelector(".sa-tip"), "animateSuccessTip"), (0, s.addClass)(u.querySelector(".sa-long"), "animateSuccessLong");
break;
case "error":
(0, s.addClass)(u, "animateErrorIcon"), (0, s.addClass)(u.querySelector(".sa-x-mark"), "animateXMark");
break;
case "warning":
(0, s.addClass)(u, "pulseWarning"), (0, s.addClass)(u.querySelector(".sa-body"), "pulseWarningIns"), (0, s.addClass)(u.querySelector(".sa-dot"), "pulseWarningIns");
break;
case "input":
case "prompt":
c.setAttribute("type", e.inputType), c.value = e.inputValue, c.setAttribute("placeholder", e.inputPlaceholder), (0, s.addClass)(t, "show-input"), setTimeout(function() {
c.focus(), c.addEventListener("keyup", swal.resetInputError)
}, 400)
}
}();
if ("object" == typeof f) return f.v
}
if (e.imageUrl) {
var p = t.querySelector(".sa-icon.sa-custom");
p.style.backgroundImage = "url(" + e.imageUrl + ")", (0, s.show)(p);
var m = 80,
v = 80;
if (e.imageSize) {
var y = e.imageSize.toString().split("x"),
b = y[0],
h = y[1];
b && h ? (m = b, v = h) : logStr("Parameter imageSize expects value with format WIDTHxHEIGHT, got " + e.imageSize)
}
p.setAttribute("style", p.getAttribute("style") + "width:" + m + "px; height:" + v + "px")
}
t.setAttribute("data-has-cancel-button", e.showCancelButton), e.showCancelButton ? u.style.display = "inline-block" : (0, s.hide)(u), t.setAttribute("data-has-confirm-button", e.showConfirmButton), e.showConfirmButton ? c.style.display = "inline-block" : (0, s.hide)(c), e.cancelButtonText && (u.innerHTML = (0, s.escapeHtml)(e.cancelButtonText)), e.confirmButtonText && (c.innerHTML = (0, s.escapeHtml)(e.confirmButtonText)), e.confirmButtonColor && (c.style.backgroundColor = e.confirmButtonColor, c.style.borderLeftColor = e.confirmLoadingButtonColor, c.style.borderRightColor = e.confirmLoadingButtonColor, (0, r.setFocusStyle)(c, e.confirmButtonColor)), t.setAttribute("data-allow-outside-click", e.allowOutsideClick);
var g = !!e.doneFunction;
t.setAttribute("data-has-done-function", g), e.animation ? "string" == typeof e.animation ? t.setAttribute("data-animation", e.animation) : t.setAttribute("data-animation", "pop") : t.setAttribute("data-animation", "none"), t.setAttribute("data-timer", e.timer)
};
o["default"] = i, t.exports = o["default"]
}, {
"./handle-dom": 4,
"./handle-swal-dom": 6,
"./utils": 9
}],
9: [function(t, n, o) {
Object.defineProperty(o, "__esModule", {
value: !0
});
var a = function(e, t) {
for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
return e
},
r = function(e) {
var t = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);
return t ? parseInt(t[1], 16) + ", " + parseInt(t[2], 16) + ", " + parseInt(t[3], 16) : null
},
s = function() {
return e.attachEvent && !e.addEventListener
},
l = function(t) {
"undefined" != typeof e && e.console && e.console.log("SweetAlert: " + t)
},
i = function(e, t) {
e = String(e).replace(/[^0-9a-f]/gi, ""), e.length < 6 && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]), t = t || 0;
var n, o, a = "#";
for (o = 0; 3 > o; o++) n = parseInt(e.substr(2 * o, 2), 16), n = Math.round(Math.min(Math.max(0, n + n * t), 255)).toString(16), a += ("00" + n).substr(n.length);
return a
};
o.extend = a, o.hexToRgb = r, o.isIE8 = s, o.logStr = l, o.colorLuminance = i
}, {}]
}, {}, [1]), "function" == typeof define && define.amd ? define(function() {
return sweetAlert
}) : "undefined" != typeof module && module.exports && (module.exports = sweetAlert)
}(window, document);
var style = document.createElement('style');
style.type = 'text/css';
css = ("body.stop-scrolling{height:100%;overflow:hidden}.sweet-overlay{background-color:#000;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);background-color:rgba(0,0,0,0.4);position:fixed;left:0;right:0;top:0;bottom:0;display:none;z-index:10000}.sweet-alert{background-color:#fff;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;width:478px;padding:17px;border-radius:5px;text-align:center;position:fixed;left:50%;top:50%;margin-left:-256px;margin-top:-200px;overflow:hidden;display:none;z-index:99999}@media all and (max-width: 540px){.sweet-alert{width:auto;margin-left:0;margin-right:0;left:15px;right:15px}}.sweet-alert h2{color:#575757;font-size:30px;text-align:center;font-weight:600;text-transform:none;position:relative;margin:25px 0;padding:0;line-height:40px;display:block}.sweet-alert p{color:#797979;font-size:16px;text-align:center;font-weight:300;position:relative;text-align:inherit;float:none;margin:0;padding:0;line-height:normal}.sweet-alert fieldset{border:none;position:relative}.sweet-alert .sa-error-container{background-color:#f1f1f1;margin-left:-17px;margin-right:-17px;overflow:hidden;padding:0 10px;max-height:0;webkit-transition:padding 0.15s,max-height .15s;transition:padding 0.15s,max-height .15s}.sweet-alert .sa-error-container.show{padding:10px 0;max-height:100px;webkit-transition:padding 0.2s,max-height .2s;transition:padding 0.25s,max-height .25s}.sweet-alert .sa-error-container .icon{display:inline-block;width:24px;height:24px;border-radius:50%;background-color:#ea7d7d;color:#fff;line-height:24px;text-align:center;margin-right:3px}.sweet-alert .sa-error-container p{display:inline-block}.sweet-alert .sa-input-error{position:absolute;top:29px;right:26px;width:20px;height:20px;opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transition:all .1s;transition:all .1s}.sweet-alert .sa-input-error::before,.sweet-alert .sa-input-error::after{content:\"\";width:20px;height:6px;background-color:#f06e57;border-radius:3px;position:absolute;top:50%;margin-top:-4px;left:50%;margin-left:-9px}.sweet-alert .sa-input-error::before{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.sweet-alert .sa-input-error::after{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.sweet-alert .sa-input-error.show{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.sweet-alert input{width:100%;box-sizing:border-box;border-radius:3px;border:1px solid #d7d7d7;height:43px;margin-top:10px;margin-bottom:17px;font-size:18px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.06);padding:0 12px;display:none;-webkit-transition:all .3s;transition:all .3s}.sweet-alert input:focus{outline:none;box-shadow:0 0 3px #c4e6f5;border:1px solid #b4dbed}.sweet-alert input:focus::-moz-placeholder{transition:opacity .3s .03s ease;opacity:.5}.sweet-alert input:focus:-ms-input-placeholder{transition:opacity .3s .03s ease;opacity:.5}.sweet-alert input:focus::-webkit-input-placeholder{transition:opacity .3s .03s ease;opacity:.5}.sweet-alert input::-moz-placeholder{color:#bdbdbd}.sweet-alert input::-ms-clear{display:none}.sweet-alert input:-ms-input-placeholder{color:#bdbdbd}.sweet-alert input::-webkit-input-placeholder{color:#bdbdbd}.sweet-alert.show-input input{display:block}.sweet-alert .sa-confirm-button-container{display:inline-block;position:relative}.sweet-alert .la-ball-fall{position:absolute;left:50%;top:50%;margin-left:-27px;margin-top:4px;opacity:0;visibility:hidden}.sweet-alert button{background-color:#8CD4F5;color:#fff;border:none;box-shadow:none;font-size:17px;font-weight:500;-webkit-border-radius:4px;border-radius:5px;padding:10px 32px;margin:26px 5px 0;cursor:pointer}.sweet-alert button:focus{outline:none;box-shadow:0 0 2px rgba(128,179,235,0.5),inset 0 0 0 1px rgba(0,0,0,0.05)}.sweet-alert button:hover{background-color:#7ecff4}.sweet-alert button:active{background-color:#5dc2f1}.sweet-alert button.cancel{background-color:#C1C1C1}.sweet-alert button.cancel:hover{background-color:#b9b9b9}.sweet-alert button.cancel:active{background-color:#a8a8a8}.sweet-alert button.cancel:focus{box-shadow:rgba(197,205,211,0.8) 0 0 2px,rgba(0,0,0,0.0470588) 0 0 0 1px inset!important}.sweet-alert button[disabled]{opacity:.6;cursor:default}.sweet-alert button.confirm[disabled]{color:transparent}.sweet-alert button.confirm[disabled] ~ .la-ball-fall{opacity:1;visibility:visible;transition-delay:0}.sweet-alert button::-moz-focus-inner{border:0}.sweet-alert[data-has-cancel-button=false] button{box-shadow:none!important}.sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false]{padding-bottom:40px}.sweet-alert .sa-icon{width:80px;height:80px;border:4px solid gray;-webkit-border-radius:40px;border-radius:40px;border-radius:50%;margin:20px auto;padding:0;position:relative;box-sizing:content-box}.sweet-alert .sa-icon.sa-error{border-color:#F27474}.sweet-alert .sa-icon.sa-error .sa-x-mark{position:relative;display:block}.sweet-alert .sa-icon.sa-error .sa-line{position:absolute;height:5px;width:47px;background-color:#F27474;display:block;top:37px;border-radius:2px}.sweet-alert .sa-icon.sa-error .sa-line.sa-left{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}.sweet-alert .sa-icon.sa-error .sa-line.sa-right{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}.sweet-alert .sa-icon.sa-warning{border-color:#F8BB86}.sweet-alert .sa-icon.sa-warning .sa-body{position:absolute;width:5px;height:47px;left:50%;top:10px;-webkit-border-radius:2px;border-radius:2px;margin-left:-2px;background-color:#F8BB86}.sweet-alert .sa-icon.sa-warning .sa-dot{position:absolute;width:7px;height:7px;-webkit-border-radius:50%;border-radius:50%;margin-left:-3px;left:50%;bottom:10px;background-color:#F8BB86}.sweet-alert .sa-icon.sa-info{border-color:#C9DAE1}.sweet-alert .sa-icon.sa-info::before{content:\"\";position:absolute;width:5px;height:29px;left:50%;bottom:17px;border-radius:2px;margin-left:-2px;background-color:#C9DAE1}.sweet-alert .sa-icon.sa-info::after{content:\"\";position:absolute;width:7px;height:7px;border-radius:50%;margin-left:-3px;top:19px;background-color:#C9DAE1;left:50%}.sweet-alert .sa-icon.sa-success{border-color:#A5DC86}.sweet-alert .sa-icon.sa-success::before,.sweet-alert .sa-icon.sa-success::after{content:'';-webkit-border-radius:40px;border-radius:40px;border-radius:50%;position:absolute;width:60px;height:120px;background:#fff;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.sweet-alert .sa-icon.sa-success::before{-webkit-border-radius:120px 0 0 120px;border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}.sweet-alert .sa-icon.sa-success::after{-webkit-border-radius:0 120px 120px 0;border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;transform-origin:0 60px}.sweet-alert .sa-icon.sa-success .sa-placeholder{width:80px;height:80px;border:4px solid rgba(165,220,134,0.2);-webkit-border-radius:40px;border-radius:40px;border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.sweet-alert .sa-icon.sa-success .sa-fix{width:5px;height:90px;background-color:#fff;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.sweet-alert .sa-icon.sa-success .sa-line{height:5px;background-color:#A5DC86;display:block;border-radius:2px;position:absolute;z-index:2}.sweet-alert .sa-icon.sa-success .sa-line.sa-tip{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.sweet-alert .sa-icon.sa-success .sa-line.sa-long{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.sweet-alert .sa-icon.sa-custom{background-size:contain;border-radius:0;border:none;background-position:center center;background-repeat:no-repeat}@-webkit-keyframes showSweetAlert{0%{transform:scale(0.7);-webkit-transform:scale(0.7)}45%{transform:scale(1.05);-webkit-transform:scale(1.05)}80%{transform:scale(0.95);-webkit-transform:scale(0.95)}100%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes showSweetAlert{0%{transform:scale(0.7);-webkit-transform:scale(0.7)}45%{transform:scale(1.05);-webkit-transform:scale(1.05)}80%{transform:scale(0.95);-webkit-transform:scale(0.95)}100%{transform:scale(1);-webkit-transform:scale(1)}}@-webkit-keyframes hideSweetAlert{0%{transform:scale(1);-webkit-transform:scale(1)}100%{transform:scale(0.5);-webkit-transform:scale(0.5)}}@keyframes hideSweetAlert{0%{transform:scale(1);-webkit-transform:scale(1)}100%{transform:scale(0.5);-webkit-transform:scale(0.5)}}@-webkit-keyframes slideFromTop{0%{top:0}100%{top:50%}}@keyframes slideFromTop{0%{top:0}100%{top:50%}}@-webkit-keyframes slideToTop{0%{top:50%}100%{top:0}}@keyframes slideToTop{0%{top:50%}100%{top:0}}@-webkit-keyframes slideFromBottom{0%{top:70%}100%{top:50%}}@keyframes slideFromBottom{0%{top:70%}100%{top:50%}}@-webkit-keyframes slideToBottom{0%{top:50%}100%{top:70%}}@keyframes slideToBottom{0%{top:50%}100%{top:70%}}.showSweetAlert[data-animation=pop]{-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s}.showSweetAlert[data-animation=none]{-webkit-animation:none;animation:none}.showSweetAlert[data-animation=slide-from-top]{-webkit-animation:slideFromTop .3s;animation:slideFromTop .3s}.showSweetAlert[data-animation=slide-from-bottom]{-webkit-animation:slideFromBottom .3s;animation:slideFromBottom .3s}.hideSweetAlert[data-animation=pop]{-webkit-animation:hideSweetAlert .2s;animation:hideSweetAlert .2s}.hideSweetAlert[data-animation=none]{-webkit-animation:none;animation:none}.hideSweetAlert[data-animation=slide-from-top]{-webkit-animation:slideToTop .4s;animation:slideToTop .4s}.hideSweetAlert[data-animation=slide-from-bottom]{-webkit-animation:slideToBottom .3s;animation:slideToBottom .3s}@-webkit-keyframes animateSuccessTip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@keyframes animateSuccessTip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@-webkit-keyframes animateSuccessLong{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@keyframes animateSuccessLong{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@-webkit-keyframes rotatePlaceholder{0%{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}5%{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}12%{transform:rotate(-405deg);-webkit-transform:rotate(-405deg)}100%{transform:rotate(-405deg);-webkit-transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}5%{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}12%{transform:rotate(-405deg);-webkit-transform:rotate(-405deg)}100%{transform:rotate(-405deg);-webkit-transform:rotate(-405deg)}}.animateSuccessTip{-webkit-animation:animateSuccessTip .75s;animation:animateSuccessTip .75s}.animateSuccessLong{-webkit-animation:animateSuccessLong .75s;animation:animateSuccessLong .75s}.sa-icon.sa-success.animate::after{-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}@-webkit-keyframes animateErrorIcon{0%{transform:rotateX(100deg);-webkit-transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);-webkit-transform:rotateX(0deg);opacity:1}}@keyframes animateErrorIcon{0%{transform:rotateX(100deg);-webkit-transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);-webkit-transform:rotateX(0deg);opacity:1}}.animateErrorIcon{-webkit-animation:animateErrorIcon .5s;animation:animateErrorIcon .5s}@-webkit-keyframes animateXMark{0%{transform:scale(0.4);-webkit-transform:scale(0.4);margin-top:26px;opacity:0}50%{transform:scale(0.4);-webkit-transform:scale(0.4);margin-top:26px;opacity:0}80%{transform:scale(1.15);-webkit-transform:scale(1.15);margin-top:-6px}100%{transform:scale(1);-webkit-transform:scale(1);margin-top:0;opacity:1}}@keyframes animateXMark{0%{transform:scale(0.4);-webkit-transform:scale(0.4);margin-top:26px;opacity:0}50%{transform:scale(0.4);-webkit-transform:scale(0.4);margin-top:26px;opacity:0}80%{transform:scale(1.15);-webkit-transform:scale(1.15);margin-top:-6px}100%{transform:scale(1);-webkit-transform:scale(1);margin-top:0;opacity:1}}.animateXMark{-webkit-animation:animateXMark .5s;animation:animateXMark .5s}@-webkit-keyframes pulseWarning{0%{border-color:#F8D486}100%{border-color:#F8BB86}}@keyframes pulseWarning{0%{border-color:#F8D486}100%{border-color:#F8BB86}}.pulseWarning{-webkit-animation:pulseWarning .75s infinite alternate;animation:pulseWarning .75s infinite alternate}@-webkit-keyframes pulseWarningIns{0%{background-color:#F8D486}100%{background-color:#F8BB86}}@keyframes pulseWarningIns{0%{background-color:#F8D486}100%{background-color:#F8BB86}}.pulseWarningIns{-webkit-animation:pulseWarningIns .75s infinite alternate;animation:pulseWarningIns .75s infinite alternate}@-webkit-keyframes rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.sweet-alert .sa-icon.sa-error .sa-line.sa-left{-ms-transform:rotate(45deg) \9}.sweet-alert .sa-icon.sa-error .sa-line.sa-right{-ms-transform:rotate(-45deg) \9}.sweet-alert .sa-icon.sa-success{border-color:transparent\9}.sweet-alert .sa-icon.sa-success .sa-line.sa-tip{-ms-transform:rotate(45deg) \9}.sweet-alert .sa-icon.sa-success .sa-line.sa-long{-ms-transform:rotate(-45deg) \9}.la-ball-fall,.la-ball-fall > div{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.la-ball-fall{display:block;font-size:0;color:#fff}.la-ball-fall.la-dark{color:#333}.la-ball-fall > div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-ball-fall{width:54px;height:18px}.la-ball-fall > div{width:10px;height:10px;margin:4px;border-radius:100%;opacity:0;-webkit-animation:ball-fall 1s ease-in-out infinite;-moz-animation:ball-fall 1s ease-in-out infinite;-o-animation:ball-fall 1s ease-in-out infinite;animation:ball-fall 1s ease-in-out infinite}.la-ball-fall > div:nth-child(1){-webkit-animation-delay:-200ms;-moz-animation-delay:-200ms;-o-animation-delay:-200ms;animation-delay:-200ms}.la-ball-fall > div:nth-child(2){-webkit-animation-delay:-100ms;-moz-animation-delay:-100ms;-o-animation-delay:-100ms;animation-delay:-100ms}.la-ball-fall > div:nth-child(3){-webkit-animation-delay:0;-moz-animation-delay:0;-o-animation-delay:0;animation-delay:0}.la-ball-fall.la-sm{width:26px;height:8px}.la-ball-fall.la-sm > div{width:4px;height:4px;margin:2px}.la-ball-fall.la-2x{width:108px;height:36px}.la-ball-fall.la-2x > div{width:20px;height:20px;margin:8px}.la-ball-fall.la-3x{width:162px;height:54px}.la-ball-fall.la-3x > div{width:30px;height:30px;margin:12px}@-webkit-keyframes ball-fall{0%{opacity:0;-webkit-transform:translateY(-145%);transform:translateY(-145%)}10%{opacity:.5}20%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}80%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}90%{opacity:.5}100%{opacity:0;-webkit-transform:translateY(145%);transform:translateY(145%)}}@-moz-keyframes ball-fall{0%{opacity:0;-moz-transform:translateY(-145%);transform:translateY(-145%)}10%{opacity:.5}20%{opacity:1;-moz-transform:translateY(0);transform:translateY(0)}80%{opacity:1;-moz-transform:translateY(0);transform:translateY(0)}90%{opacity:.5}100%{opacity:0;-moz-transform:translateY(145%);transform:translateY(145%)}}@-o-keyframes ball-fall{0%{opacity:0;-o-transform:translateY(-145%);transform:translateY(-145%)}10%{opacity:.5}20%{opacity:1;-o-transform:translateY(0);transform:translateY(0)}80%{opacity:1;-o-transform:translateY(0);transform:translateY(0)}90%{opacity:.5}100%{opacity:0;-o-transform:translateY(145%);transform:translateY(145%)}}@keyframes ball-fall{0%{opacity:0;-webkit-transform:translateY(-145%);-moz-transform:translateY(-145%);-o-transform:translateY(-145%);transform:translateY(-145%)}10%{opacity:.5}20%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}80%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}90%{opacity:.5}100%{opacity:0;-webkit-transform:translateY(145%);-moz-transform:translateY(145%);-o-transform:translateY(145%);transform:translateY(145%)}}");
if (style.styleSheet){
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
document.head.appendChild(style);
new MediaGet.Extractors.YoutubeExtractor().getMediaInfosAsync(location.href).then(
function(x){
x = x.filter(function(y){
if(y.attributes.mime.indexOf("video") == -1)return true;
if(y.attributes.codecs.indexOf("+")> -1)return true;
return false;
});console.log(x);
var downloadList = x.map(function(y){
return "<li><a download href=\"" + y.realUrl + "\">[" + y.attributes.mime.split("/")[1] + "]" +
(y.attributes.size || ("Audio - " + y.attributes.bitrate )) +
"</li>"
});
swal({
title: "Download",
text: "<ul>" + downloadList.join("") + "</ul>",
html: true
});
}
).catch(function(error){
swal({
title: error.name,
text: error.message,
type: "error"
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment