// ==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 && !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("<strong>[0-9 ]*<\\/strong>\\s*(.*)");//("<strong>[0-9 ]*<\\/strong>[ ]*([A-Za-zÄ-Üä-üß0-9 \\?!\\/\\-\\+\\_\\*\"\\.:;,…\\\\(\\)&']*)");
if (title != null && title[1] != null){
titles.push(title[1]);
}
} //titles.push(names.attributes.length >= 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 = '<div style="margin:15px;">';
data += '<h1>' + seriesname + '</h1><hr><div class="panel panel-default"><center><br>';
for (var k = 0; k < titles.length; k++) {
data += '<h2>' + (withText == true ? "<b>" + seriesname + " Episode " + (k+1) + "</b> - " : "") + extractShortName(titles[k], shortNameSeparator, true) + '</h2>';
if (k + 1 < titles.length)
data += '<hr>';
}
data += "<br></center></div></div>";
//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);