joinlemmy-site/update_donations.mjs

49 lines
1.5 KiB
JavaScript
Raw Normal View History

New tailwind-based joinlemmy-site (#243) * Starting on new tailwind based joinlemmy-site. * Formatting fix. * Adding follow communities block. * Adding a few more blocks. * Finishing up blocks. * Adding a few more pages. * Adding apps page. * Almost done with donation page. * Adding most of instances page. * Trying to fix CI 1. * Adding navbar and footer. * Adding bottom spacer. * Finishing up more info modal. * Adding icons to main page. * Eruda only in development mode. * Finishing up main page, starting to work on recs. * Adding main images. * Adding images 2. * Starting to add filters. * Finishing up helper modal. * Adding topic icons. * Adding more instances. * Fixing recommended. * Forgot to add instance picker. * Adding world background image. * Adding alexandrite. * Adding funding goal block. * Fix dockerfile. * Upgrading deps. * Fixing package json. * Updating coders, sponsors. * Fixing mobile margins. * Fixing navbar auto-close when clicked. * Removing todo. * Removing some useless instance helper links. * Fixing news titling. * Addressing PR comments. * Updating instance stats. * Fixing class -> className * Fixing sm:max directives. * Make instance images links to their sites. * Use ubuntu font. * Addressing PR comments. * Adding a few more android apps. * Adding thunder and combustible apps. * Fixing z index. * Add a warning alert for closed source apps. * Adding MLMYM app. Fixes #213 * Fixing i18n key. * Adding QR codes for cryptos. Fixes #219 * Addressing PR comments. * Fixing news preview. * Adding registration mode to details modal. Fixes #153 * Filter out bot instances. * Using glide carousel. * Adding glide min css. * Adding donation platform fetching. Fixes #248 * Prettying glide css. * Change dev goal to 3 * Adding sign up button. * Minifying docker image. * Removing sortpack.
2023-10-31 13:31:03 +00:00
import fs from "fs";
import fetch from "node-fetch";
const donationStatsFile = "src/shared/donation_stats.ts";
const USDtoEURUrl =
"https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/latest/currencies/usd/eur.json";
const liberaPayUrl = "https://liberapay.com/Lemmy/public.json";
const openCollectiveUrl = "https://opencollective.com/lemmy.json";
const patreonUrl = "https://www.patreon.com/api/campaigns/2692831";
const usdToEurRes = await fetch(USDtoEURUrl);
const usdToEur = (await usdToEurRes.json()).eur;
// In weekly USD
const liberaPayRes = await fetch(liberaPayUrl);
const liberaPayData = await liberaPayRes.json();
// In yearly USD, decimal
const openCollectiveRes = await fetch(openCollectiveUrl);
const openCollectiveData = await openCollectiveRes.json();
// In monthly USD, decimal
const patreonRes = await fetch(patreonUrl);
const patreonData = await patreonRes.json();
const donationData = [
{
name_: "liberapay",
patrons: liberaPayData.npatrons,
amount: Number(liberaPayData.receiving.amount) * 4.348214 * usdToEur,
},
{
name_: "opencollective",
patrons: openCollectiveData.backersCount,
amount: (Number(openCollectiveData.yearlyIncome) / 100 / 12) * usdToEur,
},
{
name_: "patreon",
patrons: patreonData.data.attributes.patron_count,
amount: (Number(patreonData.data.attributes.pledge_sum) / 100) * usdToEur,
},
];
let data = `export const donation_stats = \n `;
data += JSON.stringify(donationData, null, 2) + ";";
fs.writeFileSync(donationStatsFile, data);