Skip to content

Instantly share code, notes, and snippets.

@lilianalillyy
Created April 22, 2023 12:48
Show Gist options
  • Save lilianalillyy/1d450426eb2e642cd8584e81bdff5ef9 to your computer and use it in GitHub Desktop.
Save lilianalillyy/1d450426eb2e642cd8584e81bdff5ef9 to your computer and use it in GitHub Desktop.
Simply Plural - Move to avatar url
const axios = require("axios");
const { createWriteStream, existsSync, mkdirSync } = require("fs");
const path = require("path");
const client = axios.create({
baseURL: 'https://api.apparyllis.com:8443',
headers: {
Accept: 'application/json',
Authorization: '<TOKEN HERE>',
},
});
// path to the folder with avatars
const avatarsDir = path.join(__dirname, "packages", "frontend", "public", "_lilians");
if (!existsSync(avatarsDir)) {
mkdirSync(avatarsDir);
}
const run = async () => {
const me = await client.request({
method: 'GET',
url: '/v1/me',
});
const { data } = await client.request({
method: 'GET',
url: `/v1/members/${me.data.id}`,
});
data.push({
content: {
...me.data.content,
name: me.data.content.username,
},
});
for (const entity of data) {
const url = entity.content.avatarUuid
? `https://spaces.apparyllis.com/avatars/${entity.content.uid}/${entity.content.avatarUuid}`
: entity.content.avatarUrl ?? null;
if (!url) {
console.warn(`no avatar url for ${entity.content.name}`);
}
try {
const { data } = await client.request({
method: 'GET',
url,
responseType: 'stream',
});
const name = entity.content.name.replace(/ /g, "_").replace(/\//g, "-");
const filePath = path.join(avatarsDir, `${name}.png`);
console.log(`saving avatar of ${entity.content.name} to ${filePath}`);
const stream = createWriteStream(filePath);
data.pipe(stream);
// Public URL
const avatarUrl = `https://plurali.icu/_lilians/${name}.png`;
await client.request({
method: "PATCH",
url: `/v1/${entity.content.username ? 'user' : 'member'}/${entity.id}`,
data: { avatarUuid: "", avatarUrl }
});
} catch (e) {
console.warn(`failed to process avatar for ${entity.content.name} // ${e.message} // ${url}`);
}
}
}
run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment