🏠 Home 

9gag NSFW unblock (temp fix for mobiles)

Unblock NSFW without account


Install this script?
// ==UserScript==
// @name         9gag NSFW unblock (temp fix for mobiles)
// @namespace    https://greasyfork.org/en/users/715695-unblock
// @version      0.5.1
// @description  Unblock NSFW without account
// @author       Unblock
// @match        https://9gag.com/*
// @icon         https://icons.duckduckgo.com/ip2/9gag.com.ico
// @grant        none
// @run-at       document-end
// ==/UserScript==
function bootstrap() {
'use strict';
const baseUrl = "https://img-9gag-fun.9cache.com/photo/";
function setChild(container, post) {
container.firstElementChild.replaceWith(post);
}
function tryVideo(id, container) {
const video = document.createElement("video");
video.preload = "auto";
video.poster = baseUrl + id + "_460s.jpg";
const srcAV1 = document.createElement("source");
srcAV1.src = baseUrl + id + "_460svav1.mp4";
srcAV1.type = "video/mp4; codecs=\"av01.0.00M.08, opus\"";
video.appendChild(srcAV1);
const srcVP9 = document.createElement("source");
srcVP9.src = baseUrl + id + "_460svvp9.webm";
srcVP9.type = "video/mp4; codec=\"vp9, opus\"";
video.appendChild(srcVP9);
const srcMP4 = document.createElement("source");
srcMP4.src = baseUrl + id + "_460sv.mp4";
srcMP4.type = "video/mp4";
video.appendChild(srcMP4);
video.controls = true;
//  video.autoplay = true;
//  video.muted = true;
video.onloadedmetadata = function () {
//    console.log("NSFW MP4");
setChild(container, video);
}
}
function tryImage(id, container) {
const picture = document.createElement("picture");
const source = document.createElement("source");
source.srcset = baseUrl + id + "_460swp.webp";
source.type = "image/webp";
picture.appendChild(source);
const img = document.createElement("img");
img.src = baseUrl + id + "_460s.jpg";
img.loading = "lazy";
picture.appendChild(img);
setChild(container, picture)
}
var mobile = true;
var desktop = true;
function clearPosts() {
if (true) {
var nsfw_desktop = document.querySelectorAll("div.post-view.post-sensitive-mask");
for (var post of nsfw_desktop) {
mobile = false;
const container = post.parentElement;
const id = container.parentElement.id.slice(10);
tryImage(id, container);
tryVideo(id, container);
}
}
if (true) {
var nsfw_mobile_photo = document.querySelectorAll("article.post-cell.photo div.post-sensitive-mask");
var nsfw_mobile_video = document.querySelectorAll("article.post-cell.video div.post-sensitive-mask, article.post-cell.gif div.post-sensitive-mask");
for (post of nsfw_mobile_photo) {
desktop = false;
const container = post.parentElement;
const id = container.parentElement.id.slice(15);
tryImage(id, container);
}
for (post of nsfw_mobile_video) {
desktop = false;
const container = post.parentElement;
const id = container.parentElement.id.slice(15);
tryVideo(id, container);
}
}
}
const observer = new MutationObserver((mutations, observer) => {
clearPosts();
});
const postSection = document.querySelector("div#main section#list-view-2, div.post-container");
// todo: make better fix
// desc: this prevent from break on mobile/android devices, retry again after .5s
if (!postSection) {
setTimeout(bootstrap, 500)
return;
}
observer.observe(postSection, {
childList: true
});
setTimeout(clearPosts, 200);
}
bootstrap();