From c120d5e0f16ac0eb3df83f52139b01926bb3d93d Mon Sep 17 00:00:00 2001 From: biglyderv Date: Wed, 29 Jan 2025 19:06:26 -0500 Subject: [PATCH] test on darflen data --- package.json | 3 +++ rank.js | 66 ++++++++++++++++++++++++++++++++++------------------ 2 files changed, 47 insertions(+), 22 deletions(-) create mode 100644 package.json diff --git a/package.json b/package.json new file mode 100644 index 0000000..96ae6e5 --- /dev/null +++ b/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/rank.js b/rank.js index 4f3546a..fae0df8 100644 --- a/rank.js +++ b/rank.js @@ -1,22 +1,24 @@ +import { writeFile } from "fs/promises"; + // derived from https://git.dervland.net/biglyderv/new-bigly-chat/src/branch/master/docs/stats.php function rankCalc(result, iterations = 10) { let matrixe = {} let fng = {}; - let fnc ={}; + let fnc = {}; let frs = {}; let msum_old = 0; let pr = {}; - + for (let unn in result) { matrixe[unn] = {}; - matrixe[unn][unn] =1; + matrixe[unn][unn] = 1; frs[unn] = result[unn].followers; fng[unn] = result[unn].following; fnc[unn] = fng[unn].length; pr[unn] = 1; } - for (let unn in result ) { + for (let unn in result) { let fnu = frs[unn]; for (let follow of fnu) { if (follow == unn) continue; @@ -31,7 +33,7 @@ function rankCalc(result, iterations = 10) { } } - + for (let i = 0; i < iterations; i++) { let prold = structuredClone(pr); let matrixf = structuredClone(matrixe); @@ -43,7 +45,7 @@ function rankCalc(result, iterations = 10) { for (let unb in result) { prb = prold[unb]; - if (prb < 1 / 1e6 || Object.keys(fng[unb]).length == 0) { + if (prb < 1 / 1e4 || Object.keys(fng[unb]).length == 0) { //msum += matrixe[una][unb]; continue; } @@ -56,8 +58,6 @@ function rankCalc(result, iterations = 10) { msum += matrixe[una][unb]; pr[una] += prb * matrixe[una][unb]; - - console.log(msum_old) } } @@ -70,31 +70,53 @@ function rankCalc(result, iterations = 10) { } } - new_sum = Object.values(pr).reduce((a,b) => a+b, 0) + new_sum = Object.values(pr).reduce((a, b) => a + b, 0) for (let unn in result) { h = pr[unn]; pr[unn] /= new_sum; } + console.log(`Iteration ${i} calculated`); } return pr; } -console.log(rankCalc({ - 'david': { - 'following': [], - 'followers': ['davis','david','bob'] - }, +(async function () { + let users = []; - 'bob': { - 'following': ['davis','david','bob'], - 'followers': ['davis','david','bob'] - }, + let i = 0; - 'davis': { - 'following': ['davis','david','bob'], - 'followers': ['davis','david','bob'] + while (true) { + let h1 = await fetch(`https://api.darflen.com/users/paradock/followers/${i}`) + let j1 = await h1.json(); + + let users2 = j1.followers.map(x => x.profile.username); + + users = [...users, ...users2]; + + if (users2.length == 0) break; + + i++; } -},100)); \ No newline at end of file + let data = {}; + for (let u of users) { + let h1 = await fetch(`https://api.darflen.com/users/${u}/followers`) + let j1 = await h1.json(); + + let h2 = await fetch(`https://api.darflen.com/users/${u}/following`) + let j2 = await h2.json(); + + data[u] = { + followers: j1.followers.map(x => x.profile.username), + following: j2.following.map(x => x.profile.username) + } + console.log(`User ${u} calculated`); + } + let dat = Object.entries(rankCalc(data, 100)); + dat = dat.sort((a, b) => a[1] - b[1]) + + let srz = JSON.stringify(dat); + writeFile(`./users.json`,'utf8',srz); +})()