[GM] Anime-Loads Title Generator (listed) 05.05.2021 15:38:47 (191 lines) [Edit] [Raw] [View]

// ==UserScript== // @name Anime-Loads Title Generator // @version 3.0 // @grant none // @include https://www.anime-loads.org/media/* // ==/UserScript==

var mainDiv = document.getElementById("main");

if(mainDiv){

var styleLib = `

.altg_panel {

position: absolute; 
display: block; 
top: 70px; 
left: -128px; 
color: #337ab7;

}

.altg_panel > * {

max-width: 128px;
padding: 10px 15px;

margin-bottom: 10px; background: white; border: 1px solid #337ab7; border-right: none; border-radius: 4px; border-top-right-radius: 0; border-bottom-right-radius: 0; -webkit-user-select: none; user-select: none; }

.altg_panel > *:last-child {

margin-bottom: 0;

}

altg_popup {

top: 20px; 
position: absolute; 
width: calc(100% - 40px); 
border: 1px solid black; 
background: white; border-radius: 4px;
z-index: 1000;

}

altg_popup h1 {

margin-left: 10px; 
font-weight: bold;

}

altg_popup h2 {

font-size: 1.5em;

}

altg_popup hr {

margin: 10px;

}

`;

var pluginStyle = document.createElement("style"); pluginStyle.innerHTML = styleLib; document.head.appendChild(pluginStyle);

var pluginButtonPanel = document.createElement("DIV"); pluginButtonPanel.className = "altg_panel"; mainDiv.appendChild(pluginButtonPanel);

var generateButton = document.createElement("DIV"); generateButton.innerText = "Generate Titles"; pluginButtonPanel.appendChild(generateButton); generateButton.onclick = function(){generate(false)};

var generateButton2 = document.createElement("DIV"); generateButton2.innerText = "Generate Titles (/w Name)"; pluginButtonPanel.appendChild(generateButton2); generateButton2.onclick = function(){generate(true)};

var generateButton3 = document.createElement("DIV"); generateButton3.innerText = "Generate Titles (/w min Name)"; pluginButtonPanel.appendChild(generateButton3); generateButton3.onclick = function(){generate(true, ":")};

}

function generate(withText, shortNameSeparator){

var popupOld = document.getElementById("altg_popup");

if(popupOld){

popupOld.parentNode.removeChild(popupOld);

return;

}

var selectedReleaseContainer = document.querySelector(".panel-body .tab-content .active .active .episodes"); //content panel -> download/stream (active tab) -> release (active tab) -> episode list let linkContainer = selectedReleaseContainer || document.querySelector("#downloads_episodes_1") || document.querySelector("#streams_episodes_1"); console.debug("Using link container:"); console.debug(linkContainer); var links = linkContainer.getElementsByTagName("a"); var titles = [];

console.log(links);

for (var i = 0; i < links.length; i++) { var link = links[i]; var attribute = link.getAttribute("data-loop"); //0..n

if (attribute != null &amp;&amp; !isNaN(attribute)) {
  var names = link.children.item(0); //a span
  var titleFull = names.getAttribute("title");
  if (titleFull != null) {
    titles.push(titleFull);
  } else {
    var title = names.innerHTML.match("[0-9 ]*&lt;\\/strong&gt;\\s*(.*)");//("[0-9 ]*&lt;\\/strong&gt;[ ]*([A-Za-zÄ-Üä-üß0-9 \\?!\\/\\-\\+\\_\\*\"\\.:;,…\\\\(\\)&amp;']*)");
    if (title != null &amp;&amp; title[1] != null){
      titles.push(title[1]);
    }
  } //titles.push(names.attributes.length &gt;= 2 ? names.attributes[1].name + "=" + names.attributes[1].value : "n/a");
}

}

if (titles.length > 0){ var seriesname = document.getElementsByClassName("page-header")[0].getElementsByTagName("h1")[0].title;

seriesname = extractShortName(seriesname, shortNameSeparator);

var data = '';
data += '' + seriesname + '';
for (var k = 0; k &lt; titles.length; k++) {
  data += '' + (withText == true ? "" + seriesname + " Episode " + (k+1) + " - " : "") + extractShortName(titles[k], shortNameSeparator, true) + '';
  if (k + 1 &lt; titles.length)
    data += '';
}
data += "";
//var newDoc = window.open('', 'wnd');
//newDoc.onload = function(){
//newDoc.document.head.innerHTML = document.head.innerHTML;
//newDoc.document.head.getElementsByTagName("title")[0].innerHTML = "GET-EP v2.1";
//newDoc.document.body.innerHTML = data;
//};
//newDoc.focus();
var popup = document.createElement("DIV");
popup.id = "altg_popup";
popup.innerHTML = data;
mainDiv.appendChild(popup);

}

}

function extractShortName(name, separator, skipFirst){ if (separator != null){ let seperatorIndex = name.indexOf(separator); if (seperatorIndex >= 0){ if (skipFirst === true){ name = name.substr(seperatorIndex + 1).trim(); }else{ name = name.substr(0, seperatorIndex); } } } return name; }

setInterval(function(){ let stupidScripts = document.querySelectorAll("script[src='https://undefined']"); for(let s of stupidScripts){ try { s.remove(); }catch(ignore){ } } }, 1000);