Add TMDB_checker.user.js
This commit is contained in:
parent
e8627ce614
commit
5c379041c7
86
TMDB_checker.user.js
Normal file
86
TMDB_checker.user.js
Normal file
@ -0,0 +1,86 @@
|
||||
// ==UserScript==
|
||||
// @name Vérificateur de disponibilité TMDB sur UNFR
|
||||
// @namespace https://unfr.pw
|
||||
// @version 1.8
|
||||
// @description Vérifie si un film ou une série est disponible sur UNFR et ajoute le lien sur le site TMDB, sans clé API et avec une icône personnalisable facilement.
|
||||
// @author Vous
|
||||
// @match https://www.themoviedb.org/*
|
||||
// @grant none
|
||||
// @icon https://unfr.pw/favicon/apple-icon-72x72.png
|
||||
// @downloadURL
|
||||
// @updateURL
|
||||
// ==/UserScript==
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
const ICON_URL = 'https://unfr.pw/favicon/apple-icon-72x72.png'; // <-- Utilise l'@icon défini ci-dessus
|
||||
|
||||
// Attendre que l’élément du titre soit chargé dans le DOM
|
||||
function attendreTitre(callback) {
|
||||
const intervalle = setInterval(() => {
|
||||
const correspondance = window.location.pathname.match(/\/(movie|tv)\/(\d+)/);
|
||||
const titre = document.querySelector('h2 a[href*="/movie/"], h2 a[href*="/tv/"]');
|
||||
if (correspondance && titre) {
|
||||
clearInterval(intervalle);
|
||||
callback(correspondance[1], correspondance[2], titre);
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
|
||||
// Vérifie la disponibilité via le nouvel endpoint
|
||||
function verifierDisponibilite(type, tmdbId, callback) {
|
||||
const url = `https://unfr.pw/check_tmdb?check=${tmdbId}&type=${type}`;
|
||||
fetch(url)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
const disponible = data.code === 1;
|
||||
const message = data.Explain || 'Indisponible';
|
||||
callback(disponible, message);
|
||||
})
|
||||
.catch(() => {
|
||||
callback(false, 'Erreur lors de la vérification');
|
||||
});
|
||||
}
|
||||
|
||||
// Ajoute le bouton à la page
|
||||
function ajouterBouton(titre, disponible, message, tmdbId, type) {
|
||||
const bouton = document.createElement('a');
|
||||
bouton.textContent = disponible ? 'Disponible' : 'Faire une requête';
|
||||
bouton.title = message;
|
||||
|
||||
const icone = document.createElement('img');
|
||||
icone.src = ICON_URL;
|
||||
icone.style.width = '16px';
|
||||
icone.style.height = '16px';
|
||||
icone.style.verticalAlign = 'middle';
|
||||
icone.style.marginRight = '6px';
|
||||
|
||||
bouton.prepend(icone);
|
||||
|
||||
const paramId = type === 'tv' ? 'tvid' : 'movieid';
|
||||
const urlBase = `https://unfr.pw/?d=fiche&${paramId}=${tmdbId}`;
|
||||
bouton.href = disponible ? urlBase : urlBase + '#requete';
|
||||
|
||||
bouton.target = '_blank';
|
||||
bouton.style.marginLeft = '10px';
|
||||
bouton.style.padding = '4px 8px';
|
||||
bouton.style.borderRadius = '6px';
|
||||
bouton.style.fontSize = '0.9rem';
|
||||
bouton.style.color = 'white';
|
||||
bouton.style.backgroundColor = disponible ? 'green' : 'red';
|
||||
bouton.style.textDecoration = 'none';
|
||||
bouton.style.display = 'inline-flex';
|
||||
bouton.style.alignItems = 'center';
|
||||
|
||||
titre.parentNode.appendChild(bouton);
|
||||
}
|
||||
|
||||
// Lance l'exécution
|
||||
attendreTitre((type, tmdbId, titre) => {
|
||||
verifierDisponibilite(type, tmdbId, (disponible, message) => {
|
||||
ajouterBouton(titre, disponible, message, tmdbId, type);
|
||||
});
|
||||
});
|
||||
|
||||
})();
|
||||
Loading…
x
Reference in New Issue
Block a user