您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
You are going to need an API https://www.themoviedb.org
当前为
// ==UserScript== // @name Modify the list by cards with images on streaming sites // @namespace http://tampermonkey.net/ // @version 0.6 // @description You are going to need an API https://www.themoviedb.org // @author M1tx // @match https://brorov.com/* // @match https://www.votrob.com/* // @match https://tiblor.com/* // @match https://www.redziv.com/* // @match https://grogab.com/* // @match https://nopliv.com/* // @match https://grogab.com/* // @match https://rolrov.com/* // @match https://ovoob.com/* // @match https://zivbod.com/* // @grant GM_xmlhttpRequest // ==/UserScript== (function() { 'use strict'; const apiKey = 'YOUR_API'; function fetchMoviePoster(movieTitle, callback) { const url = `https://api.themoviedb.org/3/search/movie?api_key=${apiKey}&query=${encodeURIComponent(movieTitle)}`; console.log('Fetching poster for:', movieTitle); GM_xmlhttpRequest({ method: "GET", url: url, onload: function(response) { const json = JSON.parse(response.responseText); if (json.results && json.results.length > 0) { const posterPath = json.results[0].poster_path; const posterUrl = `https://image.tmdb.org/t/p/w200${posterPath}`; console.log('Poster URL:', posterUrl); callback(posterUrl); } else { console.log('No poster found for:', movieTitle); callback(null); } } }); } function replaceDivsWithCards() { const divs = document.querySelectorAll('#hann'); divs.forEach(div => { const movieLink = div.querySelector('a'); const movieTitle = movieLink.textContent.trim(); const movieYearMatch = movieTitle.match(/\((\d{4})\)/); const movieYear = movieYearMatch ? movieYearMatch[1] : ''; // Supprimer l'année et "HD" du titre du film const cleanMovieTitle = movieTitle.replace(/\((\d{4})\)|HD/gi, '').trim(); fetchMoviePoster(cleanMovieTitle, posterUrl => { const card = document.createElement('div'); card.className = 'movie-card'; card.innerHTML = ` <a href="${movieLink.href}" class="movie-card-link"> <div class="movie-poster"> ${posterUrl ? `<img src="${posterUrl}" alt="${movieTitle}">` : ''} </div> <div class="movie-info"> <h3>${movieTitle}</h3> <p>${movieYear}</p> </div> </a> `; div.parentNode.replaceChild(card, div); }); }); } function addCardStyles() { const style = document.createElement('style'); style.innerHTML = ` .movie-card { display: inline-block; width: 200px; padding: 10px; box-sizing: border-box; vertical-align: top; text-align: center; margin: 5px; border: 1px solid #ccc; border-radius: 5px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); background-color: #fff; transition: transform 0.3s; } .movie-card:hover { transform: translateY(-5px); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); } .movie-card-link { display: block; text-decoration: none; color: inherit; } .movie-card-link:hover { text-decoration: none; } .movie-poster { width: 100%; height: auto; position: relative; overflow: hidden; border-radius: 5px; } .movie-poster img { width: 100%; height: auto; display: block; transition: transform 0.3s; } .movie-card:hover .movie-poster img { transform: scale(1.1); } .movie-info { margin-top: 10px; } .movie-info h3 { font-size: 18px; margin-bottom: 5px; font-weight: bold; line-height: 1.3; color: #000000 } .movie-info p { font-size: 14px; color: #777; margin: 0; } `; document.head.appendChild(style); } // Appeler la fonction pour ajouter des styles CSS addCardStyles(); // Appeler la fonction pour remplacer les divs par des cartes replaceDivsWithCards(); })();