try to take over the world!
当前为
// ==UserScript==
// @name IGDB List Extra Info
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://www.igdb.com/users/*/lists/*
// @grant none
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// ==/UserScript==
//$('.validation_ticker').remove();
(function() {
'use strict';
// Your code here...
//api urls
var apikey = 'a219bebccdba1921822242709439c6e4';
var apiurl = 'https://api-2445582011268.apicast.io';
var req = '/games/?search=';
var reqid = '/games/1942?fields=*';
var corsproxy = 'https://cors-anywhere.herokuapp.com/';
var pageDivs = document.getElementsByClassName("media-body");
var gametextarray = [];
var genresnodearray = [];
var keywordsnodearray = [];
var ratingnodearray = [];
var promises = [];
var sequence = Promise.resolve();
//set header for apikey and json
var myheaders = new Headers();
myheaders.append('user-key', apikey);
//myheaders.append('Accept', 'application/json');
//for every element "media-body" do
for(var i = 0; i < pageDivs.length;i++)
//for (var i = 0; i < 1; i++)
{
//add a textnode
// modify with .nodeValue=
//set some elements
// var filler = document.createTextNode(' | ');
var genrestext = document.createTextNode('Genres: ');
var genresspan = document.createElement('span');
genresspan.style.fontSize= 'medium';
genresspan.style.textDecoration = 'underline';
genresspan.appendChild(genrestext);
pageDivs[i].appendChild(genresspan);
var genresnode = document.createTextNode('loading..');
pageDivs[i].appendChild(genresnode);
genresnodearray.push(genresnode);
pageDivs[i].appendChild(document.createTextNode(' | '));
var keywordstext = document.createTextNode('Keywords: ');
var kwspan = document.createElement('span');
kwspan.style.fontSize= 'medium';
kwspan.style.textDecoration = "underline";
kwspan.appendChild(keywordstext);
pageDivs[i].appendChild(kwspan);
var keywordsnode = document.createTextNode('loading..');
pageDivs[i].appendChild(keywordsnode);
keywordsnodearray.push(keywordsnode);
pageDivs[i].appendChild(document.createTextNode(' | '));
var ratingtext = document.createTextNode('Rating: ');
var rtspan = document.createElement('span');
rtspan.style.fontSize= 'medium';
rtspan.style.textDecoration = "underline";
rtspan.appendChild(ratingtext);
pageDivs[i].appendChild(rtspan);
var ratingnode = document.createTextNode('loading..');
pageDivs[i].appendChild(ratingnode);
ratingnodearray.push(ratingnode);
//get the game name
var gametext = 'test';
var span1 = pageDivs[i].getElementsByTagName('span');
gametext = span1[0].innerHTML;
gametextarray.push(corsproxy + apiurl + req + gametext);
console.log(gametext);
// var ref = pageDivs[i].getElementsByClassName("link-dark");
// text = document.createTextNode(ref[0].href);
}
// console.log(gametextarray);
// console.log(content2);
// console.log(content2);
// console.log(response);
// var gameid = response.text();
// var xhmr = httpGetAsync(req,function(response){
// console.log(xhmr);
// console.log(gameid);
//execute multiple fetch promises
//first fetch the game-id for a given name
Promise.all(
gametextarray.map(
(url, index) => fetch(url, {
headers: myheaders
})
.then(res => res.json())
.then(data => {
var gameidnum = data[0].id;
var gameid = gameidnum.toString();
//generate new url with id to query for the data
var newurl = (corsproxy + apiurl + '/games/' + gameid + '?fields=*');
return fetch(newurl, {
headers: myheaders
});
})
.then(res2 => res2.json())
.then(data2 => {
var rating = data2[0].rating;
ratingnodearray[index].nodeValue = Math.round(rating);
var genresid = data2[0].genres;
var keywordsid = data2[0].keywords;
//concat all genrenames. fetch for all genre-ids at once
var genresurl = corsproxy + apiurl + '/genres/' + data2[0].genres.toString();
fetch(genresurl, {
headers: myheaders
})
.then(resgenre => resgenre.json())
.then(datagenre => {
var newgenres = '';
datagenre.forEach((tgenre, genreindex) => {
newgenres = newgenres.concat(tgenre.name);
if (genreindex < datagenre.length - 1) {
newgenres = newgenres.concat('; ');
}
});
genresnodearray[index].nodeValue = newgenres;
});
//concat all keywords. fetch for all keyword-ids at once
var keywordsurl = corsproxy + apiurl + '/keywords/' + data2[0].keywords.toString();
fetch(keywordsurl, {
headers: myheaders
})
.then(reskey => reskey.json())
.then(datakey => {
var newkeys = '';
datakey.forEach((tkey, keyindex) => {
newkeys = newkeys.concat(tkey.name);
if (keyindex < datakey.length - 1) {
newkeys = newkeys.concat('; ');
}
});
keywordsnodearray[index].nodeValue = newkeys;
});
})
)
);
/*
promises = gametextarray.map(function(x){
return fetch(x,{headers:myheaders});
});
promises.forEach(curpromise => {
sequence = sequence.then(
() => curpromise
).then(res => res.json())
.then(data => console.log(data))
;
}
);
*/
})();