AO3 Text Replacer

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

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği yüklemek için Tampermonkey gibi bir uzantı yüklemeniz gerekir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği indirebilmeniz için ayrıca Tampermonkey gibi bir eklenti kurmanız gerekmektedir.

Bu betiği yüklemek için bir betik yöneticisi eklentisi yüklemeniz gerekecektir.

(Zaten bir betik yöneticim var, hadi yükleyelim!)

Bu stili yüklemek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için Stylus gibi bir uzantı kurmanız gerekir.

Bu stili yükleyebilmek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı kurmanız gerekir.

Bu stili yükleyebilmek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

(Zateb bir user-style yöneticim var, yükleyeyim!)

// ==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();