NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Embedded Youtube Video In Facebook
// @namespace https://openuserjs.org/users/Energy0124
// @version 0.1.0
// @description Convert Youtube video link in Facebook to embedded video.
// @author Energy0124
// @copyright 2020, Energy01214
// @license MIT
// @match https://www.facebook.com/*
// @grant none
// ==/UserScript==
// based on https://greasyfork.org/en/scripts/404309-facebook-hide-ads-a-k-a-sponsored-posts
(function () {
'use strict';
let qS = function (el, scope) {
scope = (typeof scope == 'object') ? scope : document;
return scope.querySelector(el) || false;
},
targetNode = qS('body'),
observerConfig = {
attributes: false,
childList: true,
subtree: true
},
callback = function (mutationsList, observer) {
mutationsList.forEach(function (mutation) {
var entry = {
mutation: mutation,
el: mutation.target,
value: mutation.target.textContent,
oldValue: mutation.oldValue
};
let youtube_parser = function (url) {
var regExp = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
var match = url.match(regExp);
if (match && match[2].length == 11) {
return match[2];
}
else {
//error
return "";
}
};
Array.from(document.querySelectorAll('a[href*="youtu"] > div > div > div > div > img')).map(x => x.parentElement.parentElement.parentElement.parentElement)
.map(x => {
return [x.parentElement, youtube_parser(decodeURIComponent(x.parentElement.href.replace("https://l.facebook.com/l.php?u=", "")))];
}).map(x => {
x[0].parentElement.innerHTML = '<div style="position: relative; width: 100%; height: 0; padding-bottom: 56.25%;"><iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.youtube.com/embed/' + x[1] + '" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div>'
});
Array.from(document.querySelectorAll('a[href*="youtu"] > span'))
.map(x => {
return [x.parentElement, youtube_parser(decodeURIComponent(x.parentElement.href.replace("https://l.facebook.com/l.php?u=", "")))];
}).map(x => {
x[0].parentElement.parentElement.parentElement.innerHTML = '<div style="position: relative; width: 100%; height: 0; padding-bottom: 56.25%;"><iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.youtube.com/embed/' + x[1] + '" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div>'
});
});
};
var observer = new MutationObserver(callback);
observer.observe(targetNode, observerConfig);
})();