// ==UserScript== // @version 2.0.1 // @include *.fanfiction.net/s/* // @namespace ffnet // @name Fanfiction.net story export script. // @author Alssn // @description Writes all chapters of the story on one page. // @require http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js // @grant GM.setClipboard // @grant GM_xmlhttpRequest // @connect fanfiction.net // @downloadURL none // ==/UserScript== //Chapters are downloaded with a delay to prevent ff.net from limiting connections var chapters=[]; var settings; var style = $(``) $('body').append(style); loadSettings(); drawUI(); function drawUI(){ var storyLength = getLength(); var currentChapter = document.getElementById('chap_select').value; // creating links var node = $('.lc').first(); var exportMenu = $(''); var exportContainer = $(''); var addIndexButton = $('Index'); var expAllButton = $('Export'); var expButton = $('Text'); var copyButton = $('Copy'); //Settings var settingsSection = $(''); var settingsToggle = $('Options'); var settingsContainer = $('
'); var settingsDelay = $(''); var headersSwitch = $(``); var chapterSelection = $(` - `); settingsSection.append(settingsToggle); settingsContainer.append(headersSwitch, settingsDelay, chapterSelection); //Draw exportMenu.append(exportContainer); exportContainer.append(expAllButton,'| ',addIndexButton,'| ',expButton, copyButton,'| ', settingsSection); node.append(exportMenu); settingsContainer.insertAfter(node.parent()); //Event handlers var chaptersCheckbox = $('#ffneCheckboxChapters')[0]; chaptersCheckbox.addEventListener('change',function(){setSetting('limitChapters',chaptersCheckbox.checked);}); var headersCheckbox = $('#ffneCheckboxHeaders')[0]; headersCheckbox.addEventListener('change',function(){setSetting('addHeaders',headersCheckbox.checked);}); var delayInput = $('#ffneInputDelay')[0]; delayInput.addEventListener('change',function(){setSetting('delay',delayInput.value);}); expAllButton.click(exportStory); expButton.click(exportCh); settingsToggle.click(toggleSettingsDisplay); addIndexButton.click(addIndex); copyButton.click(copyText); $('#ffne_button').click(function(){ var cont = $('#ffne_export'); if (cont.hasClass('ffne_hidden')){cont.removeClass('ffne_hidden');}else{cont.addClass('ffne_hidden')} }); showSettings(settings.displaySettings); } //Add table of contents function addIndex(){ var chapters = $('div[name="ffnee_chapter"]'); var index = $('