Greasy Fork is available in English.
A script to replace relative dates with exact dates (e.g track upload date, comment publication date).
当前为
// ==UserScript==
// @name Soundcloud Precise Date
// @namespace Violentmonkey Scripts
// @match https://soundcloud.com/*
// @grant none
// @version 2.0
// @author bye-csavier (https://github.com/bye-csavier)
// @run-at document-end
// @description A script to replace relative dates with exact dates (e.g track upload date, comment publication date).
// @license GNU GPLv3
// ==/UserScript==
function setRealDate(relDate){
if(relDate.dataset.xjsPreciseSoundCloudDate) return;
let realDate = relDate.getAttribute("title")
relDate.children[1].innerText = realDate; //may changed based on soundcloud comoponents strcture
relDate.dataset.xjsPreciseSoundCloudDate = true;
}
function handleAllRelativeTimes(){
let trackDates = document.querySelectorAll("time.relativeTime");
for (let i = 0, len = trackDates.length; i < len; ++i) {
setRealDate(trackDates[i])
}
}
handleAllRelativeTimes(); //If the content is already loaded, somehow
let idleDone = false;
/*
I guess soundcloud loads everything after the DOMContentLoaded event, trough scripts. Therefore I need to observe for every mutation on the body :(
Still, the mutation is used to replace the new content the user loads so +1 for mutation observer.
It may be possible to stop it after a while it gets not called and trigger the mec
*/
new MutationObserver((mutations, observer)=>{
handleAllRelativeTimes();
if(!idleDone){
idleDone = true;
observer.disconnect();
observer.observe(document.getElementById("content"), {subtree:true, childList:true})
}
}).observe(document.body, {subtree:true, childList:true})