Greasy Fork

Greasy Fork is available in English.

豆瓣电影 YTS 之间快捷跳转

更新网址为yts.lt

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         豆瓣电影 YTS 之间快捷跳转
// @namespace    http://tampermonkey.net/
// @version      1.6
// @description  更新网址为yts.lt
// @author       DeepSeek
// @match        https://movie.douban.com/subject/*
// @match        https://yts.lt/movies/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 添加全局样式
    const style = document.createElement('style');
    style.textContent = `
        a.douban-yts-link {
            color: inherit !important;
            text-decoration: none !important;
            background: none !important;
            cursor: pointer !important;
        }
    `;
    document.head.appendChild(style);

    // 豆瓣电影处理函数
    const processDouban = () => {
        const imdbLink = document.querySelector('a[href*="imdb.com/title/tt"]');
        if (!imdbLink) return;

        try {
            // 提取IMDb ID
            const imdbId = imdbLink.href.match(/tt\d+/)[0];
            const ytsUrl = `https://yts.lt/browse-movies/${imdbId}/all/all/0/featured/0/all`;
            
            // 处理所有标题元素(适配多语言标题情况)
            document.querySelectorAll('h1 span').forEach(titleElement => {
                if (!titleElement.querySelector('a')) {
                    titleElement.innerHTML = `<a class="douban-yts-link" href="${ytsUrl}" target="_blank">${titleElement.textContent}</a>`;
                }
            });
        } catch (e) {
            console.log('[YTS跳转脚本] IMDB ID提取失败:', e);
        }
    };

    // YTS电影处理函数
    const processYTS = () => {
        const titleElement = document.querySelector('.hidden-xs h1, .info-content h1');
        if (!titleElement) return;

        try {
            // 清洗标题
            const rawTitle = titleElement.textContent;
            const cleanTitle = rawTitle
                .replace(/\s*$\d{4}$$/, '')  // 移除年份
                .trim()                        // 去除首尾空格
                .replace(/\s+/g, ' ');         // 合并连续空格

            // 编码处理
            const encodedTitle = encodeURIComponent(cleanTitle)
                .replace(/[!'()*~]/g, match => 
                    `%${match.charCodeAt(0).toString(16).toUpperCase()}`
                );

            // 构建豆瓣搜索链接
            const doubanUrl = `https://search.douban.com/movie/subject_search?search_text=${encodedTitle}&cat=1002`;
            
            // 精准替换原始标题
            titleElement.innerHTML = titleElement.innerHTML.replace(
                rawTitle, 
                `<a class="douban-yts-link" href="${doubanUrl}" target="_blank">${cleanTitle}</a>`
            );
        } catch (e) {
            console.log('[豆瓣跳转脚本] 标题处理失败:', e);
        }
    };

    // 页面路由
    if (location.host.includes('douban.com')) {
        // 豆瓣页面延迟1秒执行(等待IMDb链接加载)
        setTimeout(processDouban, 1000);
    } else if (location.host.includes('yts.lt')) {
        // YTS页面立即执行
        processYTS();
    }
})();