您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
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)) ; } ); */ })();