OpenSubtitles - Add Request Link (Restored Feature)

Restores the missing “Add a request” link on OpenSubtitles search pages. Adds a native-style warning message when no subtitles are found, just like the site originally had.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         OpenSubtitles - Add Request Link (Restored Feature)
// @namespace    https://greasyfork.org/en/users/1531759-fyhtma 
// @version      1.0.9
// @description  Restores the missing “Add a request” link on OpenSubtitles search pages. Adds a native-style warning message when no subtitles are found, just like the site originally had.
// @author       Gemini (original concept by ChatGPT)
// @license      MIT
// @icon         https://static.opensubtitles.org/favicon.ico
// @match        https://www.opensubtitles.org/*/search/sublanguageid-*/imdbid-*
// @run-at       document-end
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // This script restores the old OpenSubtitles feature:
    // When a search returns no results, the site used to show
    // a yellow "No subtitles found — Click here to add a request" box.
    // That function was removed from newer versions of the site.
    // This script brings it back using the site's original CSS styling.

    window.addEventListener('load', function() {
        const resultsTable = document.getElementById('search_results');
        const searchBoxContainer = document.getElementById('search_field');

        // Only run when there are no search results on the page
        if (!resultsTable && searchBoxContainer) {

            // Build the correct “Request” page URL based on current search address
            const requestUrl = window.location.href.replace('/search/', '/request/');

            // Create a message box using OpenSubtitles' native styling
            const containerDiv = document.createElement('div');
            // 'msg warn' automatically applies yellow background, warning icon and correct layout
            containerDiv.className = 'msg warn';
            containerDiv.style.marginTop = '10px'; // small spacing below the search field

            // Message text (static part)
            const textNode = document.createTextNode('No subtitles found. ');

            // Create clickable link leading to the “Add a request” page
            const requestLink = document.createElement('a');
            requestLink.href = requestUrl;
            requestLink.innerHTML = 'Click here to <b>add a request</b>.';

            // Combine text and link
            containerDiv.appendChild(textNode);
            containerDiv.appendChild(requestLink);

            // Insert the message directly below the search bar
            searchBoxContainer.parentNode.insertBefore(containerDiv, searchBoxContainer.nextSibling);
        }
    });
})();