// ==UserScript==
// @name IMDb Quick Search
// @name:tr IMDb Hızlı Arama
// @description It adds quick seach buttons for other sites on IMDb.
// @description:tr IMDb'ye başka siteler için hızlı arama butonu ekler.
// @author nht.ctn
// @namespace https://github.com/nhtctn
// @version 2
// @license MIT
// @icon https://images2.imgbox.com/a2/50/J4jKvYWH_o.png
// @match *://*.imdb.com/title/*
// @match *://subscene.com/subtitles/title?q=*
// @grant GM_addStyle
// @run-at document-idle
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @require https://gf.qytechs.cn/scripts/427315-url-based-search-for-some-websites/code/URL%20Based%20Search%20for%20Some%20Websites.js?version=936416
/*jshint esversion: 6 */
// ==/UserScript==
(function() {
'use strict';
// 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: 'MyDramaList', url: 'https://mydramalist.com/search?q=%title%', icon: 'https://images2.imgbox.com/18/9d/voQieZdD_o.png', },
{ 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: 'LiveChart', url: 'https://www.livechart.me/search?q=%title%', icon: 'https://images2.imgbox.com/85/08/C91WXD3m_o.png', },
{ 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', },
{ 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: "PlanetDP", url: "https://www.planetdp.org/movie/search?title=%ttimdbid%", icon: "https://images2.imgbox.com/fc/77/EFoYyf12_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("&","%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 = ($('.episode-guide-text').length > 0) ? true : false;
var ttImdbId = regex.exec( pageUrl )[1];
var title = titleEdit( $('[data-testid="hero-title-block__title"]').text().trim() );
var orgTitle = titleEdit( $('[data-testid="hero-title-block__original-title"]').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 = $('[data-testid="hero-subnav-bar-season-episode-numbers-section"]').length > 0;
if (episodeCheck) {
let parent = $('[data-testid="hero-title-block__series-link"]');
ttImdbId = regex.exec( parent.attr("href") )[1];
title = parent.text();
orgTitle = title;
titleYear = title;
}
// Anime & Drama
var isDrama;
var 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;}
console.log(isDrama);
// 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, nthParent) => {
let ref = document.querySelector(p_ref);
for (let x = 0; x < nthParent; x++) {
ref = ref.parentElement;
}
ref = ref.getBoundingClientRect()
let width = ref.width;
return {
top: (window.scrollY + ref.top) + "px",
bottom: (window.scrollY + ref.bottom) + "px",
left: ref.left + "px",
width: width + "px",
};
};
const putBtns=(group, id, ref) => {
// Delete some margin
$(':not(#searchOn) >' + ref).parent().parent().children().css("margin-bottom", "0px" );
// 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');
let pos = refPos('[data-testid="hero-title-block__title"]', 2);
cloneArea.css("top", pos.bottom).css("left", pos.left).css("width", pos.width);
}
// Put bar
let bar = $('[data-testid="hero-subnav-bar-right-block"]').parent().parent().clone().attr("id", id).addClass("quick-search");
bar.children(0).html("");
bar.prependTo( cloneArea );
// Put buttons
let cls = $('[data-testid="hero-subnav-bar-all-topics-button"]').attr("class");
group.forEach(function(s) {
$('#' + id + ' > div:first-child').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
cloneArea.css("padding-top", 0);
let cloneHeight = document.querySelector('.watchContainerClone').getBoundingClientRect().height + "px";
$(':not(#searchOn) >' + ref).parent().parent().css("margin-bottom", cloneHeight );
};
// Put Search Buttons
putBtns(sites, 'searchOn', '[data-testid="hero-title-block__title"]');
})();