// ==UserScript==
// @name trakt.tv with tmdb rating
// @author NKay08
// @description Inserts movie ratings from tmdb into trakt. credits to
// https://greasyfork.org/de/scripts/9613-trakt-tv-add-imdb-rottentomatoes-movie-ratings-and-sorting-options-for-ratings
// for most of the code
//
// @namespace https://greasyfork.org/de/users/155913-nkay08
// @include /^https?://(.+\.)?trakt\.tv/?.*$/
// @exclude /^https?://(.+\.)?trakt\.tv/(shows|calendars)/?.*$/
//
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js
//
// @grant GM_xmlhttpRequest
//
//
// @version 0.0.1.20171023135004
// @downloadURL https://update.greasyfork.icu/scripts/34462/trakttv%20with%20tmdb%20rating.user.js
// @updateURL https://update.greasyfork.icu/scripts/34462/trakttv%20with%20tmdb%20rating.meta.js
// ==/UserScript==
(function ($) {
'use strict';
/*jslint browser: true, regexp: true, newcap: true*/
/*global jQuery, GM_xmlhttpRequest */
$.noConflict();
var loadRatingsForItem = function () {
var tmdb = $('
', {
'class': 'ratings',
'html': '
TMDB
'
}),
dummy = $('', {
'class': 'ratings',
'style': 'opacity: 0.8; height: 18px;'
}),
url = $(this).attr('data-url');
if ($(this).attr('data-type') !== 'movie') {
$(this).find('.quick-icons').after(dummy).after(dummy.clone());
} else {
$(this).find('.quick-icons').after(tmdb);
if (url) {
$(tmdb).find('span.value').html(' loading');
$.get(url, function (data) {
var imdb_id = $(data).find('.external a:contains("IMDB")').attr('href').split('/').pop();
var tmdb_id = $(data).find('.external a:contains("TMDB")').attr('href').split('/').pop();
var apiKey = "yourApiKey";
GM_xmlhttpRequest({
method: "GET",
url: "https://api.themoviedb.org/3/movie/"+tmdb_id+"?api_key=" + apiKey,
onload: function (json) {
var r, res = $.parseJSON(json.responseText);
console.log("ZZZ "+res.title + ", "+ res.vote_average );
if (res.vote_average === undefined || res.vote_average === "N/A") {
$(tmdb).find('span.value').html(' -');
} else {
$(tmdb).find('span.value').html( res.vote_average + ' (' + res.vote_count + ')');
}
},
onerror: function () {
$(tmdb).find('span.value').html(' failed');
}
});
}).fail(function () {
$(imdb).find('span.value').html(' failed');
});
}
}
},
setPositioning = function () {
setTimeout(function () {
if ($('.trakt-icon-swap-vertical').next().find('a.rating:contains("' + $('.trakt-icon-swap-vertical').next().find('.btn-default').text().trim() + '")').size() > 0) {
$("div.grid-item").each(function () { $(this).attr('style', '{position:relative;top:0px;left:0px;}'); });
} else if ($('.grid-item').first().attr('style') !== undefined) {
$("div.grid-item").each(function () { $(this).css('position', 'absolute'); });
}
}, 500);
},
init = function () {
$("div[id*=\"huckster-desktop\"]").html("");
if (/^\/users\/.+\/(collection|ratings|lists\/|watchlist)/.test(window.location.pathname) && $('.trakt-icon-swap-vertical').next().find('ul a.rating').size() === 0) {
var sortMenu = $('.trakt-icon-swap-vertical').next().find('ul');
sortMenu.append($('', { html: "tmdb rating" }));
sortMenu.find('a.rating').click(sortByRating);
sortMenu.find('a').click(setPositioning);
$(window).on('resize', setPositioning);
$('#sort-direction').click(function () {
$('.trakt-icon-swap-vertical').next().find('a.rating:contains("' + $('.trakt-icon-swap-vertical').next().find('.btn-default').text().trim() + '")').click();
});
} else {
$(window).off('resize', setPositioning);
}
if ($("div.grid-item[data-type='movie']").size() > 0) {
$("div.grid-item").not('.ratingsloaded').each(loadRatingsForItem);
}
};
$(window).ready(function () {
$('head').append('');
$('head').append('');
init();
$(window).on('DOMNodeInserted', function (e) {
if (e.target.tagName === 'BODY') {
$(e.target).ready(init);
}
});
});
}(jQuery));