AO3 Text Replacer

Replace certain words on AO3 fanfics with new ones of your choosing

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name            AO3 Text Replacer
// @namespace       https://greasyfork.org/en/users/899130
// @version         1.1
// @description     Replace certain words on AO3 fanfics with new ones of your choosing
// @author          Cor_Caroli
// @include         /https?://archiveofourown\.org/works/\d+/
// @grant           none
// @directions      See the CONFIGURATION SECTION. Edit the words in the word replacement dictionary.
// ==/UserScript==

/***************************/
/** CONFIGURATION SECTION **/
/***************************/

/* * Master list of words to replace. Add as many words to replace as you'd like.
// After making changes to the word replacement dictionary, save (Ctrl+S or whatever hotkey) and then refresh AO3 to see the word replacement changes.
// !! Note that WORDS ARE CASE SENSITIVE !!
// The format is:
// "old word" : "new word",
//
// Example: You want to change all instances of "pancakes" to "waffles" in the fic
// Insert a line of code:
        "pancakes" : "waffles",
// (Remember to keep the comma at the end.)
//
// Alternatively, you can just edit the placeholder code lines with the words you want. E.g. reader insert fics, triggers, etc.
* */
const replaceDictionary = {
    "old word 1" : "new word 1",
    "old word 2" : "new word 2",
    "old word 3" : "new word 3",
    "old word 4" : "new word 4",
    "old word 5" : "new word 5",
    "old word 6" : "new word 6",
    "old word 7" : "new word 7",
};



/********************/
/** SCRIPT SECTION **/
/********************/

// Finds the target div element of the fic and drills down to its innerHTML
var origFic = document.querySelector('#main').innerHTML;

// Function that processes the text replacements in the fic
function ficProcessing(){
    // Initialize variable
    var changedFic = origFic;

    for (let w in replaceDictionary){

        // Needs a regex in order to replace words not in hyperlinks (replacing words in hyperlinks can lead to broken links when navigating to other pages)
        // Checks for hyperlinks and replaces the anchor text, but not the URL
        var regex = new RegExp("(?<!\<[^>]*)\\b" + w + "\\b", 'g');

        changedFic = changedFic.replace(regex, replaceDictionary[w]);
    }

    // Replaces the fic with the new words
    document.querySelector('#main').innerHTML = changedFic;
};

// Runs the function
ficProcessing();