Twitch+
par ChouCookieSan ✔ · version 1.0.0 · 0 installations · mis à jour le 2026-11-08
Twitch plus agréable : bonus de points et drops récupérés tout seuls, page de chaîne épurée (barres repliées, visibles au survol), bandeau du bas retiré, vidéo de l'accueil en pause et muette. Réunit et remplace « AutoClaim Point Twitch », « Auto Claim Twitch drop » et « Twitch Beautify ».
Sites visés
www.twitch.tvm.twitch.tv
Un script peut lire et changer tout ce qu’il y a sur les sites visés, y compris ce que tu tapes. Celui-ci a été relu, mais lis-le toi aussi avant de l’activer.
L’installer
- Dans Portail (PC ou téléphone) : menu « … » → Extensions → Catalogue.
- Cherche « Twitch+ » puis « Installer ». Le script arrive désactivé.
- Active-le : Portail te remontre les sites visés avant.
Sans Portail, ce script marche aussi dans Tampermonkey ou Violentmonkey : copie le code ci-dessous.
Le code complet
// ==UserScript==
// @name Twitch+
// @namespace https://portail.arcanescookie.fr
// @version 1.0.0
// @description Twitch plus agréable : bonus de points et drops récupérés tout seuls, page de chaîne épurée (barres repliées, visibles au survol), bandeau du bas retiré, vidéo de l'accueil en pause et muette. Réunit et remplace « AutoClaim Point Twitch », « Auto Claim Twitch drop » et « Twitch Beautify ».
// @author Les Arcanes de Cookie
// @match https://www.twitch.tv/*
// @match https://m.twitch.tv/*
// @run-at document-end
// ==/UserScript==
// Réglages : true = allumé, false = éteint.
const OPTIONS = {
points: true, // bonus de points de chaîne (+50) récupéré tout seul
drops: true, // drops récupérés sur la page Inventaire, qui se recharge toutes les 5 minutes
epure: true, // page de chaîne : barre du haut et liste des chaînes repliées, visibles au survol
bandeau: true, // bandeau « Inscris-toi » du bas retiré
accueilMuet: true, // vidéo mise en avant sur l'accueil : en pause et muette
avertissement: false // passe tout seul l'avertissement « contenu pour public averti »
};
const PAGES_HORS_CHAINE = /^\/(directory|settings|drops|wallet|subscriptions|inventory|search|downloads|jobs|p|videos|turbo|friends|messages|following)(\/|$)/;
const surChaine = () => location.pathname.length > 1 && !PAGES_HORS_CHAINE.test(location.pathname);
const surInventaire = () => location.pathname.startsWith('/drops/inventory');
const auHasard = (min, max) => min + Math.random() * (max - min);
// --- Apparence ---
GM_addStyle(`
${OPTIONS.bandeau ? '#twilight-sticky-footer-root { display: none !important; }' : ''}
${OPTIONS.epure ? `
html.portail-twitch-chaine nav.top-nav {
height: 1rem !important; min-height: 0 !important; opacity: 0; overflow: hidden;
transition: opacity .4s, height .5s;
}
html.portail-twitch-chaine nav.top-nav:hover { height: 5rem !important; opacity: 1; overflow: visible; }
html.portail-twitch-chaine .side-nav {
width: 1rem !important; min-width: 0 !important; opacity: 0; overflow: hidden;
transition: opacity .4s, width .5s;
}
html.portail-twitch-chaine .side-nav:hover { width: 24rem !important; opacity: 1; overflow: visible; }
html.portail-twitch-chaine [data-a-target="right-column__toggle-collapse-btn"] { opacity: .3; transition: opacity .3s; }
html.portail-twitch-chaine [data-a-target="right-column__toggle-collapse-btn"]:hover { opacity: 1; }
` : ''}
`);
// Twitch change de page sans recharger : on suit l'adresse.
let adresse = '';
const suivreAdresse = () => {
if (location.href === adresse) return;
adresse = location.href;
document.documentElement.classList.toggle('portail-twitch-chaine', surChaine());
if (OPTIONS.accueilMuet && location.pathname === '/') muetPendant(8000);
};
// --- Accueil : la vidéo mise en avant reste en pause et muette (quelques secondes, le temps qu'elle se lance) ---
function muetPendant(duree) {
const fin = Date.now() + duree;
const t = setInterval(() => {
if (Date.now() > fin || location.pathname !== '/') return clearInterval(t);
for (const v of document.querySelectorAll('video')) { v.muted = true; if (!v.paused) v.pause(); }
}, 400);
}
// --- Bonus de points ---
function bonus() {
if (OPTIONS.points) {
const icone = document.querySelector('.claimable-bonus__icon');
const bouton = icone && icone.closest('button');
if (bouton) bouton.click();
}
setTimeout(bonus, auHasard(5000, 9000));
}
// --- Drops (page Inventaire) ---
let rechargement = 0;
function drops() {
if (!OPTIONS.drops || !surInventaire()) { clearTimeout(rechargement); rechargement = 0; return; }
const b = document.querySelector('[data-test-selector="DropsCampaignInProgressRewardPresentation-claim-button"]');
if (b && !b.disabled) b.click();
// La progression ne se met pas à jour toute seule : on recharge la page de temps en temps.
if (!rechargement) rechargement = setTimeout(() => location.reload(), 5 * 60 * 1000);
}
// --- Avertissement « public averti » ---
function avertissement() {
if (!OPTIONS.avertissement) return;
const b = document.querySelector('[data-a-target="content-classification-gate-overlay-start-watching-button"], [data-a-target="player-overlay-mature-accept"]');
if (b) b.click();
}
suivreAdresse();
setInterval(() => { suivreAdresse(); drops(); avertissement(); }, 1500);
setTimeout(bonus, auHasard(2000, 5000));