meneame.net - Mostrar negativizadores de meneos

Muestra una lista de los usuarios que han votado negativo un meneo.

当前为 2021-11-14 提交的版本,查看 最新版本

// ==UserScript==
// @name        meneame.net - Mostrar negativizadores de meneos
// @namespace   http://tampermonkey.net/
// @version     0.5
// @description Muestra una lista de los usuarios que han votado negativo un meneo.
// @author      ᵒᶜʰᵒᶜᵉʳᵒˢ
// @include     *.meneame.net/*
// @icon        https://www.meneame.net/favicon.ico
// @grant       GM.xmlHttpRequest
// @grant       GM_addStyle
// @license     GNU GPLv3
// ==/UserScript==

// ---- SCRIPT values ----
const COLUMNS = 3;
const ALIGNMENT = 'left'; // right / left
const ORDER_DATE = 'ASC'; // ASC / DESC
const NAME_LENGTH = 20;

// ---- API values ----
const NEGATIVE_COUNTER_CLASS = '.negative-vote-number';
const NEGATIVE_HEADER = '.news-details';
const VOTERS_LIST = '.voters-list';
const VOTER = 'a + span';
const NEWS_SUMMARY = '.news-summary'
const URL_VOTERS = 'https://www.meneame.net/backend/meneos.php?id=MENEO_ID&p=PAGE_COUNTER';

const divNegativizators = "<div class='negative_class_header'>HEADER</div><BR><div class='negative_class_columns_container'><div class='negative_class_voters'>LIST_NEG</div></div>";
const divNegativizator = "<div class='negative_class_voter'><p class='negative_class_what WHAT'>WHAT</p><p class='negative_class_who'>WHO</p><p class='negative_class_when'>WHEN</p></div>";
const NegativizatorsCSS = ".negative_class_header {text-align: left; margin-left: 20px;} .negative_class_columns_container {margin-left: 20px; margin-right: 20px; text-align: center;} .negative_class_voters {text-align:  right; column-count: COLUMNS; column-rule-style: solid; column-gap: 5px;} .negative_class_voter {text-align: right; font-size: smaller; column-count: 3; column-width: 60px;}";
var Total_Negativizators = 0;
var Array_Voters = [];

ListNegativizators();

function ListNegativizators() {
    if (parseInt(document.querySelector(NEGATIVE_COUNTER_CLASS).textContent,10) > 0) ShowList();
}

async function ShowList() {
    var negative_header_content = '';
    var voters_page_counter = 1;
    var MaxPages = 0;
    while (voters_page_counter > 0) {
        await GM.xmlHttpRequest(
            {method: "GET", url: url_votes(voters_page_counter), responseType: "document", onload: function(result) {
                var xmlDoc = new DOMParser().parseFromString(result.responseText, "text/html");
                if (negative_header_content == '') {
                    negative_header_content = xmlDoc.querySelector(NEGATIVE_HEADER).innerHTML;
                    MaxPages = parseInt(xmlDoc.getElementsByClassName('pages')[0].lastChild.text, 10);
                }
                var node = xmlDoc.querySelector(VOTERS_LIST);
                if (node && node.childElementCount > 0) {
                    var node_neg = node.querySelectorAll(VOTER);
                    if (node_neg && node_neg.length > 0) {
                        node_neg.forEach( function(node) {
                            divNegativeVoter(node.textContent, node.previousElementSibling.title, node.previousElementSibling.innerHTML);
                        });
                    }
                } else {voters_page_counter = -1;}
            }
            }
        );
        ++voters_page_counter;
        if (voters_page_counter > MaxPages) voters_page_counter = 0;
    }
    if (Total_Negativizators > 0) {
        GM_addStyle(NegativizatorsCSS.replace('COLUMNS',COLUMNS).replace('text-align: right','text-align: ' + ALIGNMENT));
        var where_to_inject = document.querySelector(NEWS_SUMMARY);
        if (ORDER_DATE == 'ASC') Array_Voters.sort((a,b) => b.Total_Negativizators - a.Total_Negativizators);
        where_to_inject.insertAdjacentHTML("afterend", columnDiv(negative_header_content, ExtractVotersFromArray()));
    }
}

function ExtractVotersFromArray() {
    var result = '';
    for(var voter_div of Array_Voters) {result += voter_div.strData;}
    return result;
}

function divNegativeVoter(what, who, avatar) {
    var date_lenght = 20;
    if ((who.slice(-11)).slice(0,1) == ':') date_lenght = 9;
    var when = who.slice(-date_lenght).replace(' UTC','').replace('-202','-2');
    if (ALIGNMENT == 'left') {
        who = avatar + '&nbsp;' + TrimName(who.slice(0,-1*(date_lenght+2)));
    } else {
        who = TrimName(who.slice(0,-1*(date_lenght+2))) + '&nbsp;' + avatar;
    }
    ++Total_Negativizators;
    var strData = divNegativizator.replace('WHAT', what).replace('WHAT',what.toUpperCase()).replace('WHO', who).replace('WHEN',when);
    Array_Voters.push({strData, Total_Negativizators});
}

function TrimName(strName) {
    return strName.length > NAME_LENGTH ? strName.substring(0, NAME_LENGTH - 1) + "…" : strName;;
}

function columnDiv(header_neg, list_neg) {
    return divNegativizators.replace('HEADER',header_neg).replace('LIST_NEG',list_neg);
}

function url_votes(page) {
    return URL_VOTERS.replace('PAGE_COUNTER',page).replace('MENEO_ID', link_id);
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址