NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name AO3 Average Word Count
// @version 1.0
// @description Adds an average word count to fic stats on the Archive.
// @author Dr. Off
// @match https://archiveofourown.org/*
// @grant none
// @license MIT
// ==/UserScript==
const statElements = document.querySelectorAll("dl.stats");
for(let statElement of statElements)
{
let wordsElement = statElement.querySelector("dd.words");
let chaptersElement = statElement.querySelector("dd.chapters");
if(wordsElement != undefined && chaptersElement != undefined)
{
let chapters = chaptersElement.innerText.split("/");
let words = parseInt(wordsElement.innerText.replace(",", ""));
let currentChapterCount = parseInt(chapters[0]);
let totalChapterCount = chapters[1] != "?" ? parseInt(chapters[1]) : -1;
if(totalChapterCount == 1) // Skip one shots
continue;
let average = Math.ceil(words / currentChapterCount);
let descriptionTerm = document.createElement("dt");
descriptionTerm.classList.add("averageChapterLength");
descriptionTerm.innerText = "Average words per chapter: ";
let descriptionDetails = document.createElement("dd");
descriptionDetails.classList.add("averageChapterLength");
descriptionDetails.innerText = average.toLocaleString('en');
statElement.appendChild(descriptionTerm);
statElement.appendChild(descriptionDetails);
}
}