nastykast / Non-Jam Top 10

// ==UserScript==
// @name         Non-Jam Top 10
// @version      0.8
// @description  Hide torrents with jam.band on the "Top 10"
// @author       Chameleon, nastykast
// @include      http*://redacted.sh/*
// @include      http*://orpheus.network/*
// @grant        none
// @copyright 2021, nastykast (https://openuserjs.org/users/nastykast)
// @license MIT
// @updateURL https://openuserjs.org/meta/nastykast/Non-Jam_Top_10.meta.js
// @downloadURL https://openuserjs.org/install/nastykast/Non-Jam_Top_10.user.js
// ==/UserScript==
//
// ==OpenUserJS==
// @author nastykast
// ==/OpenUserJS==
//
// Forked from https://greasyfork.org/en/scripts/25753-pth-non-jam-top-10
 
(function() {
  'use strict';
 
  if(window.location.href.indexOf('threadid=3392') != -1 && window.location.href.indexOf('redacted.sh') != -1)
    showSettings();
  if(window.location.href.indexOf('threadid=10646') != -1 && window.location.href.indexOf('orpheus.network') != -1)
    showSettings();
 
  document.getElementById('nav_top10').getElementsByTagName('a')[0].href="/top10.php?type=torrents&limit=100&nonjam=true";
  if(window.location.href.indexOf("/top10.php?type=torrents&limit=100&nonjam=true") != -1)
    filterTop100();
})();
 
function filterTop100()
{
  document.getElementsByTagName('h2')[0].innerHTML = 'Top 10 Torrents';
  var h3s = document.getElementsByTagName('h3');
  for(var i=0; i<h3s.length; i++)
  {
    h3s[i].innerHTML = h3s[i].innerHTML.replace(/100/, "10");
  }
 
  var settings = getSettings();
  var tables = document.getElementsByClassName('torrent_table');
  for(var i=0; i<tables.length; i++)
  {
    var count=0;
    var trs=tables[i].getElementsByTagName('tr');
    for(var j=1; j<trs.length; j++)
    {
      var tags=trs[j].getElementsByClassName('tags')[0];
      var hasTag=false;
      for(var k=0; k<settings.blacklist.length; k++)
      {
        if(tags.innerHTML.indexOf(settings.blacklist[k]) != -1 || count >= 10)
        {
          trs[j].style.display='none';
          hasTag=true;
          break;
        }
      }
      var artist = trs[j].getElementsByTagName('strong')[1].getElementsByTagName('a')[0].textContent;
      for(var k=0; k<settings.artists.length; k++)
      {
        if(artist === settings.artists[k] || count >= 10)
        {
          trs[j].style.display='none';
          hasTag=true;
          break;
        }
      }
      if(!hasTag)
        count++;
    }
  }
}
 
function showSettings(message)
{
  var div=document.getElementById('ChameleonSettings');
  if(!div)
  {
    var before = document.getElementsByClassName('forum_post')[0];
    div = document.createElement('div');
    div.setAttribute('id', 'ChameleonSettings');
    before.parentNode.insertBefore(div, before);
    div.setAttribute('style', 'width: 100%; text-align: center; padding-bottom: 10px;');
    div.setAttribute('class', 'box');
  }
  div.innerHTML = '<h2>Non-Jam Top 10 Settings</h2><br />';
  var settings = getSettings();
 
  var labelStyle = '';
 
  var label = document.createElement('span');
  label.setAttribute('style', labelStyle+' margin-left: 10px;');
  label.innerHTML = 'Ignore Tags: ';
  div.appendChild(label);
  var input=document.createElement('input');
  input.setAttribute('style', 'width: 20em;');
  input.placeholder='Ignore torrents with these tags';
  input.value = settings.blacklist ? settings.blacklist.join(', '):'';
  div.appendChild(input);
  input.addEventListener('change', changeSettings.bind(undefined, div), false);
 
  div.appendChild(document.createElement('br'));
 
  var label = document.createElement('span');
  label.setAttribute('style', labelStyle);
  label.innerHTML = 'Ignore Artists: ';
  div.appendChild(label);
  var input=document.createElement('input');
  input.setAttribute('style', 'width: 20em;');
  input.placeholder='Ignore torrents with these artists';
  input.value = settings.artists ? settings.artists.join(', '):'';
  div.appendChild(input);
  input.addEventListener('change', changeSettings.bind(undefined, div), false);
 
  var a=document.createElement('a');
  a.href='javascript:void(0);';
  a.innerHTML = 'Save';
  div.appendChild(document.createElement('br'));
  div.appendChild(a);
}
 
function changeSettings(div, nul, message)
{
  var settings = getSettings();
  var inputs=div.getElementsByTagName('input');
 
  settings.blacklist = inputs[0].value.split(', ');
  settings.artists = inputs[1].value.split(', ');
 
  window.localStorage.nonJamTop10Settings = JSON.stringify(settings);
  showSettings(message);
}
 
function getSettings()
{
  var settings = window.localStorage.nonJamTop10Settings;
  if(!settings)
  {
    settings = {blacklist:['jam.band', 'jam.rock'], artists:[]};
  }
  else
    settings = JSON.parse(settings);
  if(!settings.ignoreTags)
    settings.ignoreTags='';
  return settings;
}