油猴(Tampermonkey)脚本 ——斗鱼房间按照人气排序

qikor_admin 提交于 周五, 08/11/2017 - 17:04

// ==UserScript==
// @name         DouyuRoomSort
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://tampermonkey.net/documentation.php?version=4.2.7&ext=dhdg&show=dhdg
// @grant        none
// @include      http://www.douyu.com/directory/*
// @include      https://www.douyu.com/directory/*
// ==/UserScript==

var imgdefereds=[];
$('img').each(function(){
    var dfd=$.Deferred();
    $(this).bind('load',function(){
        dfd.resolve();
    }).bind('error',function(){
        //图片加载错误,加入错误处理
        // dfd.resolve();
    });
    if(this.complete) setTimeout(function(){
        dfd.resolve();
    },1000);
    imgdefereds.push(dfd);
});
$.when.apply(null,imgdefereds).done(function(){
    roomSort();
});
var roomSort = function(){
    var output = '';
    var used_index = [];
    $('#live-list-contentbox li').each(function(index, value){
        var this_people_num = $(this).find('span.dy-num').html();

        if (this_people_num.indexOf('万') > 0) {
            this_people_num.replace('万','');
            this_people_num = parseFloat(this_people_num)*10000;
            $(this).find('span.dy-num').html(this_people_num);
        }
    });
    $('#live-list-contentbox li').each(function(index, value){
        var temp = '';
        var max = '';
        $('#live-list-contentbox li').each(function(index2, value2){
            var this_num = $('#live-list-contentbox li').eq(index2).find('span.dy-num').html();
            if (used_index.indexOf(index2) == -1) {
                if (max === '' || parseInt(max) < parseInt(this_num)) {
                    max = this_num;
                    temp = index2;
                }
            }
        });
        used_index.push(temp);
        output = output + '&lt;li&gt;' + $('#live-list-contentbox li').eq(temp).html() + '&lt;/li&gt;';
    });
    $('#live-list-contentbox').html(output);

    $('img').each(function(){
        if ($(this).attr('data-original') !== '') {
            $(this).attr('src', $(this).attr('data-original')+'?t='+Math.random());
        }
    });
};
$(function(){
    $('div.tag_list li a').click(function(){
        var siv = setInterval(function(){

            var is_new = false;
            $('#live-list-contentbox li').each(function(index, value){
                var this_people_num = $(this).find('span.dy-num').html();
                if (this_people_num.indexOf('万') > 0) {
                    is_new = true;
                }
            });

            if (is_new) {
                roomSort();
                clearInterval(siv);
            }

            $('#live-list-contentbox li').each(function(index, value){
                if (index > 0) {
                    var this_num = $('#live-list-contentbox li').eq(index).find('span.dy-num').html();
                    var pre_num = $('#live-list-contentbox li').eq(index-1).find('span.dy-num').html();

                    if (parseInt(this_num) > parseInt(pre_num)) {
                        is_new = true;
                    }
                }
            });

            if (is_new) {
                roomSort();
                clearInterval(siv);
            }
        },200);
    });
});