NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name SJ Fav (Serienjunkies Favoriten) // @namespace NoXPhasma // @copyright 2014, NoXPhasma (https://openuserjs.org/users/NoXPhasma) // @include http://serienjunkies.org/* // @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js // @require https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js // @version 1.1.3 // @date 2018-03-20 // @updateURL https://openuserjs.org/meta/NoXPhasma/SJ_Fav_(Serienjunkies_Favoriten).meta.js // @description Setze Favoriten zu deinen Lieblingsserien in einer dynamischen Favoritenliste. // @icon https://i.imgur.com/nSCWA81s.png // @license MIT // @grant none // ==/UserScript== // ---------- Cookie Functions ----------------------------------------------------------------------------------------- // function setCookie(name, value, days) { if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); var expires = "; expires=" + date.toGMTString(); } else var expires = ""; document.cookie = name + "=" + value + expires + "; path=/"; } function getCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } function deleteCookie(name) { setCookie(name, "", -1); } // // ---------- Cookie Functions ----------------------------------------------------------------------------------------- // ---------- Script -------------------------------------------------------------------------------------------------- // var defbgimg = 'https://i.imgur.com/hbKJ9lR.png'; var ownlogo = 'https://i.imgur.com/LvdmVzr.png'; var entries = getCookie('sl_list_entries'); var state = getCookie('sl_list_state'); var sitealign = getCookie('sl_sitealign'); var obj = eval('(' + entries + ')'); var url = $(location).prop('href'); var urlsplit = url.split('/'); var postop = getCookie('sl_list_top'); var posleft = getCookie('sl_list_left'); var drag = getCookie('sl_drag'); var sorting = getCookie('sl_sort'); var delfav = getCookie('sl_del'); var oldbg = getCookie('sl_oldbg'); var sitewidth = getCookie('sl_sitewidth'); var oldbgimg = '/wp-content/themes/default/img/bg.gif'; var newbgimg = '/wp-content/themes/default/img/background_main.jpg'; var bodywidth = $('body').css('width'); if (postop == undefined) { postop = '30'; } if (postop > 1000) { postop = '30'; } if (posleft == undefined) { posleft = '30'; } if (drag == undefined) { drag = '1'; } if (sorting == undefined) { sorting = '1'; } if (delfav == undefined || delfav == '0') { var delfavclass = ''; delfav = '0'; var remtitle = 'Favorit löschen'; } if (delfav == '1') { var delfavclass = ' remitemoff'; var remtitle = ''; } if (posleft > window.innerWidth) { posleft = window.innerWidth - 250; } if (sitealign == 1) { var siteright = '#outer {margin: 90px 0 0 auto;}' } else { var siteright = '#outer {margin: 90px auto;}' } if (oldbg == 1) { var sitebg = 'body{background: #636363 url(' + oldbgimg + ');}' } $(function () { // ----- Add HTML ----- // $('head').append('<style type="text/css">' + sitebg + siteright + '#serienliste{font-family:sans-serif;padding:0px;position:fixed;top:' + postop + 'px;left:' + posleft + 'px;width:250px;z-index:10000}' + '#openclose,#sl_title,#add_item,.sl_entry{box-shadow:0px 0px 4px #000}' + '#openclose,#add_item{width:30px}' + '#openclose,#add_item,#sl_title{text-align:center;font-size:14px;height:20px;padding:4px 0 1px;text-shadow:1px 1px 0px #f0f0f0;background:-moz-linear-gradient(top,rgba(234,234,234,.9),rgba(204,204,204,.9));background:-webkit-linear-gradient(top,#eaeaea,#cccccc)}' + '#openclose:hover,#add_item:hover{background:-moz-linear-gradient(top,rgba(224,224,224,.9),rgba(192,192,192,.9));background:-webkit-linear-gradient(top,#e0e0e0,#c0c0c0)}' + '#openclose,.remitem{cursor:pointer}' + '#openclose,#sl_title{float:left}' + '#openclose{border-radius:5px 0 0 0}' + '#add_item{color:#aaa;border-radius:0 5px 0 0;float:right}' + '#sl_title{margin-left:5px;cursor:move;width:sl_title_width}' + '#sl_itemlist{width:250px;margin:0px;padding:0px;list-style-type:none}' + '#sl_itemlist .sl_entry{width:250px;border-radius:0 5px 5px 0;text-align:left;height:30px;margin-top:9px;background:rgba(0,0,0,.5)}' + '#sl_itemlist span{border-radius:0 0 3px 0;text-transform:capitalize;font-size:11px;padding:1px 3px;white-space:nowrap;color:#fff;background:rgba(0,0,0,.5);position:relative;top:-1px}' + '#sl_itemlist a{background-position:0px -1px;overflow:hidden;float:left;background-size:cover;display:block;width:240px;height:30px;}' + '#sl_itemlist a:hover{text-decoration:none}' + '#sl_itemlist .remitem{border-radius:0 5px 5px 0;float:right;width:10px;height:30px;background:rgba(255,0,51,.3)}' + '#sl_itemlist .remitem:hover{background:rgba(255,0,51,.7)}' + '#sl_itemlist .remitemoff{display:none !important;background:none !important}' + '#show_info{border-radius:0 0 0 5px;font-family:sans-serif;font-size:11px;color:#fff;width:250px;text-align:left;padding:5px;position:fixed;top:220px;right:-260px;background:rgba(0,0,0,.7);z-index:9999}' + '#homelink{cursor:pointer;width:30px;height:30px;background:#aaa url(' + ownlogo + ');background-size:cover;float:right}' + '#show_info ul{list-style-type:none;margin:0 0 0 6px;padding:0px;}' + '.triggeranleitung{font-weight:bold;margin:3px 0 0;font-weight:bold;cursor:pointer}' + '#addoninfo{margin:-5px 0 -25px -30px;color:#fff;font-size:20px;padding:5px 0 0 10px;height:25px;width:15px;cursor:pointer;background:rgba(0,0,0,.7);border-radius:15px 0 0 15px;}' + '#addoninfo:hover,#show_info span:hover,.triggeranleitung:hover{color:#ACCD8A}' + '.triggeranleitung span{position:relative;top:1px;font-weight:normal}' + '.sl_check{position:relative;top:3px}' + '#anleitung{padding:0 2px;line-height:13px;display:none;text-align:justify}' + '#anleitung div{margin:5px 0 5px -6px;padding:3px;border-radius:3px;background:rgba(255,255,255,.05)}' + '</style>'); $('body').prepend('<div id="serienliste">' + '<div id="sl_head">' + '<div id="openclose" title="Liste ein/ausklappen">Δ</div>' + '<div id="sl_title">Favoriten</div>' + '<div id="add_item">+</div>' + '<div style="clear:both"></div>' + '</div>' + '<div id="sl_itemlist" style="display:' + state + '">' + '</div>' + '</div>'); $('body').prepend('<div id="show_info">' + '<div id="homelink" title="Script Seite besuchen"></div>' + '<div id="addoninfo" title="SJ Fav Optionen">?</div>' + '<ul>' + '<li><b>Optionen</b></li>' + '<li><input class="sl_check" id="check_drag" type="checkbox"> Bewegliche Favoritenliste</li>' + '<li><input class="sl_check" id="check_sort" type="checkbox"> Favoriten sortierung</li>' + '<li><input class="sl_check" id="check_width" type="checkbox"> Schmalere Leiste verwenden</li>' + '<li><input class="sl_check" id="check_delete" type="checkbox"> Löschen von Favoriten verhindern</li>' + '<li><input class="sl_check" id="check_sitealign" type="checkbox"> Seite rechtsbündig ausrichten</li>' + '<li><input class="sl_check" id="check_oldbg" type="checkbox"> Alten Hintergrund verwenden</li>' + '<li><input class="sl_check" id="check_sitewidth" type="checkbox"> Schmalere Seitenbreite</li>' + '<li><input class="sl_check" id="check_reset" type="checkbox"> Position zurücksetzen</li>' + '<li class="triggeranleitung">Anleitung <span>∇</span></li>' + '<li>' + '<div id="anleitung">' + '<div>Die Favoritenliste kann per Drag & Drop frei bewegt werden, dazu den Titel mit der Maus greifen.</div>' + '<div>Neue Favoriten können durch ein klick auf das <b>+</b> hinzugefügt werden, dies ist nur möglich wenn man sich gerade eine Serie anzeigen lässt.</div>' + '<div>Die einzelnen Favoriteneinträge können per Drag & Drop sortiert werden.</div>' + '<div>Um vorhandene Favoriten zu löschen, einfach den roten Bereich am rechten Rand des Favoriten anklicken.</div>' + '<div>Die Favoriten können mit einem klick auf das Dreieck Ein-/Ausgeblendet werden.</div>' + '</div>' + '</li>' + '</ul>' + '</div>'); // // ----- Add HTML ----- // ----- List Options ----- // if (sitewidth == 1) { $('#outer').prop('style', 'width:1000px !important'); $('#content').prop('style', 'width:680px !important'); $('#search #inputString').prop('style', 'width: 833px !important'); } else { $('#outer').prop('style', 'width:1200px !important'); $('#content').prop('style', 'width:886px !important'); $('#search #inputString').prop('style', 'width: 1033px !important'); } $('#show_info span,.triggeranleitung').click(function () { $('#anleitung').slideToggle('slow'); }); $(window).resize(function () { getposleft = $('#serienliste').css('left'); if (getposleft > window.innerWidth) { newposleft = window.innerWidth - 250; $('#serienliste').css('left', newposleft + 'px'); } if (posleft < $('body').css('width')) { $('#serienliste').css('left', posleft + 'px'); } }); $('#check_drag').click(function () { if ($(this).is(':checked') == true) { $('#serienliste').draggable('option', 'disabled', false); setCookie('sl_drag', '1', 900); $('#sl_title').css('cursor', 'move'); } else { $('#serienliste').draggable('option', 'disabled', true); setCookie('sl_drag', '0', 900); $('#sl_title').css('cursor', 'auto'); } }); if (sorting == 0) { $('#sl_itemlist').sortable('option', 'disabled', true); } if (sorting == 1) { $('#check_sort').prop('checked', true); } $('#check_sort').click(function () { if ($(this).is(':checked') == true) { $('#sl_itemlist').sortable('option', 'disabled', false); setCookie('sl_sort', '1', 900); } else { $('#sl_itemlist').sortable('option', 'disabled', true); setCookie('sl_sort', '0', 900); } }); if (sitealign == 1) { $('#check_sitealign').prop('checked', true); } $('#check_width').click(function () { if ($(this).is(':checked') == true) { setCookie('sl_width', '1', 900); $('#serienliste,#sl_itemlist,.sl_entry').css('width', '200px'); $('#sl_itemlist a').css('width', '190px'); $('#sl_title').css('width', '130px'); } else { setCookie('sl_width', '0', 900); $('#serienliste,#sl_itemlist,.sl_entry').css('width', '250px'); $('#sl_itemlist a').css('width', '240px'); $('#sl_title').css('width', '180px'); } }); if (delfav == 1) { $('#check_delete').prop('checked', true); $('#sl_itemlist .remitem').addClass('remitemoff'); } $('#check_sitealign').click(function () { if ($(this).is(':checked') == true) { setCookie('sl_sitealign', '1', 900); $('#outer').css('margin', '90px 0 0 auto'); } else { setCookie('sl_sitealign', '0', 900); $('#outer').css('margin', '90px auto'); } }); if (oldbg == 1) { $('#check_oldbg').prop('checked', true); } $('#check_oldbg').click(function () { if ($(this).is(':checked') == true) { setCookie('sl_oldbg', '1', 900); $('body').css('background', '#636363 url(' + oldbgimg + ')'); } else { setCookie('sl_oldbg', '0', 900); $('body').css('background', '#636363 url(' + newbgimg + ')'); } }); $('#check_delete').click(function () { if ($(this).is(':checked') == true) { setCookie('sl_del', '1', 900); delfav = 1; $('#sl_itemlist .remitem').addClass('remitemoff'); $('#sl_itemlist .remitem').prop('title', ''); delfavclass = ' remitemoff'; } else { setCookie('sl_del', '0', 900); delfav = 0; $('#sl_itemlist .remitem').removeClass('remitemoff'); $('#sl_itemlist .remitem').prop('title', 'Favorit löschen'); delfavclass = ''; } }); $('#check_sitewidth').click(function () { if ($(this).is(':checked') == true) { setCookie('sl_sitewidth', '1', 900); $('#outer').prop('style', 'width:1000px !important'); $('#content').prop('style', 'width:680px !important'); $('#search #inputString').prop('style', 'width: 833px !important'); } else { setCookie('sl_sitewidth', '0', 900); $('#outer').prop('style', 'width:1200px !important'); $('#content').prop('style', 'width:886px !important'); $('#search #inputString').prop('style', 'width: 1033px !important'); } }); if (sitewidth == 1) { $('#check_sitewidth').prop('checked', true); } $('#check_reset').click(function () { if ($(this).is(':checked') == true) { deleteCookie('sl_list_top'); deleteCookie('sl_list_left'); $('#serienliste').css({ 'top': '30px', 'left': '30px' }); $($(this)).prop('checked', false); } }); if ($('#sl_itemlist').css('display') == 'none') { $('#openclose').html('∇'); } $('#openclose').click(function () { $('#sl_itemlist').slideToggle('slow', function () { var getstate = $(this).css('display'); if (getstate == 'none') { setCookie('sl_list_state', 'none', 900); $('#openclose').html('∇'); } else { setCookie('sl_list_state', 'block', 900); $('#openclose').html('Δ'); } }); }); if (urlsplit[3] != '' && urlsplit[3].indexOf('?') == -1 && urlsplit[3] != 'search' && urlsplit[3] != 'die-neusten' && urlsplit[3] != 'hilfe') { $('#add_item').prop('title', 'Eintrag hinzufügen').css({ 'color': '#29303B', 'cursor': 'pointer' }); } $('#homelink').click(function () { window.open('https://openuserjs.org/scripts/NoXPhasma/SJ_Fav_%28Serienjunkies_Favoriten%29', '_blank'); }); $('.sl_check').focus(function () { this.blur(); }); // // ----- List Options ----- // ----- List Functions ----- // function addtoList(entry) { if (entry != undefined) { var maxCount = entry.entries.length; for (var i = 0; i <= maxCount; i++) { if (entry.entries[i] == null) { } else if (i < maxCount) { if (entry.entries[i].img == undefined) { var bgimg = defbgimg; } else { var bgimg = entry.entries[i].img; } $('#sl_itemlist').append('<div class="sl_entry">' + '<a href="' + entry.entries[i].link + '" style="background-image:url(' + bgimg + ');background-position:0px -3px;">' + '<span class="sl_title">' + entry.entries[i].title + '</span>' + '</a>' + '<div class="remitem' + delfavclass + '" title="' + remtitle + '" id="' + i + '"></div>' + '</div>'); } } } else { $('#sl_itemlist').append('<div class="sl_entry">' + '<a href="http://serienjunkies.org">' + '<span class="sl_title">Noch keine Favoriten vorhanden</span>' + '</a>' + '</div>'); } checkWidth(); } $('#add_item').click(function () { if (urlsplit[3] != '' && urlsplit[3].indexOf('?') == -1 && urlsplit[3] != 'search' && urlsplit[3] != 'die-neusten' && urlsplit[3] != 'hilfe') { var urlcount = urlsplit.length - 2; var serientitel = urlsplit[urlcount] serientitel = serientitel.replace(/' - '/g, ''); serientitel = serientitel.replace(/-/g, ' '); serientitel = serientitel.replace(/season/g, '| season'); serientitel = serientitel.replace(/staffel/g, '| staffel'); killFormat = new Array('tv film', 'hdtv', '720p', 'ituneshd', 'dvdrip', 'xvidhr', 'xvid', '1080p', '1080i', 'h264', 'bluray', 'blu ray', 'bd50', 'bd25', 'dvd5', 'dvdr', 'dvd9', 'pdtv', ' dtv', ' atv', ' rip', 'satrip', ' sat', ' web', ' dl', ' complete', 'divx', 'x264', ' avc', '/', ' '); $.each(killFormat, function (key, value) { serientitel = serientitel.replace(value, ''); }); var image = $('.post-content p img').first().prop('src'); if (serientitel != '' && image != '' && url != '') { loadcockie = getCookie('sl_list_entries'); var loadobj = eval('(' + loadcockie + ')'); if (loadcockie == 'undefined' || loadcockie == undefined) { var newobj = { 'entries': [{ 'title': serientitel, 'link': url, 'img': image },] }; setCookie('sl_list_entries', JSON.stringify(newobj), 900); $('#sl_itemlist').html(''); addtoList(newobj); } else { loadobj.entries.push({ 'title': serientitel, 'link': url, 'img': image }); setCookie('sl_list_entries', JSON.stringify(loadobj), 900); $('#sl_itemlist').html(''); addtoList(loadobj); } } } }); function clearJSON(json) { var maxCount = json.entries.length; var newJson; for (var i = 0; i <= maxCount; i++) { if (json.entries[i] != null) { if (newJson == null) { newJson = { 'entries': [{ 'title': json.entries[i].title, 'link': json.entries[i].link, 'img': json.entries[i].img },] }; } else { newJson.entries.push({ 'title': json.entries[i].title, 'link': json.entries[i].link, 'img': json.entries[i].img }); } } } return newJson; } function updateOrder() { var newcount = 0; var newJson; $('.sl_entry').each(function (index) { var u_title = $(this).find('span').html(); var u_link = $(this).find('a').prop('href'); var u_img = $(this).find('a').css('background-image').replace(/url\(/gi, '').replace(/\)/gi, '').replace(/"/gi, ''); if (newcount == 0) { newJson = { 'entries': [{ 'title': u_title, 'link': u_link, 'img': u_img },] }; } else { newJson.entries.push({ 'title': u_title, 'link': u_link, 'img': u_img }); } newcount++; }); setCookie('sl_list_entries', JSON.stringify(newJson), 900); $('#sl_itemlist .sl_entry a').prop('href', ''); $('#sl_itemlist').html(''); addtoList(newJson); } $('#sl_itemlist').on('click', '.remitem', function () { if (delfav == 0) { var getID = $(this).prop('id'); var loadcockie = getCookie('sl_list_entries'); var loadobj = eval('(' + loadcockie + ')'); delete loadobj.entries[getID]; loadobj = clearJSON(loadobj); setCookie('sl_list_entries', JSON.stringify(loadobj), 900); $('#sl_itemlist').html(''); addtoList(loadobj); } }); function checkWidth() { var listwidth = getCookie('sl_width'); if (listwidth == 1) { $('#check_width').prop('checked', true); $('#serienliste,#sl_itemlist,.sl_entry').css('width', '200px'); $('#sl_itemlist a').css('width', '190px'); $('#sl_title').css('width', '130px'); } else { $('#check_width').prop('checked', false); $('#serienliste,#sl_itemlist,.sl_entry').css('width', '250px'); $('#sl_itemlist a').css('width', '240px'); $('#sl_title').css('width', '180px'); } } $('#addoninfo').click(function () { var getRight = $('#show_info').css('right'); if (getRight == '-260px') { $('#show_info').animate({ right: '0px' }, 1000); } else { $('#show_info').animate({ right: '-260px' }, 1000); } }); $('#serienliste').draggable( { handle: '#sl_title', containment: 'window', stop: function (event, ui) { var Stoppos = $(this).position(); setCookie('sl_list_top', Stoppos.top, 900); setCookie('sl_list_left', Stoppos.left, 900); } }); if (drag == 1) { $('#check_drag').prop('checked', true); $('#sl_title').css('cursor', 'move'); } else { $('#serienliste').draggable('option', 'disabled', true); $('#sl_title').css('cursor', 'auto'); } $('#sl_itemlist').sortable( { appendTo: '.sl_entry', delay: 150, update: function (event, ui) { updateOrder(); } }); // // ----- List Functions ----- addtoList(obj); }); // // ---------- Script --------------------------------------------------------------------------------------------------