Greasy Fork is available in English.

BS Favorites

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");
});