Greasy Fork is available in English.
Replaces an embedded video with a link to the video page.
// ==UserScript==// @name LinkTube// @version 2017.11.23// @description Replaces an embedded video with a link to the video page.// @author sebaro// @namespace http://isebaro.com/linktube// @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html// @icon https://raw.githubusercontent.com/sebaro/linktube/master/linktube.png// @include *// @grant GM_xmlhttpRequest// @grant GM.xmlHttpRequest// ==/UserScript==/*Copyright (C) 2011 - 2017 Sebastian LuncanThis program is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program. If not, see <http://www.gnu.org/licenses/>.Website: http://isebaro.com/linktubeContact: http://isebaro.com/contact*/(function() {// ==========Variables========== //// Userscriptvar userscript = 'LinkTube';// Contactvar contact = 'http://isebaro.com/contact';// Warningvar warning = 'Couldn\'t get the video link. Please report it <a href="' + contact + '">here</a>.';// Optionsvar option = {'secure': true};// ==========Fixes========== //// Don't run on frames or iframesif (window.top != window.self) return;// ==========Functions========== //function createMyElement (type, content) {var obj = document.createElement(type);if (type == 'div') {if (content) obj.innerHTML = content;}return obj;}function getMyElement (element, get, tag) {var obj;if (get == 'parent') obj = element.parentNode;else if (get == 'source') obj = element.src;else if (get == 'name') obj = element.name;else if (get == 'value') obj = element.value;else if (get == 'children') obj = element.getElementsByTagName(tag);return obj;}function modifyMyElement (obj, type, content, clear) {if (type == 'div') {if (content) obj.innerHTML = content;}if (clear) {if (obj.hasChildNodes()) {while (obj.childNodes.length >= 1) {obj.removeChild(obj.firstChild);}}}}function styleMyElement (obj, styles) {for (var property in styles) {if (styles.hasOwnProperty(property)) obj.style[property] = styles[property];}}function appendMyElement (parent, child) {if (parent == 'body') document.body.appendChild(child);else parent.appendChild(child);}function removeMyElement (parent, child) {if (parent == 'body') document.body.removeChild(child);else parent.removeChild(child);}function replaceMyElement (parent, orphan, child) {parent.replaceChild(orphan, child);}function cleanMyContent (content, unesc) {var myNewContent = content;if (unesc) myNewContent = unescape (myNewContent);myNewContent = myNewContent.replace (/\\u0025/g,'%');myNewContent = myNewContent.replace (/\\u0026/g,'&');myNewContent = myNewContent.replace (/\\/g,'');myNewContent = myNewContent.replace (/\n/g,'');return myNewContent;}function YouTube (url, target) {/* Decrypt Signature */var ytScriptSrc;function ytDecryptSignature (s) {return null;}function ytDecryptFunction () {var ytSignFuncName, ytSignFuncBody, ytSwapFuncName, ytSwapFuncBody, ytFuncMatch;ytScriptSrc = ytScriptSrc.replace(/(\r\n|\n|\r)/gm, '');ytSignFuncName = ytScriptSrc.match(/"signature"\s*,\s*(.*?)\(/);ytSignFuncName = (ytSignFuncName) ? ytSignFuncName[1] : null;if (ytSignFuncName) {ytFuncMatch = ytSignFuncName.replace(/\$/, '\\$') + '\\s*=\\s*function\\s*' + '\\s*\\(\\w+\\)\\s*\\{(.*?)\\}';ytSignFuncBody = ytScriptSrc.match(ytFuncMatch);ytSignFuncBody = (ytSignFuncBody) ? ytSignFuncBody[1] : null;if (ytSignFuncBody) {ytSwapFuncName = ytSignFuncBody.match(/((\$|_|\w)+)\.(\$|_|\w)+\(\w,[0-9]+\)/);ytSwapFuncName = (ytSwapFuncName) ? ytSwapFuncName[1] : null;if (ytSwapFuncName) {ytFuncMatch = 'var\\s+' + ytSwapFuncName.replace(/\$/, '\\$') + '=\\s*\\{(.*?)\\};';ytSwapFuncBody = ytScriptSrc.match(ytFuncMatch);ytSwapFuncBody = (ytSwapFuncBody) ? ytSwapFuncBody[1] : null;}if (ytSwapFuncBody) ytSignFuncBody = 'var ' + ytSwapFuncName + '={' + ytSwapFuncBody + '};' + ytSignFuncBody;ytSignFuncBody = 'try {' + ytSignFuncBody + '} catch(e) {return null}';ytDecryptSignature = new Function('a', ytSignFuncBody);}}}/* Parse Videos */function ytVideos() {var ytVideoFormats = {'5': 'Very Low Definition FLV','17': 'Very Low Definition 3GP','18': 'Low Definition MP4','22': 'High Definition MP4','34': 'Low Definition FLV','35': 'Standard Definition FLV','36': 'Low Definition 3GP','37': 'Full High Definition MP4','38': 'Ultra High Definition MP4','43': 'Low Definition WebM','44': 'Standard Definition WebM','45': 'High Definition WebM','46': 'Full High Definition WebM','82': 'Low Definition 3D MP4','83': 'Standard Definition 3D MP4','84': 'High Definition 3D MP4','85': 'Full High Definition 3D MP4','100': 'Low Definition 3D WebM','101': 'Standard Definition 3D WebM','102': 'High Definition 3D WebM','135': 'Standard Definition Video MP4','136': 'High Definition Video MP4','137': 'Full High Definition Video MP4','138': 'Ultra High Definition Video MP4','139': 'Low Bitrate Audio MP4','140': 'Medium Bitrate Audio MP4','141': 'High Bitrate Audio MP4','171': 'Medium Bitrate Audio WebM','172': 'High Bitrate Audio WebM','244': 'Standard Definition Video WebM','247': 'High Definition Video WebM','248': 'Full High Definition Video WebM','266': 'Ultra High Definition Video MP4','272': 'Ultra High Definition Video WebM','298': 'High Definition Video MP4','299': 'Full High Definition Video MP4','302': 'High Definition Video WebM','303': 'Full High Definition Video WebM','313': 'Ultra High Definition Video WebM'};var ytVideoFound = false;var ytVideos = ytVideosContent.split(',');var ytVideoParse, ytVideoCodeParse, ytVideoCode, myVideoCode, ytVideo;for (var i = 0; i < ytVideos.length; i++) {if (!ytVideos[i].match(/^url/)) {ytVideoParse = ytVideos[i].match(/(.*)(url=.*$)/);if (ytVideoParse) ytVideos[i] = ytVideoParse[2] + '&' + ytVideoParse[1];}ytVideoCodeParse = ytVideos[i].match (/itag=(\d{1,3})/);ytVideoCode = (ytVideoCodeParse) ? ytVideoCodeParse[1] : null;if (ytVideoCode) {myVideoCode = ytVideoFormats[ytVideoCode];if (myVideoCode) {ytVideo = cleanMyContent(ytVideos[i], true);ytVideo = ytVideo.replace(/url=/, '').replace(/&$/, '');if (ytVideo.match(/itag=/) && ytVideo.match(/itag=/g).length > 1) {if (ytVideo.match(/itag=\d{1,3}&/)) ytVideo = ytVideo.replace(/itag=\d{1,3}&/, '');else if (ytVideo.match(/&itag=\d{1,3}/)) ytVideo = ytVideo.replace(/&itag=\d{1,3}/, '');}if (ytVideo.match(/clen=/) && ytVideo.match(/clen=/g).length > 1) {if (ytVideo.match(/clen=\d+&/)) ytVideo = ytVideo.replace(/clen=\d+&/, '');else if (ytVideo.match(/&clen=\d+/)) ytVideo = ytVideo.replace(/&clen=\d+/, '');}if (ytVideo.match(/lmt=/) && ytVideo.match(/lmt=/g).length > 1) {if (ytVideo.match(/lmt=\d+&/)) ytVideo = ytVideo.replace(/lmt=\d+&/, '');else if (ytVideo.match(/&lmt=\d+/)) ytVideo = ytVideo.replace(/&lmt=\d+/, '');}if (ytVideo.match(/type=(video|audio).*?&/)) ytVideo = ytVideo.replace(/type=(video|audio).*?&/, '');else ytVideo = ytVideo.replace(/&type=(video|audio).*$/, '');if (ytVideo.match(/xtags=[^%=]*&/)) ytVideo = ytVideo.replace(/xtags=[^%=]*?&/, '');else if (ytVideo.match(/&xtags=[^%=]*$/)) ytVideo = ytVideo.replace(/&xtags=[^%=]*$/, '');if (ytVideo.match(/&sig=/)) ytVideo = ytVideo.replace(/&sig=/, '&signature=');else if (ytVideo.match(/&s=/)) {var ytSig = ytVideo.match(/&s=(.*?)(&|$)/);if (ytSig) {var s = ytSig[1];s = ytDecryptSignature(s);if (s) ytVideo = ytVideo.replace(/&s=.*?(&|$)/, '&signature=' + s + '$1');else ytVideo = '';}else ytVideo = '';}ytVideo = cleanMyContent(ytVideo, true);if (ytVideo.indexOf('ratebypass') == -1) ytVideo += '&ratebypass=yes';if (ytVideo && ytVideo.indexOf('http') == 0) {if (ytVideoTitle) ytVideo += '&title=' + ytVideoTitle;if (!ytVideoFound) ytVideoFound = true;ytVideoList += '<a href="' + ytVideo + '">' + myVideoCode + '</a><br>';}}}}if (!ytVideoFound) {if (ytVideosContent.indexOf('conn=rtmp') != -1) ytVideoList = 'ERROR: RTMP!';else ytVideoList = 'ERROR: No videos!';}}var ytVideosContent;var ytVideoTitle;var ytVideoLength;var ytVideoList = '';try {GM.xmlHttpRequest({method: 'GET',url: url,onload: function(response) {if (response.readyState === 4 && response.status === 200) {/* Get Page Source */ytPageSource = response.responseText;/* Get Video Title */ytVideoTitle = ytPageSource.match(/"title":"(.*?)","lengthSeconds"/);ytVideoTitle = (ytVideoTitle) ? ytVideoTitle[1] : null;if (!ytVideoTitle) {ytVideoTitle = ytPageSource.match(/document.title\s*=\s*"(.*?)"/);ytVideoTitle = (ytVideoTitle) ? ytVideoTitle[1] : null;}if (!ytVideoTitle) {ytVideoTitle = ytPageSource.match(/meta\s+itemprop="name"\s+content="(.*?)"/);ytVideoTitle = (ytVideoTitle) ? ytVideoTitle[1] : null;}if (!ytVideoTitle) {ytVideoTitle = ytPageSource.match(/meta\s+property="og:title"\s+content="(.*?)"/);ytVideoTitle = (ytVideoTitle) ? ytVideoTitle[1] : null;}if (ytVideoTitle) {ytVideoTitle = ytVideoTitle.replace(/"/g, '\'').replace(/"/g, '\'').replace(/"/g, '\'');ytVideoTitle = ytVideoTitle.replace(/'/g, '\'').replace(/'/g, '\'');ytVideoTitle = ytVideoTitle.replace(/&/g, 'and').replace(/&/g, 'and');ytVideoTitle = ytVideoTitle.replace(/\?/g, '').replace(/[#:\*]/g, '-').replace(/\//g, '-');ytVideoTitle = ytVideoTitle.replace(/^\s+|\s+$/, '').replace(/\.+$/g, '');ytVideoTitle = ytVideoTitle.replace(/^YouTube\s-\s/, '');}/* Get Video Length */ytVideoLength = ytPageSource.match(/"lengthSeconds":"(.*?)"/);ytVideoLength = (ytVideoLength) ? ytVideoLength[1] : null;if (ytVideoLength) {ytVideoLength = new Date(ytVideoLength * 1000).toISOString().substr(11, 8).replace(/00:0?/, '');}else {ytVideoLength = ytPageSource.match(/meta\s+itemprop="duration"\s+content="(.*?)"/);ytVideoLength = (ytVideoLength) ? ytVideoLength[1].replace('PT', '').replace('M', ':').replace('S', '') : null;}/* Get Videos Content */var ytVideosEncodedFmts, ytVideosAdaptiveFmts;ytVideosEncodedFmts = ytPageSource.match(/"url_encoded_fmt_stream_map":\s*"(.*?)"/);ytVideosEncodedFmts = (ytVideosEncodedFmts) ? ytVideosEncodedFmts[1] : null;if (ytVideosEncodedFmts) ytVideosEncodedFmts = cleanMyContent(ytVideosEncodedFmts, false);ytVideosAdaptiveFmts = ytPageSource.match(/"adaptive_fmts":\s*"(.*?)"/);ytVideosAdaptiveFmts = (ytVideosAdaptiveFmts) ? ytVideosAdaptiveFmts[1] : null;if (ytVideosAdaptiveFmts) ytVideosAdaptiveFmts = cleanMyContent(ytVideosAdaptiveFmts, false);if (ytVideosEncodedFmts) {ytVideosContent = ytVideosEncodedFmts;}if (ytVideosAdaptiveFmts) {ytVideosAdaptiveFmts = ytVideosAdaptiveFmts.replace(/clen=\d+&/g, '').replace(/&clen=\d+/g, '');ytVideosAdaptiveFmts = ytVideosAdaptiveFmts.replace(/lmt=\d+&/g, '').replace(/&lmt=\d+/g, '');if (ytVideosContent) ytVideosContent += ',' + ytVideosAdaptiveFmts;else ytVideosContent = ytVideosAdaptiveFmts;}/* Get Videos */if (ytVideosContent) {if (ytVideosContent.match(/&s=/) || ytVideosContent.match(/,s=/) || ytVideosContent.match(/u0026s=/)) {var ytScriptURL = ytPageSource.match(/"js":\s*"(.*?)"/);ytScriptURL = (ytScriptURL) ? ytScriptURL[1] : null;if (ytScriptURL) {ytScriptURL = 'https:' + cleanMyContent(ytScriptURL, false);GM.xmlHttpRequest({method: 'GET',url: ytScriptURL,onload: function(response) {if (response.readyState === 4 && response.status === 200) {ytScriptSrc = response.responseText;if (ytScriptSrc) {ytDecryptFunction();ytVideos();ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>' + ytVideoList;modifyMyElement (target, 'div', ytVideoList, false);}else {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No script!';modifyMyElement (target, 'div', ytVideoList, false);}}else {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No script response!';modifyMyElement (target, 'div', ytVideoList, false);}}});}else {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No script!';modifyMyElement (target, 'div', ytVideoList, false);}}else {ytVideos();ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>' + ytVideoList;modifyMyElement (target, 'div', ytVideoList, false);}}else {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No videos content!';modifyMyElement (target, 'div', ytVideoList, false);}}else {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No videos!';modifyMyElement (target, 'div', ytVideoList, false);}}});}catch(e) {try {GM_xmlhttpRequest({method: 'GET',url: url,onload: function(response) {if (response.readyState === 4 && response.status === 200) {/* Get Page Source */ytPageSource = response.responseText;/* Get Video Title */ytVideoTitle = ytPageSource.match(/"title":"(.*?)","lengthSeconds"/);ytVideoTitle = (ytVideoTitle) ? ytVideoTitle[1] : null;if (!ytVideoTitle) {ytVideoTitle = ytPageSource.match(/document.title\s*=\s*"(.*?)"/);ytVideoTitle = (ytVideoTitle) ? ytVideoTitle[1] : null;}if (!ytVideoTitle) {ytVideoTitle = ytPageSource.match(/meta\s+itemprop="name"\s+content="(.*?)"/);ytVideoTitle = (ytVideoTitle) ? ytVideoTitle[1] : null;}if (!ytVideoTitle) {ytVideoTitle = ytPageSource.match(/meta\s+property="og:title"\s+content="(.*?)"/);ytVideoTitle = (ytVideoTitle) ? ytVideoTitle[1] : null;}if (ytVideoTitle) {ytVideoTitle = ytVideoTitle.replace(/"/g, '\'').replace(/"/g, '\'').replace(/"/g, '\'');ytVideoTitle = ytVideoTitle.replace(/'/g, '\'').replace(/'/g, '\'');ytVideoTitle = ytVideoTitle.replace(/&/g, 'and').replace(/&/g, 'and');ytVideoTitle = ytVideoTitle.replace(/\?/g, '').replace(/[#:\*]/g, '-').replace(/\//g, '-');ytVideoTitle = ytVideoTitle.replace(/^\s+|\s+$/, '').replace(/\.+$/g, '');ytVideoTitle = ytVideoTitle.replace(/^YouTube\s-\s/, '');}/* Get Video Length */ytVideoLength = ytPageSource.match(/"lengthSeconds":"(.*?)"/);ytVideoLength = (ytVideoLength) ? ytVideoLength[1] : null;if (ytVideoLength) {ytVideoLength = new Date(ytVideoLength * 1000).toISOString().substr(11, 8).replace(/00:0?/, '');}else {ytVideoLength = ytPageSource.match(/meta\s+itemprop="duration"\s+content="(.*?)"/);ytVideoLength = (ytVideoLength) ? ytVideoLength[1].replace('PT', '').replace('M', ':').replace('S', '') : null;}/* Get Videos Content */var ytVideosEncodedFmts, ytVideosAdaptiveFmts;ytVideosEncodedFmts = ytPageSource.match(/"url_encoded_fmt_stream_map":\s*"(.*?)"/);ytVideosEncodedFmts = (ytVideosEncodedFmts) ? ytVideosEncodedFmts[1] : null;if (ytVideosEncodedFmts) ytVideosEncodedFmts = cleanMyContent(ytVideosEncodedFmts, false);ytVideosAdaptiveFmts = ytPageSource.match(/"adaptive_fmts":\s*"(.*?)"/);ytVideosAdaptiveFmts = (ytVideosAdaptiveFmts) ? ytVideosAdaptiveFmts[1] : null;if (ytVideosAdaptiveFmts) ytVideosAdaptiveFmts = cleanMyContent(ytVideosAdaptiveFmts, false);if (ytVideosEncodedFmts) {ytVideosContent = ytVideosEncodedFmts;}if (ytVideosAdaptiveFmts) {ytVideosAdaptiveFmts = ytVideosAdaptiveFmts.replace(/clen=\d+&/g, '').replace(/&clen=\d+/g, '');ytVideosAdaptiveFmts = ytVideosAdaptiveFmts.replace(/lmt=\d+&/g, '').replace(/&lmt=\d+/g, '');if (ytVideosContent) ytVideosContent += ',' + ytVideosAdaptiveFmts;else ytVideosContent = ytVideosAdaptiveFmts;}/* Get Videos */if (ytVideosContent) {if (ytVideosContent.match(/&s=/) || ytVideosContent.match(/,s=/) || ytVideosContent.match(/u0026s=/)) {var ytScriptURL = ytPageSource.match(/"js":\s*"(.*?)"/);ytScriptURL = (ytScriptURL) ? ytScriptURL[1] : null;if (ytScriptURL) {ytScriptURL = 'https:' + cleanMyContent(ytScriptURL, false);GM_xmlhttpRequest({method: 'GET',url: ytScriptURL,onload: function(response) {if (response.readyState === 4 && response.status === 200) {ytScriptSrc = response.responseText;if (ytScriptSrc) {ytDecryptFunction();ytVideos();ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>' + ytVideoList;modifyMyElement (target, 'div', ytVideoList, false);}else {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No script!';modifyMyElement (target, 'div', ytVideoList, false);}}else {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No script response!';modifyMyElement (target, 'div', ytVideoList, false);}}});}else {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No script!';modifyMyElement (target, 'div', ytVideoList, false);}}else {ytVideos();ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>' + ytVideoList;modifyMyElement (target, 'div', ytVideoList, false);}}else {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No videos content!';modifyMyElement (target, 'div', ytVideoList, false);}}else {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No videos!';modifyMyElement (target, 'div', ytVideoList, false);}}});}catch(e) {ytVideoList = ytVideoTitle + ' (' + ytVideoLength + ')<br>' + '<a href="' + url + '">' + url + '</a><br>ERROR: No videos!';modifyMyElement (target, 'div', ytVideoList, false);}}}function embedMyLinks (element) {var elements;if (element == 'iframe') elements = iframeElements;else if (element == 'object') elements = objectElements;else if (element == 'embed') elements = embedElements;var child, parent, video, param, name;var foundSite;var linkID, videoID, videoLink, videoURL;var myScriptLogo = [];myScriptLogo[element] = [];var myScriptMess = [];myScriptMess[element] = [];var myLinkWindow = [];myLinkWindow[element] = [];for (var e = elements.length - 1; e >= 0; e--) {foundSite = false;child = elements[e];parent = getMyElement (child, 'parent', '');if (element == 'iframe' || element == 'embed') {video = getMyElement (child, 'source', '');}else if (element == 'object') {params = getMyElement (child, 'children', 'param');for (var p = 0; p < params.length; p++) {name = getMyElement (params[p], 'name', '');if (name == 'movie' || name == 'src') {video = getMyElement (params[p], 'value', '');if (!video) video = getMyElement (params[p], 'source', '');}}}if (video) {for (var l = 0; l < linkParsers.length; l++) {if (video.match(linkParsers[l]['source'])) {foundSite = true;linkID = l;break;}}}if (foundSite) {myScriptLogo[element][e] = createMyElement ('div', userscript);styleMyElement (myScriptLogo[element][e], {margin: '0px auto', padding: '10px', color: '#FFFFFF', fontSize: '20px', textAlign: 'center', textShadow: '#000000 -1px -1px 1px'});myScriptMess[element][e] = createMyElement ('div', '');myLinkWindow[element][e] = createMyElement ('div', '');appendMyElement (myLinkWindow[element][e], myScriptLogo[element][e]);appendMyElement (myLinkWindow[element][e], myScriptMess[element][e]);var childStyles = child.getAttribute('style');if (childStyles) {childStyles = childStyles.replace('absolute', 'relative');myLinkWindow[element][e].setAttribute('style', childStyles);styleMyElement (myLinkWindow[element][e], {backgroundColor: '#F4F4F4'});}else styleMyElement (myLinkWindow[element][e], {width: '100%', height: '100%', backgroundColor: '#F4F4F4'});styleMyElement (parent, {padding: '0px', height: '100%'});replaceMyElement(parent, myLinkWindow[element][e], child);videoID = video.match(linkParsers[linkID]['pattern']);videoID = (videoID) ? videoID[1] : null;if (videoID) {videoURL = linkParsers[linkID]['link'] + videoID;if (!option['secure']) videoURL = videoURL.replace(/^https/, 'http');styleMyElement (myScriptMess[element][e], {border: '3px solid #F4F4F4', margin: '0px auto', padding: '10px', backgroundColor: '#FFFFFF', color: '#00C000', textAlign: 'center', fontSize: '16px'});if (videoURL.indexOf('youtube.com') != -1) {YouTube(videoURL, myScriptMess[element][e]);}else {videoLink = '<a href="' + videoURL + '">' + videoURL + '</a>';modifyMyElement (myScriptMess[element][e], 'div', videoLink, false);}}else {styleMyElement (myScriptMess[element][e], {border: '3px solid #F4F4F4', margin: '0px auto', padding: '10px', backgroundColor: '#FFFFFF', color: '#AD0000', textAlign: 'center', fontSize: '16px'});modifyMyElement (myScriptMess[element][e], 'div', warning, false);}}}}// ==========Websites========== ///* Parsers */var linkParsers = [{'source': 'youtube(.com|-nocookie.com)/embed/(videoseries|\\?list)', 'pattern': 'list=(.*?)(&|$)', 'link': 'https://www.youtube.com/playlist?list='},{'source': 'youtube(.com|-nocookie.com)/embed/', 'pattern': '/embed/(.*?)(\\?|&|$)', 'link': 'https://www.youtube.com/watch?v='},{'source': 'youtube(.com|-nocookie.com)/v/', 'pattern': '/v/(.*?)(\\?|&|$)', 'link': 'https://www.youtube.com/watch?v='},{'source': 'dailymotion.com/embed/', 'pattern': '/video/(.*?)$', 'link': 'https://www.dailymotion.com/video/'},{'source': 'dailymotion.com/swf/(?!video)', 'pattern': '/swf/(.*?)$', 'link': 'https://www.dailymotion.com/video/'},{'source': 'dailymotion.com/swf/(?=video)', 'pattern': '/video/(.*?)$', 'link': 'https://www.dailymotion.com/video/'},{'source': 'vimeo.com/video/', 'pattern': '/video/(.*?)(\\?|&|$)', 'link': 'https://vimeo.com/'},{'source': 'vimeo.com/moogaloop', 'pattern': '/moogaloop.swf\\?clip_id=(.*?)(&|$)', 'link': 'https://vimeo.com/'},{'source': 'metacafe.com/embed/', 'pattern': '/embed/(.*?)/', 'link': 'https://www.metacafe.com/watch/'},{'source': 'metacafe.com/fplayer/', 'pattern': '/fplayer/(.*?)/', 'link': 'https://www.metacafe.com/watch/'},{'source': 'funnyordie.com/embed/', 'pattern': '/embed/(.*?)$', 'link': 'https://www.funnyordie.com/videos/'},{'source': 'vk.com/video', 'pattern': 'video_ext.php\\?(.*?)$', 'link': 'http://vk.com/video_ext.php?'},{'source': 'hostname=www.twitch.tv', 'pattern': 'channel=(.*?)(&|$)', 'link': 'http://www.twitch.tv/'}];/* IFrame */var iframeElements = getMyElement (document, 'children', 'iframe');if (iframeElements.length > 0 ) embedMyLinks ('iframe');/* Object */var objectElements = getMyElement (document, 'children', 'object');if (objectElements.length > 0 ) embedMyLinks ('object');/* Embed */var embedElements = getMyElement (document, 'children', 'embed');if (embedElements.length > 0 ) embedMyLinks ('embed');})();