Checks how long ago incomplete works were last updated and displays a warning if longer than user set time period.
// ==UserScript== // @name AO3: Incomplete. Continue? // @version 1.0 // @description Checks how long ago incomplete works were last updated and displays a warning if longer than user set time period. // @author sharkcat // @namespace https://github.com/sharkcatshark/UserScripts // @match https://archiveofourown.org/works/* // @icon https://www.google.com/s2/favicons?sz=64&domain=archiveofourown.org // @license GNU GPLv3 // ==/UserScript== // note: months are pr###med at 30 days so worst case, warnings are gonna be off by a couple days here and there // == START Settings == const maxTimeAllowed = 6; // months // == END Settings == const chapters = document.querySelector("dd.chapters").innerText; // if not matching chapter count if (chapters.match(/\S+(?=\/)/g)[0] != chapters.match(/(?<=\/)\S+/g)[0]) { // get dates const currentDate = new Date(); const lastUpdated = new Date(document.querySelector("dd.status").innerText); // do maths const diffTime = currentDate - lastUpdated; const timeSinceUpdateDays = diffTime / (1000 * 60 * 60 * 24); const timeSinceUpdateYears = timeSinceUpdateDays / (30 * 12); const roundedDays = Math.round(timeSinceUpdateDays); const roundedYears = timeSinceUpdateYears.toFixed(2); // find date of okay update time const updateLimit = currentDate.setDate(currentDate.getDate() - (maxTimeAllowed * 30)); // see if warning needed if (updateLimit > lastUpdated) { const message = "This work is currently marked incomplete and was last updated " + roundedDays + " days or " + roundedYears + " years ago. Are you sure you wish to continue?"; const subject = document.querySelector("#inner"); subject.insertAdjacentHTML( 'afterbegin', '<div style="border: 2px solid red; background: #ffb5b5; color: black; padding: 10px 30px; max-width: max-content; margin: 0 auto;">'+ message + '</div>' ); } }