// ==UserScript== // @name Videlibri-Skript // @namespace http://www.benibela.de // @include * // @version 8 // @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @grant GM_info // ==/UserScript== // @name Webscraper / Xidelscript if (GM && GM.info && !(/^[0-3]\./.test(GM.info.version))) { alert(GM_info.script.name.toLowerCase().indexOf("videlibri") >= 0 ? " Das Skript benötigt Greasemonkey 3, nicht Greasemonkey 4." : " This script requires Greasemonkey 3. It will not work properly on Greasemonkey 4"); } /*************************************************************************** * copyright : (C) 2012-2014 Benito van der Zander * * (except the library directly below) * * http://www.benibela.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ //\newcommand{\n}{new line} is it wise to write js in a tex editor?? //****************************************************************************** //Dragging library //***************************************************************************** // Do not remove this notice. // // Copyright 2001 by Mike Hall. // See http://www.brainjar.com for terms of use. //***************************************************************************** // Determine browser and version. function Browser() { var ua, s, i; this.isIE = false; this.isNS = false; this.version = null; ua = navigator.userAgent; s = "MSIE"; if ((i = ua.indexOf(s)) >= 0) { this.isIE = true; this.version = parseFloat(ua.substr(i + s.length)); return; } s = "Netscape6/"; if ((i = ua.indexOf(s)) >= 0) { this.isNS = true; this.version = parseFloat(ua.substr(i + s.length)); return; } // Treat any other "Gecko" browser as NS 6.1. s = "Gecko"; if ((i = ua.indexOf(s)) >= 0) { this.isNS = true; this.version = 6.1; return; } } var browser = new Browser(); // Global object to hold drag information. var dragObj = new Object(); dragObj.zIndex = 0; function dragStart(event, el) { var el; var x, y; // If an element id was given, find it. Otherwise use the element being // clicked on. if (el) dragObj.elNode = el; else { if (browser.isIE) dragObj.elNode = window.event.srcElement; if (browser.isNS) dragObj.elNode = event.target; // If this is a text node, use its parent element. if (dragObj.elNode.nodeType == 3) dragObj.elNode = dragObj.elNode.parentNode; } // Get cursor position with respect to the page. if (browser.isIE) { x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop; } if (browser.isNS) { x = event.clientX + window.scrollX; y = event.clientY + window.scrollY; } // Save starting positions of cursor and element. dragObj.cursorStartX = x; dragObj.cursorStartY = y; dragObj.elStartLeft = parseInt(dragObj.elNode.style.left, 10); dragObj.elStartTop = parseInt(dragObj.elNode.style.top, 10); if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0; if (isNaN(dragObj.elStartTop)) dragObj.elStartTop = 0; // Update element's z-index. //dragObj.elNode.style.zIndex = ++dragObj.zIndex; // Capture mousemove and mouseup events on the page. if (browser.isIE) { document.attachEvent("onmousemove", dragGo); document.attachEvent("onmouseup", dragStop); window.event.cancelBubble = true; window.event.returnValue = false; } if (browser.isNS) { document.addEventListener("mousemove", dragGo, true); document.addEventListener("mouseup", dragStop, true); event.preventDefault(); } } function dragGo(event) { var x, y; // Get cursor position with respect to the page. if (browser.isIE) { x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop; } if (browser.isNS) { x = event.clientX + window.scrollX; y = event.clientY + window.scrollY; } // Move drag element by the same amount the cursor has moved. dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px"; dragObj.elNode.style.top = (dragObj.elStartTop + y - dragObj.cursorStartY) + "px"; if (browser.isIE) { window.event.cancelBubble = true; window.event.returnValue = false; } if (browser.isNS) event.preventDefault(); } function dragStop(event) { // Stop capturing mousemove and mouseup events. if (browser.isIE) { document.detachEvent("onmousemove", dragGo); document.detachEvent("onmouseup", dragStop); } if (browser.isNS) { document.removeEventListener("mousemove", dragGo, true); document.removeEventListener("mouseup", dragStop, true); } var dragged = $(dragObj.elNode); GM_setValue(prf+"guicoordinates", JSON.stringify([dragged.css("left"), dragged.css("top"), dragged.width(), dragged.height()])); } //****************************************************************************** var interceptor = {}; var lang = 0; function tr(en, de) { return (!lang || !de) ? en : de; } var prf = "__scraper_"; var prfid = "#" + prf; var prfclass = "." + prf; var multipageInitialized = false; var multipageInterceptionInitialized = false; var mainInterface = null; var changedBody = false; function moveLeft(e){ $(prfid + "moveleft").hide(); $(prfid + "moveright").show(); mainInterface.css("left", "0px"); mainInterface.css("right", ""); mainInterface.css("top", "0px"); mainInterface.css("width", "25%"); mainInterface.css("height", "100%"); GM_setValue(prf+"guiposition", "left"); $(document.body.parentNode).css("position", "absolute").css("left", "26%").css("width", "75%"); //TODO: move fixed changedBody = true; } function moveRight(e){ $(prfid + "moveleft").show(); $(prfid + "moveright").hide(); mainInterface.css("top", "0"); mainInterface.css("left", ""); mainInterface.css("right", "0px"); mainInterface.css("width", "25%"); mainInterface.css("height", "100%"); GM_setValue(prf+"guiposition", "right"); $(document.body.parentNode).css("position", "absolute").css("left", "0").css("width", "74%"); changedBody = true; } function makeinput(caption, id, value){ var overridenValue = value; if (GM_getValue(prf+id+"_saved")) overridenValue = GM_getValue(prf+id+"_saved"); return '