User:RCSDevs/rank.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
![]() | Documentation for this user script can be added at User:RCSDevs/rank. |
$(document).ready(function()
{
var tab = $('#ca-nstab-main');
//Ensure the current page is an actual article
if(tab.length && tab.attr('class') === 'selected')
{
var goodIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTCtCgrAAAAEH0lEQVQ4T4WUD0wUVBzH3x3cH5C/8qfTA5ERMBCygxunEh5keQqIFHkc3Z+O4/inHQ5CMWKDNA04yUG4WOrIZeomE1kOQ6uJZpYZzbUlUgxzrmCrZqxaMbhvv/cYDTLWb/tsb7/33me/95ctEksIB9FH3CemiSlijDhNGAk58b8hIezEOJMxsGQJ5FvlCHc+gtCSMHhle4PFS8C8qI+xUSKHWDRkRDeTMnjrZcg5novOLw/jo7sfY/DeoODi2EW4P3dD/1YmJKlSLvUQ+wheyILgiW6mYAh1haHtxhs4e6cXZ77pwdmRXtEWUHsut/faPgTYAsELoLlNwjIv7LxDUa7E/k8PoLm/BeoYNby8vWCwGXD01jG8PXQEuk06SKVSxGpi0X6lA41XmyArlHPhDJElTBT8AMZZhgT69zJpSQeRlpfGB/1D9Yka2N32BTlDmUGM1Z/MBEuifWXsFiGWXiwOoFEKU18RXh6shyZPs2Cy83gptjUbF+T0ZZlirPW8DaxG7CfnSYKd46fJWqTY0pOH8oEKWE5aoUpWQRmoRKpNK3JlF8qRkJsIhb8CK9asgKO3ROSNfYViLosQwg4uvM9yZ4VJxx7Dtj6jGGR63wRzvxnWCxbYBqwC3uY53sfH8LFr3103K3xCLPsTLpxm5lmhss0XEVkRdGUMsA2aUPqZFZU37dgx5BBUfmGH87oF1suF2NCRhZV50QhqXzorzBHC77hwiguV7Uos6w4V1+CptnS4hm3Y/b0TDT9WonFih6DhhwrsuuvEi7et0L2kgXeYF1TvhEB+SAGWLYQjXDimyJcj6pQK2kvxUC6TQ1sXj/rJF+CeqkKnpxZdqEOXpw5vztSilXL1D4qRaKbqUv2QMhCHyBPhkGXQK2LsMhee9tEokPJBLDZ/lYY4WwRC4gLQPOXAUexED17BebwqOEPtI5Rr+sUC5VI5Ht/zKDbe1GJ1fwxkaiFs4UKjxFsCXW8CjCN62L82QO4nQ7olEb1/1OMG3BjGYdxGJ66jFad+3oVVT0chQO2L0ns5KBjOwOquGC7j6LiQ/xqjy3NCYBrNQvXvBXBe2gTfYAVCVP54fvt67D9kxt6DRShwrIVfkA+CI/zgGtqKqsln8Nyd9QhO8eOyK1w2F7mEJ80dj4qfctE4Y8HrE8V4tmkdEtIjERYZgPCoQCRnRcHk1qN1sgQN02aUTmQjcWcUl/1JaLhofrwmlt6aIKT1U0VoQQktdjvtW5WgE5Vo9jiw5y+6UuPZSK6J5jL+45QKw7+Cv0P+a8yoN4Ziy4drRAWuX/NR81sBqgnXg3yUjG+G4ZwWYbqgucr+UzY/+HvkDx1Bq5YgxrocSbujkVS7EtEmFfxjfLiIc5V4aJmLBa92A8Hf5jWC/87fEvyetRLiNB8Oxv4GTLFVzBQ3zpMAAAAASUVORK5CYII=',
mehIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTCtCgrAAAADj0lEQVQ4T42Vf0jUZxzHn693druKZsFEkQbNLCq9iqwcsRqOsx9q6Zn540a2sYqCiigKtvVHjcWqrXI02MzoDM08C7VGVp6p01UrhX5alr8TyqNYLklI6t3n/ZyGZsI+8OI+vJ/35/29+z7P93tqmLIIaUKB0Cj09MGeWqpAz/+q5UK7yawwOUIhJsmEL9d9COe60bA7DEwSzWRSEE+bkMSB4cpPyDQMhTkLzMgqWIQrt35BU8dZtD7yaBrailBZtwMHXLMQ+ZkCvTJzUDAY8G5lmv0VVm8JxKVbe3CnJR+3m4/rz4FQq2/Nh+fqVqzcYAVnZJahgyqZV8vYaEX19Z04V70bEdMnwPKBP9IzolF775AmbWW01mwzPsH5mt0o+2cznOv9+r8pb5Uu3tz22fMVckujUXNjJ5KdUTS85TfX15qBGj30HimJBGdFaxf0RqVxA7b/rFBclYKyaxuQkGIbNHwgKwn7hYFaonjoPXUxEdv2Kfj5NoonQ7kn2xR+yFJwe2JxujodR4sSEDZlHEZYTFjimKg1siRxotYmTR0Hl3ioFXgW61lmSBaPlGqOcfgCDxeFw12+UHPy4iIUVcWi5K84nKmO17CnxrV+X3aJTc8yg1kM7En+xhe4x2XFibIo/FnzOSpq7bh8czHq7sbhesNSDXtqXKOnwPMp9h0brWeZway3gT+5FP4oNlB6KQg37i9AS8dCeJ/EoasrAd3PHRr21LhGz/nL4/UMZwcGNsemKrjOGii/Ogr1jUHweqehp8uOl88c6H2Sit5Opw/pqfX8Jxfz2rSXM5xlBrMY6J45V+HClZG41xSEkBATzGZjMKY+3tHHf2xGQ0swymR2hmQwi4HpPO3nqgLQ6Z2AigthKMwOR+GhKLj3fgH3rni4v1sO97cCe9G4VngkHJXi5UxpZQB49CRLHxt9sFPSrHj6NBSvX8wCOu3AgxVA3RqgYjtw+kcf7OvW+tbEQy9nOMsMYQQDWfrRyzkWiN4XNuDf+UB7PFDvBGol4O9NPthT45p46HXlBA559Por02IxkJcXLMbpwLN5wOMYoG0Z0JTkgz21rnnak5sbLAfdYNiQlwOLr69febVVX41B44NQvOy24VV3JF4/n6thT63xfigyVo3p/2aZfbPD1grhob+/AXuMFd/vGIvfsz7SsKdmljXx8J4N+ZnDFTfKKRQKrUJvH+x5NNKF9/wFKPUGCTWqaHSE3FkAAAAASUVORK5CYII=',
badIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTCtCgrAAAADkklEQVQ4T41VW0xcVRQ9M8PAoEgNMLSKlkdpC2UytKYRJMojyFQedijTTpwZEGmApIYCpU0gaKNB0S/9cOZDKomUCI3jT0GbNml5FNrGmtEYvrQJD8GExBj91KTW5V7nzlBIQ+JOVu7O3mutc84959yrtokEQUDwlWBF8HcUy4KwwC8g53+FV7AWZ1YoTFXw5Jjx5kEbTjnjJTfBmaIQZ1IQzqrgBAXbhUUQMimF8gwLvuyoxML4h/j1ziTWf7iB9e+vY2U2jMiFPow0OlH2lAK5oglGtY9EyCqzOleSioWxD7AycwlL0+P6uRmx2t1QFzoP2UCNaGm6JbwcrUsIP158B/OfD6JwXzYS4q14/dUK/DwRxE+Xg2iSnLXC/dm4NTIopp3ocJhiM91YPl/uGpdwtbscC6PvIuAqImEDI2+f1NhcI4fcyfbn9PKlxneqN8rPDfi4WGFuwItI6DReK3NuEX/W3aCxuUYOuTPn6/GRaC3GRnH3VZi7OVyqMN1fg1uDPlzudePAMymwWePgKcrVNYK5zWpBgfQmeut1baqvWmud4kEvGi57sg3DiZMOTPe6MN3nwmzfK5jnAP21uP1WnQZz1tgjh9zJVqfW0oNeNPyrPc8wHD2SiKmOItzpLkWkpxKfeg+j9YU9qHVkoE7QJvmQ1CJnKzWH3C+qk7S2TTzotWE4WqEwWaXwrWcnwt5C5KQ8BpO8l4K0ZLj3Pq3BnLU9KY8L5yDuep/VGmrpETNc9uUqXKsyISIz/KbsSdgsJtRmpuHeGy7gjFfgi8KrazWZdiQK54pwqaGWHuK1RMNwkV3hO1cCVtzpqNqViJfSk/HAXw40uoGWZqDtlAHmTfX4R3ov2pM1lxpq6UEvGvp52udefgK/NezWIw8X5wM+MWtuB06/D/QOGWDOmvTISbaa8btnN26KNnq/9bHhYVz1Zdrwx/Es9OTZseQuEZEHaD0DnAsB731tgDlr0lsUztl8O/4UDbXi8YsgnoaME7w+o8VpspwCIEDDGnkGZKk9QMeAAeas6V6J5lITvXrHDauHEUwwmzBeslOIDhEUA/5KEdfJ85gBnUtNeuSMCTdeNKL9xLDYGvwEBTlaS04SFo9m4b6vAA8Ch/Bv4LAG8/syK/aas5NiM6OZmQbbBb8aq3EyctUuG847duDC86kazFnj3RcO39kjy9wuYr8AHgNeJ37+eWg3/wI2NuBhKPUfHZxfMnRRQ04AAAAASUVORK5CYII=';
selectedIcon = '',
currentURL = decodeURIComponent(tab.find('span a').eq(0).attr('href')),
title = currentURL.substring(currentURL.indexOf('/wiki/') + 6),
params = { //Define parameters for call to MediaWiki API (https://www.mediawiki.org/wiki/API)
action: 'query',
prop: 'revisions',
rvlimit: '50',
format: 'json',
titles: title,
rvprop: 'user|ids|comment'
};
//Send request with JSON callback
$.getJSON('https://en.wikipedia.org/w/api.php', params, function(json)
{
var pages = json.query.pages,
//Unfortunatley, there is no tag for revisions that have been reverted/undone
revs = pages[Object.keys(pages)[0]].revisions;
ids = "",
nparams = {},
flag = 0;
revs.forEach(function(rev) { ids += (rev.revid + '|'); });
ids = ids.slice(0, -1);
nparams = {
models: 'goodfaith|damaging',
revids: ids
};
$.getJSON('https://ores.wikimedia.org/v2/scores/enwiki', nparams, function(json)
{
var enwiki = json.scores.enwiki,
score = 0;
//Get an array of revision ids to iterate over. The order doesn't matter because the rev id will be present in both arrays
Object.keys(enwiki.damaging.scores).forEach(function(id)
{
score += enwiki.damaging.scores[id].probability.false;
score += enwiki.goodfaith.scores[id].probability.true;
});
/*
Not all articles will have 50 revisions, so to find the average
divide by 2x the number of revisions found (because we add a number to the score 2x per revision)
*/
score /= (revs.length * 2);
//Print score to console for debug purposes
console.info("There is a " + (score * 100) + "% chance this article is a good one.");
//Only show a bad article if it has a score <= 10%
if(score <= 0.1)
{
selectedIcon = badIcon;
}
//Only show a good article if it has a score >= 80%
else if(score >= 0.8)
{
selectedIcon = goodIcon;
}
//Only append an rating indicator if an article is very good or very bad
if(selectedIcon.length !== 0)
{
var icon = '<div id="mw-indicator-rating" class="mw-indicator"><a href="javascript:void(0)" title="This article has a rating of ' + Math.round(score * 100) + '%"><img width="20" height="20" alt="Page rated" src="' + selectedIcon + '"></a></div>';
$('.mw-indicators').eq(0).prepend(icon);
}
});
});
}
});