- Joined
- Oct 3, 2025
- Messages
- 218
- Daps
- 568
:/
Yep my settings look just like that.@WhatsGoodTy Did you turn off the "Automatically watch content you interact with..." option? it's on your Preferences. If you don't, you'll get emails every time, it happened to me yesterday until I figured it out.
View attachment 143
Yes I turned everything off yet I'm still getting them it's not a big deal just wanted to throw it out there.Like notification emails?
Yes I turned everything off yet I'm still getting them it's not a big deal just wanted to throw it out there.
How you do that?I had to unsubscribe to the site.
If you have Gmail it's usually an option at the top or bottom of an email.How you do that?
After you turn off email notifications in your profile settings, you'll then need to go to every thread you participated in prior to doing and select the Unwatch option for it.After this, you should no longer receive any emails. If you don't want to go through and find the threads yourself, you can just wait for an email notification and then go to the thread from there to unwatch it.
(async () => {
// Extract username from URL query parameters
const params = new URLSearchParams(window.location.search);
const username = params.get("c[users]");
if (!username) {
alert("Username not found in URL (missing c[users] parameter).");
return;
}
// Ask user for cutoff date
const cutoffInput = prompt(`Enter cutoff date for user "${username}" (YYYY-MM-DD):`);
if (!cutoffInput || isNaN(Date.parse(cutoffInput))) {
alert("Invalid date format. Use YYYY-MM-DD.");
return;
}
const cutoffDate = new Date(cutoffInput);
if (!confirm(`Scan all pages for posts by "${username}" before ${cutoffDate.toDateString()}?`)) return;
// Collect all pagination links
const pageLinks = [...document.querySelectorAll('.pageNav-page a')].map(a => a.href);
pageLinks.unshift(window.location.href); // include current page
let matchedThreads = [];
// Process each page
for (const pageUrl of pageLinks) {
console.log(`Fetching page: ${pageUrl}`);
try {
const resp = await fetch(pageUrl, { credentials: 'include' });
const html = await resp.text();
const doc = new DOMParser().parseFromString(html, "text/html");
// Find posts and filter by date
const times = doc.querySelectorAll('ul.listInline li time.u-dt');
times.forEach(timeEl => {
const dateAttr = timeEl.getAttribute("datetime");
const postDate = new Date(dateAttr);
if (postDate < cutoffDate) {
const threadLink = timeEl.closest('ul').querySelector('a[href*="/threads/"]');
if (threadLink) {
matchedThreads.push({
url: threadLink.href,
date: postDate
});
}
}
});
} catch (err) {
console.warn(`Error fetching ${pageUrl}:`, err);
}
}
console.log(`✅ Found ${matchedThreads.length} threads by "${username}" before ${cutoffDate.toDateString()}.`);
console.table(matchedThreads.map(t => ({ Date: t.date.toISOString(), Thread: t.url })));
// Optional unwatch step
if (matchedThreads.length && confirm(`Unwatch all ${matchedThreads.length} threads by "${username}"?`)) {
for (const t of matchedThreads) {
try {
const res = await fetch(t.url, { credentials: 'include' });
const pageText = await res.text();
const pageDoc = new DOMParser().parseFromString(pageText, "text/html");
const unwatchLink = pageDoc.querySelector('a[data-sk-unwatch="Unwatch"]');
if (unwatchLink) {
await fetch(unwatchLink.href, { credentials: 'include' });
console.log(`Unwatched: ${t.url}`);
}
} catch (e) {
console.warn(`Failed to unwatch ${t.url}:`, e);
}
}
alert(`✅ Finished unwatching ${matchedThreads.length} threads.`);
} else {
alert(`Found ${matchedThreads.length} threads by "${username}" before ${cutoffDate.toDateString()}.\nSee console for details.`);
}
})();
javascript:(async()=>{const e=new URLSearchParams(location.search).get("c[users]");if(!e)return alert("Username not found in URL (missing c[users] parameter).");const t=prompt(`Enter cutoff date for user "${e}" (YYYY-MM-DD):`);if(!t||isNaN(Date.parse(t)))return alert("Invalid date format. Use YYYY-MM-DD.");const a=new Date(t);if(!confirm(`Scan all pages for posts by "${e}" before ${a.toDateString()}?`))return;const n=[...document.querySelectorAll(".pageNav-page a")].map(e=>e.href);n.unshift(location.href);let o=[];for(const r of n){console.log("Fetching page:",r);try{const e=await fetch(r,{credentials:"include"}),t=await e.text(),n=new DOMParser().parseFromString(t,"text/html");n.querySelectorAll("ul.listInline li time.u-dt").forEach(e=>{const t=e.getAttribute("datetime"),n=new Date(t);if(n<a){const t=e.closest("ul").querySelector('a[href*="/threads/"]');t&&o.push({url:t.href,date:n})}})}catch(e){console.warn("Error fetching",r,e)}}console.log(`✅ Found ${o.length} threads by "${e}" before ${a.toDateString()}.`),console.table(o.map(e=>({Date:e.date.toISOString(),Thread:e.url}))),o.length&&confirm(`Unwatch all ${o.length} threads by "${e}"?`)?(await Promise.all(o.map(async t=>{try{const e=await fetch(t.url,{credentials:"include"}),a=await e.text(),n=new DOMParser().parseFromString(a,"text/html"),o=n.querySelector('a[data-sk-unwatch="Unwatch"]');o&&(await fetch(o.href,{credentials:"include"}),console.log("Unwatched:",t.url))}catch(e){console.warn("Failed to unwatch",t.url,e)}})),alert(`✅ Finished unwatching ${o.length} threads.`)):alert(`Found ${o.length} threads by "${e}" before ${a.toDateString()}.\nSee console for details.`)})();