NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Supreme7 PH!IMDB
// @namespace https://prohardver.hu/tag/supreme7.html
// @version 0.5
// @description TMDB (themoviedb.org) film/sorozat adatok lekérése a Prohardver! lapcsalád fórumán IMDB url alapján
// @author Supreme7
// @match https://prohardver.hu/tema/*
// @match https://mobilarena.hu/tema/*
// @match https://itcafe.hu/tema/*
// @match https://gamepod.hu/tema/*
// @grant GM_xmlhttpRequest
// @updateURL https://openuserjs.org/meta/Supreme7/Supreme7_PH!IMDB.meta.js
// @downloadURL https://openuserjs.org/install/Supreme7/Supreme7_PH!IMDB.user.js
// @copyright 2020, Supreme7 (https://openuserjs.org/users/Supreme7)
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// Ha az új hozzászólás, válasz, vagy szerkesztés gombra kattint, elindul a szkript
$(document).on("click", "[data-action-msg-new], [data-action-msg-reply], [data-action-msg-mod]", function(e) {
// Megnézzük melyik szerkesztőt használja a felhasználó
if($("[data-rtif-legacy='0']").length > 0){
window.editor = 1; // Régi szerkesztő
}else{
window.editor = 0; // Új szerkesztő
}
e.preventDefault();
// IMDB gomb a szerkesztőhöz adása
$(".msg-editor").find(".msg-controls").prepend('<a id="s7-imdb-button" data-toggle="collapse" href="#s7-imdb" class="btn btn-success btn-sm text-white">IMDB</a>');
// S7 PH!IMDB felület
$(".msg-upload-collapse").before(`<br><div class="card collapse" id="s7-imdb" style="background: none;"><div class="card-header" style="padding: 2px;">SUPREME7 PH!MDB</div>
<div class="card-body"><input type="text" placeholder="IMDB url" style="text-align: center; padding: 5px; width: 100%; border: 1px dotted #888;" id="imdb-url"></div>
<div id="imdb-rating-box" style="display: none;"></div>
<textarea id="movie-data" style="display: none; width: 100%;" rows="4"></textarea>
<div class="text-center">
<div class="btn-group"><button class="btn btn-warning copy-movie-data" style="display: none;">Másolás</button></div>
<div class="btn-group"><button class="btn btn-success insert-movie-data" style="display: none;">Beillesztés</button></div></div>
</div>
`);
});
// Az IMDB gomb lenyomására scroll az input mezőhöz és fókusz
$(document).on('click', '#s7-imdb-button', function(){
$("input#imdb-url").focus();
$("html, body").animate({
scrollTop: $('#s7-imdb').offset().top
}, 500);
});
// Ha változik az input mező tartalma
$(document).on('change', 'input#imdb-url', function(){
$("textarea#movie-data").text("");
var value = $("input#imdb-url").val();
if(value == ""){
// wtf?
}else{
// IMDB azonosító kikukázása az URL-ből
var imdbId = matchImdb(value);
if(imdbId != false){
// TMDB adatok keresése
GM_xmlhttpRequest({
url: "https://api.themoviedb.org/3/find/"+imdbId+"?api_key=d90f096470d9bc1233cafec11b273eeb&language=hu&external_source=imdb_id",
method: 'GET',
onload: function(res) {
if (res.status === 200) {
var json = JSON.parse(res.responseText);
if(json["movie_results"].length > 0 || json["tv_results"].length > 0 ){
// IMDB rating plugn funkció
loadImdbRating(imdbId);
var dataTitle;
var dataOriginalTitle;
var dataReleaseYear;
var genres = "";
// Filmtalálat
if(json["movie_results"].length > 0){
// Film adatok
dataTitle = json["movie_results"][0]["title"];
dataOriginalTitle = json["movie_results"][0]["original_title"];
dataReleaseYear = json["movie_results"][0]["release_date"].substring(0,4);
// Műfajok
$.each(json["movie_results"][0]["genre_ids"], function(key, value){
genres += "#"+ genresById(value) + " ";
});
}else if(json["tv_results"].length > 0){
// Sorozat adatok
dataTitle = json["tv_results"][0]["name"];
dataOriginalTitle = json["tv_results"][0]["original_name"];
dataReleaseYear = json["tv_results"][0]["first_air_date"].substring(0,4);
// Műfajok
$.each(json["tv_results"][0]["genre_ids"], function(key, value){
genres += "#"+ genresById(value) + " ";
});
}
// A szerkesztőnek megfelelően formázott szöveget illesztjük a textarea-ba a kapott filmadatok alapján
if(editor === 0){
// ÚJ SZERKESZTŐ
$("textarea#movie-data").val('<p><a href="https://www.imdb.com/title/'+ imdbId +'/" target="_blank" rel="noopener"><b>' + dataTitle + '</b></a> (' + dataReleaseYear + ') - ' + dataOriginalTitle + '</p><p>' + genres + '</p>').show();
}else if(editor === 1){
// RÉGI SZERKESZTŐ
$("textarea#movie-data").val("[L:https://www.imdb.com/title/"+ imdbId +"/][b]" + dataTitle + "[/b][/L] (" + dataReleaseYear + ") " + dataOriginalTitle + "\n" + genres + "").show();
}
// Másolás-beillesztés gombok megjelenítése
$(".copy-movie-data").show();
$(".insert-movie-data").show();
// Másolás gombra kattintva vágólapra másolja a kódot
$(document).on("click", ".copy-movie-data", function(){
$("textarea#movie-data").select();
document.execCommand('copy');
});
// Beillesztés gombra kattintva a használt szerkesztőnek megfelelő kódott illeszt a szerkesztő mezőbe
$(document).one("click", ".insert-movie-data", function(){
var formattedCode = $("textarea#movie-data").val();
var content;
if(editor === 0){
// ÚJ SZERKESZTŐ
content = $("div.rtif-content").html();
$("div.rtif-content").html((content === "<p><br data-mce-bogus=\"1\"></p>" ? formattedCode : content + "<br>" + formattedCode));
}else if(editor === 1){
// RÉGI SZERKESZTŐ
content = $("textarea.rtif-content").val();
$("textarea.rtif-content").val((content == "" ? formattedCode : content + "\n" + formattedCode));
}
$("html, body").animate({
scrollTop: $('.msg-editor').offset().top
}, 500);
});
}else{
alert("Nem található film vagy sorozat a megadott azonosítóval!");
}
}else{
alert("Hiba történt az adatok lekérdezése során!");
}
}
});
}
}
});
function genresById(id){
// Műfajok azonosító alapján
var genres = {"10768": "Háború-politika", "10767" : "Talkshow", "10766":"Szappanopera", "10765" : "Sci-Fi-Fantasy", "10764": "Valóságshow", "10763" : "Hírműsor", "10762" : "Gyerek", "10759" : "Akció-kaland", "28" : "Akció", "12" : "Kaland", "16" : "Animációs", "35" : "Vígjáték", "80" : "Bűnügyi", "99" : "Dokumentum", "18" : "Dráma", "10751" : "Családi", "14" : "Fantasy", "36" : "Történelmi", "27" : "Horror", "10402" : "Zenei", "9648" : "Rejtély", "10749" : "Romantikus", "878" : "Sci-fi", "10770" : "TV-film", "53" : "Thriller", "10752" : "Háborús", "37" : "Western"};
return genres[id];
}
function matchImdb(string){
if(string.match(/(https:\/\/|https:\/\/www\.|https:\/\/m\.|m\.)imdb\.com\/title\/tt([0-9]+)\//g)){
//var url = new URL(string);
//var split = url.pathname.split("/");
var regexp = /\/tt([0-9]+)\//g;
var match = regexp.exec(string);
var imdbId = "tt" + match[1];
return imdbId;
}else{
alert("Hibás URL formátum");
return false;
}
}
function loadImdbRating(imdbId){
// IMDB rating plugin
$("#imdb-rating-box").html('<span id="imdb-rating" class="imdbRatingPlugin text-success" data-user="" data-title="'+imdbId+'" data-style="p4" ></span>');
$('[id^="imdb-jsonp"]').remove(); //to prevent creation of multiple script tags.
(function(d,s,id){
var js,stags=d.getElementsByTagName(s)[0];if(d.getElementById(id)){}js=d.createElement(s);js.id=id;js.src="https://ia.media-imdb.com/images/G/01/imdb/plugins/rating/js/rating.js";stags.parentNode.insertBefore(js,stags);
})(document,'script','imdb-rating-api');
}
// Figyeli, hogy az IMDB értékelés betöltött-e, és ha igen, azt is beilleszti a formázott kódba
$("body").on('DOMSubtreeModified', "#imdb-rating", function() {
var imdbRatingText = $("#imdb-rating").find("span.rating").text();
var currentVal = $("textarea#movie-data").val();
if(imdbRatingText != ""){
if(editor === 0){
// ÚJ SZERKESZTŐ
$("textarea#movie-data").val(currentVal + "<p><b>IMDB:</b> " + imdbRatingText + "</p>");
}else if(editor === 1){
// RÉGI SZERKESZTŐ
$("textarea#movie-data").val(currentVal + "\n[b]IMDB:[/b] " + imdbRatingText + "");
}
}
});
})();