soup.io_force_working_asset_hosts

Right now soup.io have problem with many image hosts which results in nearly half of the images being not displayed. Here's a workaround - force browser to use known-to-be-working asset hosts.

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        soup.io_force_working_asset_hosts
// @namespace   http://animeisouronlysalvationfromthehorrorofexistence.soup.io/
// @include     http://*soup.io/*
// @include     https://*soup.io/*
// @description  Right now soup.io have problem with many image hosts which results in nearly half of the images being not displayed. Here's a workaround - force browser to use known-to-be-working asset hosts.
// @version     5
// @grant       none
// ==/UserScript==


// A list of known to be working asset hosts.
var working_hosts = [ 'asset-0', 'asset-1', 'asset-2', 'asset-3', 'asset-4', 'asset-5' ];
var regex = new RegExp("asset-[^012345]", "g");

function force_working_asset_hosts(){
    var tags = document.getElementsByTagName('img');
    var anchors = document.getElementsByTagName('a');
    var links = document.getElementsByTagName('link');

    for (var i = 0; i < tags.length; i++) {
        var rand_host = working_hosts[Math.floor(Math.random()*working_hosts.length)];
        tags[i].src = tags[i].src.replace(regex, rand_host);
    }

    for (var i = 0; i < anchors.length; i++) {
        var rand_host = working_hosts[Math.floor(Math.random()*working_hosts.length)];
        anchors[i].href = anchors[i].href.replace(regex, rand_host);
    }

    for (var i = 0; i < links.length; i++) {
        var rand_host = working_hosts[Math.floor(Math.random()*working_hosts.length)];
        links[i].href = links[i].href.replace(regex, rand_host);
    }
}

force_working_asset_hosts();

var observer = new MutationObserver(function(mutations) {
    force_working_asset_hosts();
});

var config = { attributes: true, childList: true, characterData: true };
var target = document.getElementById('more_history');
 
observer.observe(target, config);