Greasy Fork is available in English.

2048

2048论坛预加载视频图片

< 2048についてのフィードバック

レート:良 – スクリプトは良好に動作する

§
投稿日: 2022/08/09

感谢分享,但是在使用过程中遇到了一些问题,例如控制台报错,某些帖子不加载等等。通过修改match方式解决了这些问题,以下为源码。

// ==UserScript==
// @name         2048
// @namespace    https://greasyfork.org/zh-CN/scripts/442235-2048/code
// @version      0.12.2
// @description  2048论坛预加载视频图片
// @author       sht
// @match        http*://*/2048/*
// @grant        none
// @require      https://libs.baidu.com/jquery/2.1.3/jquery.min.js
// @license      MIT
// ==/UserScript==
//注入页面的脚本文件
$(function() {
    $('a font[size="4"]').hide();
    $('li').hide();

    // 是否包含特定字符串,用以排除无关图片
    function strContains(str) {
        var containUselessImg = ['none', 'online', 'stealth', 'logo', 'post', 'level', 'default/lol', 'default/titter']
        for (var j = 0; j < containUselessImg.length; j++) {
            if (str.includes(containUselessImg[j])) {
                return true;
            }
        }
        return false;
    }

    function jsleft(obj, str) {
        var index = obj.indexOf(str);
        obj = obj.substring(0, index);
        return obj;
    }

    //JS 取右字符函数
    function jsright(obj, str) {
        var index = obj.indexOf(str);
        obj = obj.substring(index + 1, obj.length);
        return obj;
    }

    function jsmid(str, b, a) {
        var bds = b + '(\\S*)' + a;
        return str.match(bds)[1];
    }

    function bt() {
        $('.f14 a').each(function() {
            var href = $(this).attr("href");
            if (href.indexOf('name=') > 0) {
                var st = jsright(href, '=');
                // console.log(st);
                href = 'https://down.dataaps.com/down.php/' + st + '.torrent';
                $(this).attr('href', href);
            }
        })
    }

    var ur = window.location.href;
    if (ur.indexOf("state") > 1) {
        // console.log('启动了 ');
        setTimeout(bt, 1000);
    }

    var res = '';
    var pattstr = '.subject';
    var urls = $('.subject');
    var s_urls = [];
    var defer = $.Deferred();
    var i, p;
    for (i = 0; i < urls.length; i++) {
        var url = urls[i].href;
        s_urls.push(url);
    }
    //这一步必须要写,要不然下面的then无法使用
    defer.resolve($("#content_2015195").append(""));
    $.each(s_urls,
    function(i, e) { //i 是序列,e是数值
        defer = defer.then(function() {
            return $.ajax({
                url: e,
                method: 'get',
                success: function(data) {
                    // 匹配图片(g表示匹配所有结果i表示区分大小写)
                    var imgReg = /<img.*?(?:>|\/>)/gi;
                    // 匹配src属性
                    var srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;
                    var arr = data.match(imgReg);
                    for (var j = 9; j < arr.length; j++) {
                        var src = arr[j].match(srcReg);
                        // 获取图片地址,match对象没有length属性,先转数组
                        // 转数组需要先判空
                        if (src != null) {
                            var srcArr = Object.keys(src);
                            // 第二个就是真实的匹配结果,在去除无用图片后,添加进img标签
                            if (srcArr.length > 1 && !strContains(src[1])) {
                                $('.subject').eq(i).append('<img src="' + src[1] + '" width=400 /><p>');
                            }
                        }
                    }
                }
            })
        });
    });
    defer.done(function() {
        $("#content_2015195").append("ajax全部执行完成<br/>")
    });
})

返信を投稿

返信を投稿するにはログインしてください。