-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathRotten_Tomatoes_Link_On_IMDb.user.js
71 lines (60 loc) · 2.58 KB
/
Rotten_Tomatoes_Link_On_IMDb.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// ==UserScript==
// @name Rotten Tomatoes Link On IMDb
// @namespace https://github.com/Ede123/userscripts
// @version 1.5
// @description Adds a direct link to the corresponding Rotten Tomatoes movie description page for every IMDb movie
// @icon https://raw.githubusercontent.com/Ede123/userscripts/master/icons/Rotten_Tomatoes.png
// @author Eduard Braun <[email protected]>
// @license GPL-3.0-or-later; https://www.gnu.org/licenses/gpl-3.0.txt
// @include http://www.imdb.com/title/tt*
// @include https://www.imdb.com/title/tt*
// @noframes
// @grant GM.xmlHttpRequest
// @grant GM_xmlhttpRequest
// ==/UserScript==
// get IMDb movie ID
var IMDbID_RegEx = /\/title\/(tt\d{7,8})\//;
var IMDbID = IMDbID_RegEx.exec(window.location.href)[1];
// function to add the Rotten Tomatoes button
var addButton = function(link) {
// icon
var RT_icon = document.createElement('img');
// RT_icon.src = "http://www.rottentomatoes.com/favicon.ico";
// RT_icon.src = "https://staticv2.rottentomatoes.com/static/images/icons/favicon.ico";
// RT_icon.src = "https://rottentomatoes.com/static/images/icons/favicon.ico";
// RT_icon.src = "https://staticv2-4.rottentomatoes.com/static/images/icons/favicon.ico";
RT_icon.src = "https://www.rottentomatoes.com/assets/pizza-pie/images/favicon.ico";
RT_icon.width = RT_icon.height = 16;
// link
var RT_link = document.createElement('a');
RT_link.target = "_blank";
RT_link.href = link;
RT_link.appendChild(RT_icon);
// add link to IMDb movie page
var metadata = document.getElementsByClassName("ipc-inline-list")[1];
if (metadata) {
RT_icon.style.verticalAlign = "middle";
list_item = document.createElement('li');
list_item.classList.add("ipc-inline-list__item");
list_item.appendChild(RT_link);
metadata.appendChild(list_item);
}
};
// --- polyfill
// this more optimal way does not work with GM: var GM = GM || {};
if (typeof GM == 'undefined') { this.GM = {}; }
if (GM.xmlHttpRequest === undefined) { GM.xmlHttpRequest = GM_xmlhttpRequest; }
// get Rotten Tomatoes movie alias from Rotten Tomatoes API
GM.xmlHttpRequest({
method: "GET",
url: "http://www.omdbapi.com/?apikey=6be019fc&tomatoes=true&i=" + IMDbID,
onload: function(response) {
var json = JSON.parse(response.responseText);
if (json && json.tomatoURL && json.tomatoURL != "N/A") {
addButton(json.tomatoURL);
}
else if (json && json.Error) {
console.log("Error: " + json.Error);
}
}
});