Created
April 22, 2023 12:48
-
-
Save lilianalillyy/1d450426eb2e642cd8584e81bdff5ef9 to your computer and use it in GitHub Desktop.
Simply Plural - Move to avatar url
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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