// ==UserScript== // @name Asurascans bookmark saver // @namespace TestScript // @author Sieyk // @grant none // @license MIT // @match https://www.asurascans.com/bookmarks/ // @noframes // @require https://openuserjs.org/src/libs/ls18502857770.gmail.com/FileSaver.js // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js // @run-at document-end // @version 1.0 // @description This script adds two buttons to the bookmarks page. One button will export the list of titles in your bookmarks, the other will import a list of titles and overwrite your bookmarks. // @downloadURL none // ==/UserScript== (function () { "use strict"; window.addEventListener('load', () => { $("body").append ( ` ` ); addButton('Save Bookmarks', saveBookmarks, '7%') addButton('Import Bookmarks', importBookmarks, '4%') }) function addButton(text, onclick, posY, cssObj) { cssObj = cssObj || {position: 'absolute', bottom: posY, left:'4%', 'z-index': 3} let button = document.createElement('button'), btnStyle = button.style document.body.appendChild(button) button.innerHTML = text button.onclick = onclick Object.keys(cssObj).forEach(key => (btnStyle[key] = cssObj[key])) return button } function saveBookmarks() { var blob = new Blob([localStorage.getItem("bookmark")], { type: "text/plain;charset=utf-8" }); saveAs(blob, "bookmarks.txt") } async function importBookmarks() { // open file picker const input = event.srcElement.previousElementSibling.previousElementSibling; try { input.value = ""; input.showPicker(); console.debug(input.value); while (input.value == "") { await new Promise(r => setTimeout(r, 100)); }; } catch(error) { window.alert(input); return } console.debug(input.files); var reader = new FileReader(); reader.readAsText(input.files[0]); while (reader.readyState != 2) { await new Promise(r => setTimeout(r, 100)); } try { var arr = JSON.parse(reader.result); } catch(error) { window.alert("Invalid data type for bookmarks! Must be an Array."); return } if (Array.isArray(arr)) { localStorage.setItem("bookmark", reader.result); window.location.reload(); } else { window.alert("Invalid data type for bookmarks! Must be an Array."); return } } }());