Easy Favorites
// ==UserScript== // @name BS Favorites // @namespace https://bs.to // @version 1.3.7 // @description Easy Favorites // @author Asu_nyan // @match https://bs.to/* // @match https://burningseries.co/* // @grant none // @icon https://bs.to/favicon.ico // @require https://greasyfork.org/scripts/375096-bs-library/code/BS_Library.js?version=651891 // ==/UserScript== // jshint esversion: 6 const BS = window.BS; const AjaxReload = true; // Lädt die Serienliste in der Navigation neu, wenn eine Aktion ausgeführt wird. const css = ` .bootstrap-btn { display: inline-block; font-weight: 400; text-align: center; white-space: nowrap; vertical-align: middle; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; border: 1px solid transparent; padding: 0.375rem 0.75rem; font-size: 1rem; line-height: 1.5; border-radius: 20rem !important; transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } @media screen and (prefers-reduced-motion: reduce) { .bootstrap-btn { transition: none; } } .bootstrap-btn:hover, .bootstrap-btn:focus { text-decoration: none; } .bootstrap-btn:focus, .bootstrap-btn.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } .bootstrap-btn.disabled, .bootstrap-btn:disabled { opacity: 0.65; } .bootstrap-btn:not(:disabled):not(.disabled) { cursor: pointer; } a.bootstrap-btn.disabled, fieldset:disabled a.btn { pointer-events: none; } .btn-info { color: #fff; background-color: #17a2b8; border-color: #17a2b8; } .btn-info:hover { color: #fff; background-color: #138496; border-color: #117a8b; } .btn-info:focus, .btn-info.focus { box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } .btn-info.disabled, .btn-info:disabled { color: #fff; background-color: #17a2b8; border-color: #17a2b8; } .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle { color: #fff; background-color: #117a8b; border-color: #10707f; } .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } .btn-outline-info { color: #17a2b8; background-color: transparent; background-image: none; border-color: #17a2b8; } .btn-outline-info:hover { color: #fff; background-color: #17a2b8; border-color: #17a2b8; } .btn-outline-info:focus, .btn-outline-info.focus { box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } .btn-outline-info.disabled, .btn-outline-info:disabled { color: #17a2b8; background-color: transparent; } .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle { color: #fff; background-color: #17a2b8; border-color: #17a2b8; } .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } .btn-sm, .bootstrap-btn { padding: 0.25rem 0.5rem; font-size: 0.875rem; line-height: 1.5; border-radius: 0.2rem; } `; let favshows = []; const addFav = 'Zu Favoriten hinzufügen'; const remFav = 'Aus Favoriten entfernen'; (function() { 'use strict'; BS.Favorites.Get((list) => { favshows = list; }); setTimeout(setup, 1000); })(); function setup() { BS.Helper.InjectCSS(null, css); let a = document.querySelector('#sp_left h2'); let span = document.createElement('span'); let btnFav = document.createElement('button'); let btnClass = (favshows.includes(BS.Series.ID())) ? 'btn-info' : 'btn-outline-info'; span.id = 'bs-fav-script'; span.appendChild(btnFav); btnFav.classList.add('bootstrap-btn'); btnFav.classList.add('btn-xs'); btnFav.classList.add(btnClass); btnFav.innerText = (favshows.includes(BS.Series.ID())) ? remFav : addFav; btnFav.addEventListener('click', clickEvent); a.appendChild(span); } function clickEvent(e) { let b = (e.target.innerText.trim() == addFav) ? true : false; if(b) { e.target.classList.remove('btn-outline-info'); e.target.classList.add('btn-info'); e.target.innerText = remFav; } else { e.target.classList.remove('btn-info'); e.target.classList.add('btn-outline-info'); e.target.innerText = addFav; } blockAction(e.target, 1000, () => { let id = BS.Series.ID(); if(b) favshows.push(id); else { let index = favshows.indexOf(id); favshows.splice(index, 1); } BS.Favorites.Save(favshows, AjaxReload); }); } function blockAction(el, time, callback) { el.classList.add('disabled'); el.setAttribute('disabled', true); if(callback) callback(); setTimeout(() => { el.classList.remove('disabled'); el.removeAttribute('disabled'); }, time); } // 1. Create the button var discordbutton = document.createElement("button"); discordbutton.innerHTML = "Discord"; discordbutton.style.float = "right"; discordbutton.style.backgroundColor = "#1F1F1F"; discordbutton.style.color = "#C9C9C9"; discordbutton.style.cursor = "help"; discordbutton.style.opacity = 1.001; // 2. Append somewhere var navigation = document.getElementsByClassName("navigation")[0]; navigation.children[0].appendChild(discordbutton); // 3. Add event handler discordbutton.addEventListener ("click", function() { window.open("https://is.gd/bstodiscord", "_blank"); }); // 1. Create the button var invisiblediscordbutton = document.createElement("button"); invisiblediscordbutton.innerHTML = "Inoffizieller BS Discord"; invisiblediscordbutton.style.float = "left"; invisiblediscordbutton.style.marginLeft = "-268px"; invisiblediscordbutton.style.marginTop = "109px"; invisiblediscordbutton.style.fontSize = "25px"; invisiblediscordbutton.style.cursor = "help"; invisiblediscordbutton.style.backgroundColor = "#1F1F1F"; invisiblediscordbutton.style.color = "#C9C9C9"; invisiblediscordbutton.style.opacity = 0.001; // 2. Append somewhere var navigation2 = document.getElementsByClassName("navigation")[0]; navigation2.children[0].appendChild(invisiblediscordbutton); // 3. Add event handler invisiblediscordbutton.addEventListener ("click", function() { window.open("https://cutt.ly/bstodiscord", "_blank"); });