IGGGAMES - Show Modified Time for Posts

So you can tell if something is really updated. Also for PCGamesTorrents. Also trims post title and description.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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;
}