Skip to content

Instantly share code, notes, and snippets.

@yannbf
Last active May 31, 2025 21:30
Show Gist options
  • Save yannbf/0c9e0a3192b2bd5f6555a9a1143561b8 to your computer and use it in GitHub Desktop.
Save yannbf/0c9e0a3192b2bd5f6555a9a1143561b8 to your computer and use it in GitHub Desktop.
sg-checker.user.js
// ==UserScript==
// @name SteamGifts HB Train Checker
// @namespace https://steamgifts.com/
// @version 1.10
// @description Checks if winners in the table are valid based on a predefined list
// @author You
// @match https://www.steamgifts.com/giveaway/*/entries*
// @icon https://www.google.com/s2/favicons?sz=64&domain=steamgifts.com
// @downloadURL https://gist.github.com/yannbf/0c9e0a3192b2bd5f6555a9a1143561b8/raw/sg-checker.user.js
// @updateURL https://gist.github.com/yannbf/0c9e0a3192b2bd5f6555a9a1143561b8/raw/sg-checker.user.js
// @grant none
// ==/UserScript==
(function () {
'use strict';
// This list will be kept up to date over time, and the script should automatically update with new versions.
const validWinners = new Set([
"VahidSlayerOfAll",
"Yamaraus",
"Ch1cWolf",
"akfas",
"xXShurraXx",
"miIk",
"Butterkatt",
"moonlightdriver",
"Abominati0n",
"ktostam43",
"schmoan",
"xXxYEET",
"AndyFrost",
"shandyseggs",
"Dandellion",
"Oshyer",
"LightningCount",
"pivotalHarry",
"Ellendyl",
"Durb",
"caesar239",
"mateot93",
"amusedmonkey",
"Pooltrancer",
"Gezzaia",
"Exodust",
"zolof",
"derton2000",
"Gelweo",
"Spanx",
"Carenard",
"Theanyelpes",
"Ratz0",
"Ethan",
"Warriot",
"mourinhos86",
"Orbs",
"zobuk",
"ChocolateVC",
"ArchelonGaming",
"Markox21",
"Tronics",
"QuinlanLJ",
"Naviis",
"ShroudOfLethe",
"Leon30670",
"JMM72",
"vinstonsmitt",
"RussellCZ",
"Sakakino",
"Fluffster",
"irste",
"damianea103",
"Codric",
"ObsidianSpire",
"TheMuzo",
"A10i",
"Lironezzz",
"mashiu2000",
"Vulpio",
"quijote3000",
"Xiangming",
"Drae",
"philipdick",
"Magiriano",
"Heisenbear",
"Ignition365",
"Filipi",
"xurc",
"Ninglor03",
"kikuchiro",
"mabulk",
"wigglenose",
"RiderOfPhoenix",
"kungfujoe",
"Troutroum",
"AceBerg42",
"Outlaw1991",
"GeekDoesStuff",
"LycanKai",
"McZero",
"Jorge",
"Hawk189",
"HowDareYou",
"szabe",
"stogle",
"HUMoonlight",
"Waxlor",
"Phantomreader42",
"meneldur",
"VernoWhitney",
"Faloperito",
"zzzwlagga",
"cals7",
"PoeticKatana",
"Carlo",
"arbutusridge",
"moemustaine",
"z00rox",
"FruitCober",
"halnco",
"rufioh",
"matsalkoshek",
"MadmanTheMad",
"Darkvil",
"vigaristti",
"ma3ajm",
"yannbz",
"Radi0act1ve",
"ecefromhell",
"Almostn33t",
"LoLaPaZoLa",
"Ellemby",
"Zinzinneke",
"PerroPosmo",
"MrTackoz",
"1312poggerson",
"BorjaGRouco",
"jotdogging",
"Nogift4u",
"RePlayBe",
"Tucs",
"0xA1EF",
"Cacciaguida",
"zeus9860",
"onymusBIS",
"brsichetti",
"antipode",
"MikeWithAnI",
"NymCast",
"OsManiaC",
"cpyd",
"thatotherone6",
"sweetcuppincakes",
"pookysan",
"axlnase",
"antareja987",
"CelestialFrog",
"noSim",
"Unekha",
"duville",
"CuteEnby",
"crez3088",
"ComNguoi", "DarkpentiumIV", "elysium1988", "Ouinx2", "erkay",
"Eudoxia", "branbran", "Serpentus", "zeprfrew", "antareja987", "HappierParsley",
"DrTerr", "schmetti", "ba2", "SkeetSurfer", "Progressive777", "olehsamoilenko",
"MournfulRelic", "jdf335", "Hallowly", "Ratz0", "Riil", "PapaSmok",
"DrTerr", "olehsamoilenko", "Grogglz", "molu13", "sobbiebox", "ucho",
"zekonja", "ViddaX", "hiddendoom45", "Adelion", "Arwiee", "QuinlanLJ",
"Calibr3", "mikotomaki", "Prosac","amst4d","FattalCZ", "ShroudOfLethe",
"puninup","AnikiSG","Vegetallaro", "Aydaylin", "Kingsajz", "CharlesNonsens", "Metalhead8489",
"ColdOut", "Wasari"
].map(v => v.toLowerCase()));
const tableRows = document.querySelector('.table__rows');
if (!tableRows) return;
const button = document.createElement('button');
button.textContent = 'HB train checker';
button.style.marginBottom = '10px';
button.style.padding = '6px 12px';
button.style.background = '#5a7ec1';
button.style.color = '#fff';
button.style.border = 'none';
button.style.borderRadius = '4px';
button.style.cursor = 'pointer';
button.addEventListener('click', () => {
const entries = Array.from(document.querySelectorAll('.table__column__heading'));
entries.forEach(el => {
const username = el.innerText.trim();
// Prevent duplicate symbols if clicked multiple times
if (el.querySelector('.check-status')) return;
const status = document.createElement('span');
status.className = 'check-status';
status.textContent = validWinners.has(username.toLowerCase()) ? ' ✅' : ' ❌';
status.style.marginLeft = '5px';
el.appendChild(status);
});
});
tableRows.insertBefore(button, tableRows.firstChild);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment