steempunks

in #steempunks2 years ago (edited)

image.png

get json data

let url = 'https://www.steempunks.xyz/graphql';
let getOp = (id)=> {return {
    "operationName": null,
    "query": `{\n  getMyNFTDetail(SteempunksNFTInput: {id: ${id}}) {\n    success\n    steempunksNFT {\n      id\n      score\n      ranking\n      rarity\n      owner_account\n    }\n  }\n}\n`,
    "variables":{}
};}
let call = (id) => fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(getOp(id)),
}).then(res=>res.json()).then(res=>res.data.getMyNFTDetail?res.data.getMyNFTDetail.steempunksNFT:{});


let start = 0;
let end = 0;
let results = [];
let buffer = [];

results = [];
buffer = [];
(async ()=>{
    for(let k=0;k<50;k++){
        start = k*200;
        end = Math.min(200+k*200, 9999);
        for(let i=start;i<=end;i++){
            buffer.push(call(i));
        }
        await Promise.all(buffer).then(res=>results.push(...res));
        buffer = [];
        await new Promise(r=>setTimeout(r, 1000));
        console.log('k', k);
    }
})();
console.log(results);

parsing data

const fs = require("fs");
let ori = require("./out.json");

let lpad = (s, len = 20, char = " ") => s.toString().padStart(len, char);
let rpad = (s, len = 20, char = " ") => s.toString().padEnd(len, char);
let print = (...s) => console.log(lpad(s[0]), ...s.slice(1));
let line = (len, char = "=") => console.log(rpad("", len, char));

line(40);
print("PACKS INFO");
line(40);

print("TOTAL PACKS : ", ori.length / 10);
let notyet = ori.filter((x) => x.owner_account == null);
print("SELL PACKS : ", (ori.length - notyet.length) / 10);
print("REMAIN PACKS : ", notyet.length / 10);

line(40);
print("NFTs MINTING INFO");
line(40);

print("NFTs : ", ori.length);

let common = ori.filter((x) => x.rarity.indexOf("C") == 0);
let rare = ori.filter((x) => x.rarity.indexOf("R") == 0);
let epic = ori.filter((x) => x.rarity.indexOf("E") == 0);
let legendary = ori.filter((x) => x.rarity.indexOf("L") == 0);

let c1 = ori.filter(
  (x) => x.rarity.indexOf("C") == 0 && x.owner_account != null
);
print(
  "COMMON NFTs : ",
  common.length - c1.length,
  "/",
  c1.length,
  "/",
  common.length
);

let r1 = ori.filter(
  (x) => x.rarity.indexOf("R") == 0 && x.owner_account != null
);
print(
  "RARE NFTs : ",
  rare.length - r1.length,
  "/",
  r1.length,
  "/",
  rare.length
);

let e1 = ori.filter(
  (x) => x.rarity.indexOf("E") == 0 && x.owner_account != null
);
print(
  "EPIC NFTs : ",
  epic.length - e1.length,
  "/",
  e1.length,
  "/",
  epic.length
);

let l1 = ori.filter(
  (x) => x.rarity.indexOf("L") == 0 && x.owner_account != null
);
print(
  "LEGENDARY NFTs : ",
  legendary.length - l1.length,
  "/",
  l1.length,
  "/",
  legendary.length
);

line(40);
print("BUY PACKS TOP 10");
line(40);

// let EXCEPT_IDS = ["null", "happyberrysboy", "donekim", "realmankwon"];
let EXCEPT_IDS = ["null"];
let buy_buffer = {};
for (let r of ori) {
  buy_buffer[r.owner_account] = buy_buffer[r.owner_account]
    ? buy_buffer[r.owner_account] + 1
    : 1;
}
let buy_buffer2 = [];
for (let kv of Object.entries(buy_buffer)) {
  buy_buffer2.push({ id: kv[0], nfts: kv[1] });
}
buy_buffer2 = buy_buffer2.filter((x) => !EXCEPT_IDS.includes(x.id));
buy_buffer2.sort((a, b) => b.nfts - a.nfts);
for (let i = 0; i < 10; i++) {
  console.log(
    lpad(buy_buffer2[i].id),
    " : ",
    buy_buffer2[i].nfts / 10,
    "packs"
  );
}

line(40);
print("AVG PACKS BUY");
line(40);

let avg =
  buy_buffer2.reduce((prev, curr) => {
    return prev + curr.nfts;
  }, 0) /
  buy_buffer2.length /
  10;
print("JOINED STEEMIANs", buy_buffer2.length);
print("AVG BUY PACKs", avg);
// console.log(buy_buffer2);

line(40);
print("Has Legendary Account");
line(40);

let legen_buffer = {};
for (let r of l1) {
  legen_buffer[r.owner_account] = legen_buffer[r.owner_account]
    ? legen_buffer[r.owner_account] + 1
    : 1;
}
let legen_buffer2 = [];
for (let kv of Object.entries(legen_buffer)) {
  legen_buffer2.push({ id: kv[0], nfts: kv[1] });
}
legen_buffer2 = legen_buffer2.filter((x) => !EXCEPT_IDS.includes(x.id));
legen_buffer2.sort((a, b) => b.nfts - a.nfts);
for (let i = 0; i < legen_buffer2.length; i++) {
  console.log(lpad(legen_buffer2[i].id), " : ", legen_buffer2[i].nfts, "nfts");
}

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.032
BTC 63754.85
ETH 3055.95
USDT 1.00
SBD 3.85