// Скрипт, подсвечивающий на страницах категорий статьи размером менее 4 Кбайт.
// Работает по кнопке "Показать короткие" на панели mw-content-subtitle (под надписью "Материал из Википедии — свободной энциклопедии").
// Внимание: выполняется долго. Может, как-то можно получать информацию о страницах одним запросом?
if( $('body').hasClass('ns-14') )
{
if ($( "#mw-content-subtitle" ).children().length > 0)
{
$( "#mw-content-subtitle" ).append(' | ').append($("<a>").text('Показать короткие').click(check));
}
else
{
$( "#mw-content-subtitle" ).append($("<a>").text('Показать короткие').click(check));
}
}
function request( URL )
{
var oRequest = new XMLHttpRequest();
oRequest.open('GET', URL, false);
oRequest.send(null);
return oRequest.responseText;
}
function check()
{
var pageLengthThreshold = 4096; // Желаемый размер статьи, байт
var catContent = document.documentElement.innerHTML;
var articles = document.getElementsByClassName("mw-category-generated")[0].innerHTML.match( /<li><a href="\/wiki\/[^>]+>([^>]+)<\/a><\/li>/g );
var regex = />([^>]+)</;
var t = 0;
while (articles && articles[t])
{
var page = regex.exec(articles[t]);
if (page != null)
{
var title = page[1];
var pageInfo = request('https://ru.wikipedia.org/w/api.php?format=json&action=query&prop=info&titles=' + encodeURIComponent(title));
if (pageInfo != null)
{
var regNs = /"ns":(\d+)/g;
var ns = regNs.exec(pageInfo)[1];
if (ns == 0)
{
var regLength = /"length":(\d+)/g;
var lengthInfo = regLength.exec(pageInfo);
if (lengthInfo != null && lengthInfo[1])
{
var length = lengthInfo[1];
if (length < pageLengthThreshold) // Размер статьи меньше желаемого
{
var art = articles[t];
art = art.replace('<li>', '<li style="background-color:#baf5ef;">'); // Цвет подсветки
catContent = catContent.replace(articles[t], art);
}
}
}
}
}
t++;
}
document.documentElement.innerHTML = catContent;
}