So you can tell if something is really updated. Also for PCGamesTorrents. Also trims post title and description.
// ==UserScript==
// @name IGGGAMES - Show Modified Time for Posts
// @description So you can tell if something is really updated. Also for PCGamesTorrents. Also trims post title and description.
// @namespace RainSlide
// @author RainSlide
// @license AGPL-3.0-or-later
// @version 1.2
// @icon https://igg-games.com/favicon.ico
// @match https://igg-games.com/*
// @match https://pcgamestorrents.com/*
// @grant none
// ==/UserScript==
"use strict";
const posts = document.querySelectorAll('article.post[typeof="Article"]');
// Show modified time
posts.forEach(post => {
const modMeta = post.querySelector(':scope meta[property="dateModified"][content]');
const pubTime = post.querySelector(':scope time');
if (modMeta !== null && pubTime !== null) {
const dateTime = modMeta.content;
const modDate = new Date(dateTime);
// if modDate is not Invalid Date
// modDate.toString() !== "Invalid Date"
if (!Number.isNaN(modDate.getTime())) {
const $ = tagName => document.createElement(tagName);
const textContent = modDate.toLocaleDateString("en-US", { dateStyle: "long" });
const modTime = Object.assign($("time"), { dateTime, textContent });
pubTime.before($("br"), "Published ");
pubTime.after(" | Modified ", modTime, $("br"));
}
}
});
// Trim title and description
const titleSelector = '.uk-article-title' + (posts.length > 1 ? ' > a:only-child' : '');
const descSelector = '.uk-article-meta + div[property="text"] > p:first-child';
// trimTitle(post)
// just for igg-games.com, pcgamestorrents.com's titles are fine
const trimTitle = post => {
const title = post.querySelector(':scope ' + titleSelector);
if (title !== null && title.textContent.endsWith(" Free Download")) {
title.textContent = title.textContent.replace(/ Free Download$/, "");
}
return title.textContent; // for trimDesc() of igg-games.com
}
// trimDesc(post, text)
const trimDesc = (post, text) => {
const desc = post.querySelector(':scope ' + descSelector);
if (desc !== null && desc.textContent.includes(text)) {
desc.textContent = desc.textContent.replace(text, "");
}
};
switch (location.hostname) {
case "igg-games.com":
posts.forEach(post => {
const gameName = trimTitle(post);
trimDesc(post, gameName + " Free Download PC Game Cracked in Direct Link and Torrent. ");
});
break;
case "pcgamestorrents.com":
posts.forEach(post => trimDesc(post, "TORRENT – FREE DOWNLOAD – CRACKED "));
break;
}