const fs = require('fs'); const axios = require('axios'); console.log("Hello!") finalData=[] firstLoad=true itemCache={} retainerIDs=[1572880,16,2359328,131092,9,0,13,1048586,2162700] retainerInventories=[[],[],[],[],[],[],[],[],[]] lastDisplayString="" function getRetainerIndex(id){ switch(id){ case 65576:{ return 0; } case 1769474:{ return 1; } case 196652:{ return 2; } case 655362:{ return 3; } case 65568:{ return 4; } case 65540:{ return 5; } case 327684:{ return 6; } case 3276807:{ return 7; } case 393254:{ 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 (i=0;i{}) 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(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()