|
|
@ -6,34 +6,118 @@ console.log("Hello!") |
|
|
|
finalData=[] |
|
|
|
finalData=[] |
|
|
|
firstLoad=true |
|
|
|
firstLoad=true |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
itemCache={} |
|
|
|
|
|
|
|
retainerIDs=[1572880,16,2359328,131092,9,0,13,1048586,2162700] |
|
|
|
|
|
|
|
retainerInventories=[[],[],[],[],[],[],[],[],[]] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getRetainerIndex(id){ |
|
|
|
|
|
|
|
switch(id){ |
|
|
|
|
|
|
|
case 1572880:{ |
|
|
|
|
|
|
|
return 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
case 16:{ |
|
|
|
|
|
|
|
return 1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
case 2359328:{ |
|
|
|
|
|
|
|
return 2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
case 131092:{ |
|
|
|
|
|
|
|
return 3; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
case 9:{ |
|
|
|
|
|
|
|
return 4; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
case 0:{ |
|
|
|
|
|
|
|
return 5; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
case 13:{ |
|
|
|
|
|
|
|
return 6; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
case 1048586:{ |
|
|
|
|
|
|
|
return 7; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
case 2162700:{ |
|
|
|
|
|
|
|
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(){ |
|
|
|
function update(){ |
|
|
|
changed=false |
|
|
|
changed=false |
|
|
|
fs.readFile("C:\\Users\\sigon\\Documents\\memory", |
|
|
|
fs.readFile("C:\\Users\\sigon\\Documents\\memory", |
|
|
|
(err,data)=>{ |
|
|
|
async(err,data)=>{ |
|
|
|
var fileContents = data.toString().split("\n"); |
|
|
|
var fileContents = data.toString().split("\n"); |
|
|
|
if (fileContents.length>=387){ |
|
|
|
if (fileContents.length>=387){ |
|
|
|
for (i=0;i<fileContents.length;i++){ |
|
|
|
for (i=0;i<fileContents.length;i++){ |
|
|
|
line=fileContents[i] |
|
|
|
line=fileContents[i] |
|
|
|
item=line.split(" ") |
|
|
|
item=line.split(" ") |
|
|
|
|
|
|
|
if (i==385){ |
|
|
|
|
|
|
|
ind=getRetainerIndex(Number(item[0])); |
|
|
|
|
|
|
|
//140 + 70
|
|
|
|
|
|
|
|
retainerInventories[ind]=finalData.slice(210,385) |
|
|
|
|
|
|
|
} |
|
|
|
itemID=item[1] |
|
|
|
itemID=item[1] |
|
|
|
itemAmt=item[0] |
|
|
|
itemAmt=item[0] |
|
|
|
hq=(item[2]!==undefined)?item[2].replace("\r",""):"" |
|
|
|
hq=(item[2]!==undefined)?item[2].replace("\r",""):"" |
|
|
|
itemHQ=hq==="0"?false:true |
|
|
|
itemHQ=hq==="0"?false:true |
|
|
|
|
|
|
|
newItem={"id":Number(itemID),"amt":Number(itemAmt),"hq":itemHQ} |
|
|
|
//console.log(itemID+" x"+itemAmt+" "+(itemHQ))
|
|
|
|
//console.log(itemID+" x"+itemAmt+" "+(itemHQ))
|
|
|
|
if(firstLoad){ |
|
|
|
if(firstLoad){ |
|
|
|
finalData=[...finalData,{"id":Number(itemID),"amt":Number(itemAmt),"hq":itemHQ}] |
|
|
|
await getItemData(newItem) |
|
|
|
|
|
|
|
finalData=[...finalData,newItem] |
|
|
|
}else |
|
|
|
}else |
|
|
|
if (finalData[i]!==undefined&&(Number.isInteger(finalData[i].id)^Number.isInteger(itemID))){ |
|
|
|
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)){ |
|
|
|
if (finalData[i].id!=Number(itemID)||finalData[i].amt!==Number(itemAmt)||finalData[i].hq!==Boolean(itemHQ)){ |
|
|
|
console.log(JSON.stringify(finalData[i])+" !== "+JSON.stringify({"id":Number(itemID),"amt":Number(itemAmt),"hq":Boolean(itemHQ)})) |
|
|
|
await getItemData(newItem) |
|
|
|
finalData[i]={"id":Number(itemID),"amt":Number(itemAmt),"hq":Boolean(itemHQ)} |
|
|
|
console.log(JSON.stringify(finalData[i])+" !== "+JSON.stringify(newItem)) |
|
|
|
|
|
|
|
finalData[i]=newItem |
|
|
|
changed=true; |
|
|
|
changed=true; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (changed){ |
|
|
|
if (changed){ |
|
|
|
console.log("Changes occurred...") |
|
|
|
console.log("Changes occurred...") |
|
|
|
axios.post("http://projectdivar.com/inventoryData",finalData) |
|
|
|
finalArr=[finalData.slice(0,210)] |
|
|
|
|
|
|
|
for (inventory of retainerInventories){ |
|
|
|
|
|
|
|
finalArr=[...finalArr,[...inventory]] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
axios.post("http://projectdivar.com/inventoryData",finalArr) |
|
|
|
} |
|
|
|
} |
|
|
|
firstLoad=false |
|
|
|
firstLoad=false |
|
|
|
} |
|
|
|
} |
|
|
|