IMDb Quick Search

It adds quick seach buttons for other sites on new IMDb design.

目前為 2021-05-31 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name           IMDb Quick Search
// @name:tr        IMDb Hızlı Arama
// @description    It adds quick seach buttons for other sites on new IMDb design.
// @description:tr IMDb'nin yeni tasarımında yapım sayfalarına başka siteler için hızlı arama butonu ekler.
// @author         nht.ctn
// @namespace      https://github.com/nhtctn
// @version        1.0
 
// @icon         https://images2.imgbox.com/a2/50/J4jKvYWH_o.png
 
// @include      *://*.imdb.com/title/*
// @include      *://subscene.com/subtitles/title?q=*
// @include      *://turktorrent.us/?p=torrents&pid=10&q=*
// @include      *://*turkanime.net/?q=*
 
// @grant        GM_addStyle
// @run-at       document-end
 
// @require	     https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @require      https://greasyfork.org/scripts/427315-url-based-search-for-some-websites/code/URL%20Based%20Search%20for%20Some%20Websites.js?version=936416
/* global $ */
/*jshint esversion: 6 */
// ==/UserScript==
 
(function() {
    'use strict';
 
	const crtl = {torrent: 1, anime: 1, drama: 1,}; // If you dont want a group, turn the value of it to 0.
 
//        URL Variables:         @Movie             @Series          @Episode         @Non-English
 
//        %title%         ->     Fight Club         Dexter           Dexter           Parasite
//        %year%          ->     1999               2006             ""               2019
//        %title_year%    ->     Fight Club 1999    Dexter           Dexter           Parasite 2019        // This variable calls year for only movies, not series. If you want year in both case, use this: %title%+%year%
//        %org_title%     ->     Fight Club         Dexter           ""               Gisaengchung         // Actually it returns same as %title% in episode pages. It is not possible to get orginal title from there.
//        %imdbid%        ->     0137523            0773262          0773262          6751668
//        %ttimdbid%      ->     tt0137523          tt0773262        tt0773262        tt6751668
 
	const sites = [
		{ name: "PlanetDP",            url: "https://www.planetdp.org/movie/search?title=%ttimdbid%",                        icon: "https://images2.imgbox.com/fc/77/EFoYyf12_o.png", },
		{ name: "PlanetDP Forum",      url: "http://forum.planetdp.org/index.php?/search/&q=%title%",                        icon: "https://images2.imgbox.com/b9/1d/mMZ0k950_o.png", },
		{ name: 'IMDB Kutusu (Forum)', url: 'http://forum.planetdp.org/index.php?/search/&q=%ttimdbid%',                     icon: 'https://images2.imgbox.com/a0/de/q9nkl3Ot_o.png', },
//		{ name: 'ForumDP TAG',         url: 'http://forum.planetdp.org/index.php?/tags/%ttimdbid%',                          icon: 'https://images2.imgbox.com/11/27/hxxGZh9x_o.png', },
		{ name: 'Youtube',             url: 'https://www.youtube.com/results?search_query=%title%+trailer',                  icon: 'https://images2.imgbox.com/43/65/k7wbhSal_o.png', },
		{ name: 'Ekşi',                url: 'https://eksisozluk.com/?q=%title%',                                             icon: 'https://images2.imgbox.com/e2/78/4Fejmpfi_o.png', },
		{ name: 'Resmi Site',          url: 'https://www.google.com.tr/search?q=%title%+official+website',                   icon: 'https://images2.imgbox.com/63/af/U8W35AyF_o.png', },
		{ name: 'TheMovieDB',          url: 'https://www.themoviedb.org/search?query=%title%',                               icon: 'https://images2.imgbox.com/cc/ba/AmRxFc36_o.png', },
		{ name: 'TheTVDB',             url: 'https://www.thetvdb.com/search?query=%title%',                                  icon: 'https://images2.imgbox.com/85/50/WViQFyra_o.png', },
		{ name: 'BeyazPerde',          url: 'https://www.beyazperde.com/aramak/?q=%title%',                                  icon: 'https://images2.imgbox.com/15/ce/BydtnSMH_o.png', },
		{ name: 'Rottentomatoes',      url: 'http://www.rottentomatoes.com/search/?search=%title%',                          icon: 'https://images2.imgbox.com/fc/0a/pm8N3AWv_o.png', },
		{ name: 'Metacritic',          url: 'https://www.metacritic.com/search/all/%title%/results',                         icon: 'https://images2.imgbox.com/ce/b0/OmF70Xo6_o.png', },
		{ name: 'Trakt',               url: 'https://trakt.tv/search/imdb?query=%ttimdbid%',                                 icon: 'https://images2.imgbox.com/b9/55/Scyuh64R_o.png', },
		{ name: 'IcheckMovies',        url: 'http://www.icheckmovies.com/search/movies/?query=%ttimdbid%',                   icon: 'https://images2.imgbox.com/f2/d6/fQRQ8Quz_o.png', },
		{ name: 'Letterboxd',          url: 'https://letterboxd.com/search/films/%ttimdbid%',                                icon: 'https://images2.imgbox.com/26/8f/a0pCUa2W_o.png', },
		{ name: 'Criticker',           url: 'https://www.criticker.com/?search=%ttimdbid%',                                  icon: 'https://images2.imgbox.com/f4/83/L04pazdG_o.png', },
		{ name: 'ALLMOVIE',            url: 'https://www.allmovie.com/search/movies/%title%',                                icon: 'https://images2.imgbox.com/41/7a/D8XGwR4Q_o.png', },
		{ name: 'Douban',              url: 'https://movie.douban.com/subject_search?search_text=%ttimdbid%',                icon: 'https://images2.imgbox.com/96/6a/yxMwQBW9_o.png', },
		{ name: 'Box Office Mojo',     url: 'http://www.boxofficemojo.com/search/?q=%title%',                                icon: 'https://images2.imgbox.com/07/8a/WdNKBfjC_o.png', },
		{ name: 'Sinemalar',           url: 'https://www.sinemalar.com/ara/?type=all&q=%title%',                             icon: 'https://images2.imgbox.com/81/40/1miFBH85_o.png', },
		{ name: 'TVShow Time',         url: 'https://www.google.com.tr/search?q=%title%+TVShow+Time',                        icon: 'https://images2.imgbox.com/b0/f1/yl82CbyK_o.png', },
		{ name: 'TVmaze',              url: 'http://www.tvmaze.com/search?q=%title%',                                        icon: 'https://images2.imgbox.com/88/3a/nfS7SSXY_o.png', },
		{ name: 'TV.com',              url: 'http://www.tv.com/search?q=%title%',                                            icon: 'https://images2.imgbox.com/01/c6/uxF9LWgL_o.png', },
		{ name: 'Vikipedi',            url: 'https://www.google.com.tr/search?q=%title%+Turkish+Wikipedia',                  icon: 'https://images2.imgbox.com/11/c7/bY5WbObT_o.png', },
		{ name: 'Wikipedia',           url: 'https://www.google.com.tr/search?q=%title%+English+Wikipedia',                  icon: 'https://images2.imgbox.com/cd/e0/OgTwm1AC_o.png', },
		{ name: 'Fandom',              url: 'http://fandom.wikia.com/?s=%title%',                                            icon: 'https://images2.imgbox.com/18/73/EDiJiEBk_o.png', },
		{ name: 'IMP Awards',          url: 'http://impawards.com/search.php?search_data=%title%',                           icon: 'https://images2.imgbox.com/fc/78/oxUxSfB5_o.png', },
		{ name: 'Fanart',              url: 'https://fanart.tv/?sect=3&s=%title%',                                           icon: 'https://images2.imgbox.com/4b/40/6zjbxrch_o.png', },
		{ name: 'FirstShowing',        url: 'https://www.firstshowing.net/?s=%title%',                                       icon: 'https://images2.imgbox.com/79/b3/F8dpZuZD_o.png', },
		{ name: 'Subscene',            url: 'http://subscene.com/subtitles/title?q=%title%',                                 icon: 'https://images2.imgbox.com/b0/3b/SY0apigg_o.png', },
		{ name: 'OpenSubtitles',       url: 'https://www.opensubtitles.org/en/search/sublanguageid-eng,tur/imdbid-%imdbid%', icon: 'https://images2.imgbox.com/60/3c/I7sFiFdm_o.png', },
		{ name: 'Addic7ed',            url: 'https://www.addic7ed.com/search.php?search=%title%',                            icon: 'https://images2.imgbox.com/79/66/O9utGGF8_o.png', },
		{ name: 'Podnapisi',           url: 'https://www.podnapisi.net/en/subtitles/search/?keywords=%title%',               icon: 'https://images2.imgbox.com/ed/a7/1tY9szFy_o.png', },
		{ name: 'Türkçe Altyazı',      url: 'http://www.turkcealtyazi.org/find.php?cat=sub&find=%ttimdbid%',                 icon: 'https://images2.imgbox.com/b1/11/4ULjZm1K_o.png', },
 
//		{name: "", url: "", icon: "",}
//		{name: "", url: "", icon: "",}
	];
 
	const torrentSites = [
		{ name: 'RARBG',               url: 'https://rarbgmirror.com/torrents.php?search=%imdbid%',                          icon: 'https://images2.imgbox.com/34/0b/bCrT9fHL_o.png', },
		{ name: '1337x',               url: 'https://www.1337x.to/sort-search/%title_year%/time/desc/1/',                    icon: 'https://images2.imgbox.com/1d/9e/mgOmJEvI_o.png', },
		{ name: 'Zooqle',              url: 'https://zooqle.com/search?q=%title_year%&s=ns&v=t&sd=d',                        icon: 'https://images2.imgbox.com/25/3b/Sd8La3js_o.png', },
		{ name: 'TorrentGalaxy',       url: 'https://torrentgalaxy.to/torrents.php?search=%ttimdbid%&sort=id&sort=id&order=desc', icon: 'https://images2.imgbox.com/c2/27/dGkG9vjT_o.png', },
		{ name: 'ETTV',                url: 'https://www.ettv.tv/torrents-search.php?search=%title%&sort=id&order=desc',     icon: 'https://images2.imgbox.com/fa/3e/zi3h52EA_o.png', },
		{ name: 'PSA',                 url: 'http://psarips.com/?s=%title_year%',                                            icon: 'https://images2.imgbox.com/26/c1/2OXmz3tN_o.png', },
		{ name: 'RuTracker',           url: 'http://rutracker.org/forum/tracker.php?nm=%title_year%',                        icon: 'https://images2.imgbox.com/24/5d/kj3YSoFr_o.png', },
		{ name: 'Zamunda',             url: 'http://zamunda.net/bananas?&search=%title_year%',                               icon: 'https://images2.imgbox.com/89/58/BcmHxuVW_o.png', },
		{ name: 'BTN',                 url: 'http://broadcasthe.net/torrents.php?searchstr=%title_year%',                    icon: 'https://images2.imgbox.com/d4/a1/PXzzpDjb_o.png', },
		{ name: 'TorrentDay',          url: 'http://www.torrentday.com/browse.php?search=%title_year%',                      icon: 'https://images2.imgbox.com/01/c0/sELs3Ft4_o.png', },
		{ name: 'CinemaGeddon',        url: 'http://cinemageddon.net/browse.php?search=%imdbid%',                            icon: 'https://images2.imgbox.com/0d/9c/rkhfaakh_o.png', },
		{ name: 'KaraGarga',           url: 'https://karagarga.in/browse.php?search=%imdbid%&search_type=imdb',              icon: 'https://images2.imgbox.com/cc/ea/EMx6RWyb_o.png', },
		{ name: 'Hd-T',                url: 'http://hd-torrents.org/torrents.php?search=%imdbid%',                           icon: 'https://images2.imgbox.com/c1/e7/LFKIWxpN_o.png', },
		{ name: 'Filelist',            url: 'http://filelist.ro/browse.php?search=%imdbid%',                                 icon: 'https://images2.imgbox.com/9e/2e/R3yGIQm7_o.png', },
		{ name: 'IPT',                 url: 'http://www.iptorrents.com/t?q=%ttimdbid%',                                      icon: 'https://images2.imgbox.com/0b/49/AwbWiNMY_o.png', },
		{ name: 'PrivateHD',           url: 'https://privatehd.to/torrents?in=1&search=%title%&order=age&sort=desc',         icon: 'https://images2.imgbox.com/64/a7/KBgM8R4y_o.png', },
		{ name: 'TurkTorrent',         url: 'https://turktorrent.us/?p=torrents&pid=10&q=%ttimdbid%',                        icon: 'https://images2.imgbox.com/79/1f/Jbd4Vu5n_o.png', },
	];
 
	var drama_sites = [
		{ name: 'MyDramaList',         url: 'https://mydramalist.com/search?q=%title%',                                      icon: 'https://images2.imgbox.com/18/9d/voQieZdD_o.png', },
		{ name: 'AsianWiki',           url: 'https://asianwiki.com/index.php?title=Special%3ASearch&search=%title%',         icon: 'https://images2.imgbox.com/73/a6/kUDT1yO9_o.png', },
		{ name: 'Hancinema',           url: 'https://www.hancinema.net/googlesearch.php?cx=partner-pub-1612871806153672%3A2t41l1-gajp&cof=FORID%3A10&ie=ISO-8859-1&hl=en&q=%title%', icon: 'https://images2.imgbox.com/46/c6/qxK0R7S4_o.png',	},
		{ name: 'Viki',                url: 'https://www.viki.com/search?q=%title%&type=series',                             icon: 'https://images2.imgbox.com/9c/46/Flf1ykIh_o.png', },
		{ name: 'Soompi',              url: 'https://www.soompi.com/search?query=%title%',                                   icon: 'https://images2.imgbox.com/d9/ab/4jDFz2WS_o.png', },
		{ name: 'DramaBeans',          url: 'https://www.dramabeans.com/?s=%title%',                                         icon: 'https://images2.imgbox.com/62/c1/2mKN3cII_o.png', },
	  ];
 
	var anime_sites = [
		{ name: 'MAL',                 url: 'https://myanimelist.net/search/all?q=%title%',                                  icon: 'https://images2.imgbox.com/bf/8b/cQ2UnZIa_o.png', },
		{ name: 'AniDB',               url: 'https://anidb.net/perl-bin/animedb.pl?adb.search=%title%&show=search&do.search=search', icon: 'https://images2.imgbox.com/3b/c9/eeUYC5n7_o.png', },
		{ name: 'ANN',                 url: 'https://www.animenewsnetwork.com/search?q=%title%',                             icon: 'https://images2.imgbox.com/64/ca/uWlLBCwp_o.png', },
		{ name: 'LiveChart',           url: 'https://www.livechart.me/search?q=%title%',                                     icon: 'https://images2.imgbox.com/85/08/C91WXD3m_o.png', },
		{ name: 'AniList',             url: 'https://anilist.co/search/anime?search=%title%',                                icon: 'https://images2.imgbox.com/98/a6/NfPnZ1Hy_o.png', },
		{ name: 'Kitsu',               url: 'https://kitsu.io/anime?&text=%title%',                                          icon: 'https://images2.imgbox.com/88/c9/Q9wsiMwc_o.png', },
		{ name: 'aniSearch',           url: 'https://www.anisearch.com/anime/index/?page=1&char=all&text=%title%&smode=2',   icon: 'https://images2.imgbox.com/9c/a3/gMmGqWe7_o.png', },
		{ name: 'Nyaa',                url: 'https://nyaa.si/?&q=%org_title%',                                               icon: 'https://images2.imgbox.com/ae/83/Wt7miqlB_o.png', },
		{ name: 'AnimeTosho',          url: 'https://animetosho.org/search?q=%org_title%',                                   icon: 'https://images2.imgbox.com/95/99/ielNsiUu_o.png', },
		{ name: 'AniDex',              url: 'https://anidex.info/?q=%org_title%',                                            icon: 'https://images2.imgbox.com/b4/e1/uCD81F45_o.png', },
		{ name: 'AnimeBytes',          url: 'https://animebytes.tv/torrents.php?searchstr=%title%&force_default=1',          icon: 'https://images2.imgbox.com/aa/58/vsP6uAXE_o.png', },
		{ name: 'BakaBT',              url: 'https://bakabt.me/browse.php?q=%title%',                                        icon: 'https://images2.imgbox.com/6a/b8/4qBbiNge_o.png', },
		{ name: 'RuTracker',           url: 'http://rutracker.org/forum/search_cse.php?q=%org_title%',                       icon: 'https://images2.imgbox.com/24/5d/kj3YSoFr_o.png', },
        { name: 'TürkAnime',           url: 'http://www.turkanime.tv/?q=%title%',                                            icon: 'https://images2.imgbox.com/48/1b/6S4bA8pN_o.png', },
	];
 
	// Styles
	GM_addStyle(`
	.quick-search {margin-left: 0; margin-right: 0;}
	.quick-search > div {justify-content: flex-start; flex-wrap: wrap; height: unset; padding: 0.6rem;}
	.quick-search button {padding: 0.2rem; opacity: 0.7;}
	.quick-search button:hover {opacity: 1;}
	.quick-search a {display: flex;}
	.quick-search img {height: 1.4rem; width: 1.4rem;}
`);
 
	// Title edit
	const titleEdit=(t) => {
		return t
			.replace(/[\/\\()~?<>{}]/g, "") //remove bad chars
			.replace("&amp;","%26") //replace & with code
			.replace("&", "%26")
			.replace('"', '%22')
			.replace("#", "%23")
			.replace("$", "%24")
			.replace("%", "%25")
			.replace("'", "%27")
			.replace("*", "%2A")
			.replace("-", "%2D")
		;
	};
 
	// Variables
    const regex = /\/title\/(tt\d+)\/?/;
    const pageUrl = window.location.href;
	var isSerial = ($('[class^="EpisodeNavigationForTVSeries"], .subnav__all-episodes-button').length > 0) ? true : false;
	var ttImdbId = regex.exec( pageUrl )[1];
	var title = titleEdit( $('[class^="TitleHeader"]').text().trim() );
	var orgTitle = titleEdit( $('[class^="OriginalTitle"]').text().replace(/Original title: /i,"").trim() );
	orgTitle = (orgTitle == "") ? title : orgTitle;
	var year = $('title').text().replace(/.+\(.*?(\d{4}).*\) - IMDb/, "$1");
	var titleYear = isSerial ? title : title + " " + year;
	var episodeCheck = $('a[class*="SeriesParentLink"]').length > 0;
	if (episodeCheck) {
		let parent = $('a[class*="SeriesParentLink"]');
		ttImdbId = regex.exec( parent.attr("href") )[1];
		title = parent.text();
		orgTitle = title;
		titleYear = title;
	}
 
	// Anime & Drama
	var isDrama, isAnime;
	var language = $('[data-testid="title-details-languages"]').text().trim();
	var genre = $('[data-testid="genres"]').text().trim();
	if (language.search( /(Korean|Japanese|Mandarin|Chinese|Tagalog|Cantonese)/i ) >= 0 && language.search( /English/i ) < 0 && genre.search( /Animation/i ) < 0) {isDrama = true;}
	if (language.search( /Japanese/i ) >= 0 && language.search( /English/i ) < 0 && genre.search( /Animation/i ) >= 0) {isAnime = true;}
 
	// Functions
	const url=(u) => {
		return u
			.replace("%ttimdbid%", ttImdbId)
			.replace("%imdbid%", ttImdbId.replace("tt",""))
			.replace("%title%", title)
			.replace("%year%", year)
			.replace("%title_year%", titleYear)
			.replace("%org_title%", orgTitle)
		;
	};
	const refPos = (p_ref) => {
		let ref = document.querySelector(p_ref).getBoundingClientRect();
		let width = ref.width;
		return {
			top: (window.scrollY + ref.top) + "px",
			left: ref.left + "px",
			width: width + "px",
		};
	};
	const putBtns=(group, id) => {
		// Create clone area
		let cloneArea = $('.watchContainerClone');
		if (cloneArea.length <= 0) {
			$('body').prepend('<div class="watchContainerClone" style="position: absolute; z-index: 100; padding-top: 1rem;"></div>');
			cloneArea = $('.watchContainerClone');
		}
		// Put bar
		let bar = $('[class^="SubNav__SubNavContainer"]:first').clone().attr("id", id).addClass("quick-search");
		bar.children().html("");
		bar.prependTo( cloneArea );
		// Put buttons
		let cls = $('[data-testid="hero-subnav-bar-all-topics-button"]').attr("class");
		group.forEach(function(s) {
			$('#' + id + ' > div').append('<button class="' + cls + '" title="' + s.name + '"><a href="' + url(s.url) + '" target="_blank"><img src="' + s.icon + '"></img></a></button>');
		});
		// Position and space for Clone
		let pos = refPos('[class^="Hero__WatchContainer"]');
		cloneArea.css("top", pos.top).css("left", pos.left).css("width", pos.width);
		let cloneHeight = document.querySelector('.watchContainerClone').getBoundingClientRect().height + "px";
		$('[class^="Hero__WatchContainer"]').css("padding-top", cloneHeight );
	};
 
	// Put Search Buttons
	if (crtl.torrent && !isAnime) {putBtns(torrentSites, "torrent_searchOn");}
	putBtns(sites, "searchOn");
	if (crtl.anime && isAnime) {putBtns(anime_sites, "anime_searchOn");}
	if (crtl.drama && isDrama) {putBtns(drama_sites, "drama_searchOn");}
})();