如何让我的重定向脚本添加一个随机后缀来选择网站

How do I get my redirecting script to add a random suffix to select sites?

本文关键字:随机 一个 后缀 网站 选择 我的 重定向 脚本 添加      更新时间:2023-09-26

我有一个从列表重定向到随机站点的用户脚本。(参考:如何重定向到给定站点集中的一个?)

如何让脚本添加随机后缀来选择网站,如wallbase.cc?

到目前为止,这是我的脚本:

// ==UserScript==
// @name        Multipage, MultiSite slideshow of sorts
// @match       http://*.breaktaker.com/*
// @match       http://*.imageshack.us/*
// @match       http://static.tumblr.com/*
// @match       http://withfriendship.com/images/*
// @match       http://failjudge.com/*
// @match       http://wallbase.cc/*
// ==/UserScript==
var urlsToLoad  = [
    'http://www.breaktaker.com/albums/pictures/animals/BigCat.jpg'
    , 'http://img375.imageshack.us/img375/8105/bigcats34ye4.jpg'
    , 'http://withfriendship.com/images/g/33769/1.jpg'
    , 'http://static.tumblr.com/yd0wcto/LXQlx109d/bigcats.jpg'
    , 'http://failjudge.com/'
    , 'http://wallbase.cc/wallpaper/ + [random number suffix from 1- 10000000000]'
];
setTimeout (GotoRandomURL, 4000);
function GotoRandomURL () {
    var numUrls     = urlsToLoad.length;
    var urlIdx      = urlsToLoad.indexOf (location.href);
    if (urlIdx >= 0) {
        urlsToLoad.splice (urlIdx, 1);
        numUrls--;
    }
    urlIdx          = Math.floor (Math.random () * numUrls);
    location.href   = urlsToLoad[urlIdx];
}

添加随机后缀意味着脚本必须更改检查其所在网站的方式,以及选择新URL的方式。因此,对于这些网站,我们必须检查部分匹配。

但是,这里并没有解释它的每一部分,而是有一大堆代码。)它应该是一个自我记录

// ==UserScript==
// @name        Multipage, MultiSite slideshow of sorts
// @match       http://*.breaktaker.com/*
// @match       http://*.imageshack.us/*
// @match       http://static.tumblr.com/*
// @match       http://withfriendship.com/images/*
// @match       http://failjudge.com/*
// @match       http://wallbase.cc/*
// ==/UserScript==
var urlsToLoad  = [
    { url:          'http://www.breaktaker.com/albums/pictures/animals/BigCat.jpg',
      useSuffix:    false
    },
    { url:          'http://img375.imageshack.us/img375/8105/bigcats34ye4.jpg',
      useSuffix:    false
    },
    { url:          'http://withfriendship.com/images/g/33769/1.jpg',
      useSuffix:    false
    },
    { url:          'http://static.tumblr.com/yd0wcto/LXQlx109d/bigcats.jpg',
      useSuffix:    false
    },
    { url:          'http://failjudge.com/',
      useSuffix:    false
    },
    //--- Fur suffix URLs, include everything before the suffix only.
    { url:          'http://wallbase.cc/wallpaper/',
      useSuffix:    true
    }
];
/*--- Since many of these sites load large pictures, Chrome's normal or its
    "document end" injection may fire a good deal before the image(s) finish
    loading.
    So, insure script fires after load:
*/
window.addEventListener (
    "load",
    function () { setTimeout (GotoRandomURL, 4000); },
    false
);
if (document.readyState == "complete") {
    setTimeout (GotoRandomURL, 4000);
}

function GotoRandomURL () {
    var numUrls     = urlsToLoad.length;
    var urlIdx      = -1;
    for (var J = numUrls - 1;  J >= 0;  --J) {
        if (urlsToLoad[J].useSuffix) {
            //--- Check that URL starts with the specified value
            var prefChk = new RegExp ('^' + urlsToLoad[J].url, 'i');
            if (prefChk.test (location.href) ) {
                urlIdx  = J;
                break;
            }
        }
        else {
            if (urlsToLoad[J].url  ==  location.href) {
                urlIdx  = J;
                break;
            }
        }
    }
    if (urlIdx >= 0) {
        urlsToLoad.splice (urlIdx, 1);
        numUrls--;
    }
    urlIdx          = Math.floor (Math.random () * numUrls);
    var targURL     = urlsToLoad[urlIdx].url;
    if (urlsToLoad[urlIdx].useSuffix) {
        //--- Note:  wallbase.cc currently has less than 2-million wallpapers.
        targURL    += Math.ceil (Math.random () * 2000000);
    }                                              
    console.log (''n'n***'n', targURL, ''n***'n'n');
    location.href   = targURL;
}