Add caching feature and retainer individual tracking
This commit is contained in:
parent
e92c273d26
commit
9f66eeaae8
1
.gitignore
vendored
1
.gitignore
vendored
@ -142,3 +142,4 @@ dist
|
|||||||
.svelte-kit
|
.svelte-kit
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/node
|
# End of https://www.toptal.com/developers/gitignore/api/node
|
||||||
|
cache
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user