Greasy Fork

Filmografie IMDb>WP

try to take over the world!

当前为 2018-10-12 提交的版本,查看 最新版本

// ==UserScript==
// @name         Filmografie IMDb>WP
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  try to take over the world!
// @author       You
// @match        https://www.imdb.com/name/*
// @grant        GM.xmlHttpRequest
// ==/UserScript==
var el = document.getElementsByClassName('filmo-category-section')[0].children;
var expa=[];
var expo="";
for (var i = 0; i<el.length;i++){
var year=el[i].getElementsByClassName('year_column')[0].innerText.trim().split('/')[0].replace('-','–');
var title=el[i].getElementsByTagName('a')[0].innerText.replace('-','–');
var type=el[i].innerHTML.split('</b>')[1].split('<br>')[0].trim().replace('TV Series','Fernsehserie').replace('TV Mini-Series','Miniserie').replace('Short','Kurzfilm').replace('TV Movie','Fernsehfilm').replace('(Video)','');
if(!type.includes("in_production")){
var id = el[i].getAttribute("id").split('-')[1];
var fetchWD = function getWB(id){
GM.xmlHttpRequest({
method: "GET",
url: "https://www.wikidata.org/w/api.php?action=query&format=json&list=search&srsearch=haswbstatement:P345="+id,
onload: function(response) {
             if(response.responseText.length > 0)
             {
                 var jsonString = response.responseText;
                 var jsonObj = JSON.parse(jsonString);
                 var tempImdb = response.finalUrl.split('P345=')[1].split('&')[0];
                 if (jsonObj.query.searchinfo.totalhits==1){
                     var tempWd = jsonObj.query.search[0].title;
                     expo=expo.replace(tempImdb,tempWd);
                     fetchWP(tempImdb,tempWd);
                     expo=deleteLooseEnds(expo);
                 }else{
                     expo=expo.replace('[['+tempImdb+'|','');
                     expo=deleteLooseEnds(expo);
                 }
                 //console.clear();
                 //console.log(expo);
             }
        },
onerror: function(response) {
            console.log("Error in fetching contents: " + response.responseText);
        }

    });
}
var fetchWP = function getWP(imdbid,wdid){
GM.xmlHttpRequest({
method: "GET",
url: "https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&props=sitelinks&sitefilter=dewiki&ids="+wdid+"&imdbid="+imdbid,
onload: function(response) {
             if(response.responseText.length > 0)
             {
                 var jsonString = response.responseText;
                 var jsonObj = JSON.parse(jsonString);
                 var tempImdb = response.finalUrl.split('imdbid=')[1].split('&')[0];
                 var tempWd = response.finalUrl.split('ids=')[1].split('&')[0];
                 if(jsonString.includes("title")){
                     var tempWp = jsonString.split("\"title\":\"")[1].split("\"")[0].replace("\\u2026",'…').replace("\\u2019","’").replace('\\u2013','–').replace('\\u00e4','ä').replace('\\u00c4','Ä').replace('\\u00f6','ö').replace('\\u00d6','Ö').replace('\\u00fc','ü').replace('\\u00dc','Ü').replace('\\u00df','ß');
                     expo=expo.replace(tempWd,tempWp);
                 }else{
                     expo=expo.replace('[['+tempWd+'|','');
                     //expo=deleteLooseEnds(expo);
                 }
                 //console.clear();
                 //console.log(expo);
             }
        },
onerror: function(response) {
            console.log("Error in fetching contents: " + response.responseText);
        }

    });
}
fetchWD(id);
if(type=="(Fernsehserie)"||type=="(Miniserie)"){
var number=0;var arr=el[i].getElementsByClassName('filmo-episodes');
for(var j=0;j<arr.length;j++){if (!arr[j].innerText.includes('credit only')){number++};};
if (number==1){
expa.push('* '+year+': [['+id+'|'+title+']] '+type.split(')')+' eine Folge)'+'\n');
}else{
expa.push('* '+year+': [['+id+'|'+title+']] '+type.split(')')+' '+number+' Folgen)'+'\n');
}}else{
expa.push('* '+year+': [['+id+'|'+title+']] '+type+'\n');
}}};
expo="";expa.sort().forEach(function(entry) {expo+=entry;});
function deleteLooseEnds(text){
    var temp="";
    text.split('\n').sort().forEach(function(entry) {
        if(!entry.includes('[[')){
            entry=entry.replace(']]','').trim();
        }else{
            if (entry.split('[[')[1].split(']]')[0].split('|')[0]==entry.split('[[')[1].split(']]')[0].split('|')[1]){
                entry=entry.replace(entry.split('[[')[1].split(']]')[0].split('|')[1]+'|','');
            }
        }
        temp+=entry+'\n';});
    return temp.trim();
}
setTimeout(function() {
expo=deleteLooseEnds(expo);
setTimeout(function() {
expo=correctRest(expo);
console.log(expo);
console.log(expo);
}, 3000);
}, 7000);

function correctRest(text){
    var temp="";
    text.split('\n').sort().forEach(function(entry) {
        if(entry.includes('|')){
            entry=entry.replace('|'+entry.split('[[')[1].split(']]')[0].split('|')[1],'|').trim();
        }
        temp+=entry+'\n';});
    return temp.trim();
}