const fs = require('fs'); const axios = require('axios'); console.log("Hello!") finalData=[] firstLoad=true itemCache={} retainerIDs=[2462383238,2462413482,2462417228,2462417234,2462417229,2462417233,2462417226,2462417230,2462417231] retainerInventories=[[],[],[],[],[],[],[],[],[]] lastDisplayString="" function getRetainerIndex(id){ switch(id){ case 2462383238:{ return 0; } case 2462413482:{ return 1; } case 2462417228:{ return 2; } case 2462417234:{ return 3; } case 2462417229:{ return 4; } case 2462417233:{ return 5; } case 2462417226:{ return 6; } case 2462417230:{ return 7; } case 2462417231:{ return 8; } default:{ console.log("No retainer found with ID "+id+"!") return -1 } } } function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function getItemData(item){ if (Number.isInteger(item.id)){ if ((item.id in itemCache)){ item.name=itemCache[item.id].Name item.icon=itemCache[item.id].Icon } else { if (fs.existsSync("cache/"+item.id)){ data=JSON.parse(fs.readFileSync("cache/"+item.id)) console.log("Loaded Item "+item.id+" ("+data.Name+") from Cache") itemCache[item.id]=data getItemData(item) } else { await axios.get("https://xivapi.com/Item/"+item.id) .then((data)=>{ itemCache[item.id]=data.data fs.writeFileSync("cache/"+item.id,JSON.stringify(data.data)) console.log("Added Item "+item.id+" ("+data.data.Name+") to Cache") }) .catch((err)=>{ itemCache[item.id]={} console.log(item.id+" is not a valid Item ID!")}) await sleep(250) getItemData(item) } } } } function update(){ changed=false fs.readFile("C:\\Users\\sigon\\Documents\\memory", async(err,data)=>{ var fileContents = data.toString().split("\n"); if (fileContents.length>=387){ for (var i=0;i1000000){ itemID-=1000000 } var itemObj={id:itemID} await getItemData(itemObj) var fileData=fs.readFileSync("goalamt.txt") if (fileData!=0){ tempString=itemObj.name+": "+tempLineAmt+"/"+fileData+" ("+Math.min(100,Math.floor(tempLineAmt/Number(fileData)*100))+"%)" if (lastDisplayString!=tempString){ fs.writeFile("amt",tempString,()=>{}) lastDisplayString=tempString } } else { if (lastDisplayString!=" "){ fs.writeFile("amt"," ",()=>{}) lastDisplayString=" " } } } else { if (lastDisplayString!=" "){ fs.writeFile("amt"," ",()=>{}) lastDisplayString=" " } } } itemID=item[1] itemAmt=item[0] hq=(item[2]!==undefined)?item[2].replace("\r",""):"" itemHQ=hq==="0"?false:true newItem={"id":Number(itemID),"amt":Number(itemAmt),"hq":itemHQ} //console.log(itemID+" x"+itemAmt+" "+(itemHQ)) if (i<=384){ if(firstLoad){ await getItemData(newItem) finalData=[...finalData,newItem] }else if (finalData[i]!==undefined&&(Number.isInteger(finalData[i].id)^Number.isInteger(itemID))){ if (finalData[i].id!=Number(itemID)||finalData[i].amt!==Number(itemAmt)||finalData[i].hq!==Boolean(itemHQ)){ await getItemData(newItem) console.log(JSON.stringify(finalData[i])+" !== "+JSON.stringify(newItem)) finalData[i]=newItem changed=true; } } } } if (changed){ console.log("Changes occurred...") finalArr=[finalData.slice(0,210)] for (inventory of retainerInventories){ finalArr=[...finalArr,[...inventory]] } axios.post("http://projectdivar.com/inventoryData",finalArr) .catch((err)=>{}) } firstLoad=false } setTimeout(update,1000) }) } update()