Spaces:
Paused
Paused
| const path = require('path') | |
| const fs = require('fs') | |
| const loadImageFromUrl = require('./image-load-url') | |
| const EmojiDbLib = require('emoji-db') | |
| const promiseAllStepN = require('./promise-concurrent') | |
| const emojiDb = new EmojiDbLib({ useDefaultDb: true }) | |
| const emojiJFilesDir = '../assets/emoji/' | |
| const brandFoledIds = { | |
| apple: 325, | |
| google: 313, | |
| twitter: 322, | |
| joypixels: 340, | |
| blob: 56 | |
| } | |
| const emojiJsonByBrand = { | |
| apple: 'emoji-apple-image.json', | |
| google: 'emoji-google-image.json', | |
| twitter: 'emoji-twitter-image.json', | |
| joypixels: 'emoji-joypixels-image.json', | |
| blob: 'emoji-blob-image.json' | |
| } | |
| let emojiImageByBrand = { | |
| apple: [], | |
| google: [], | |
| twitter: [], | |
| joypixels: [], | |
| blob: [] | |
| } | |
| async function downloadEmoji (brand) { | |
| console.log('emoji image load start') | |
| const emojiImage = emojiImageByBrand[brand] | |
| const emojiJsonFile = path.resolve( | |
| __dirname, | |
| emojiJFilesDir + emojiJsonByBrand[brand] | |
| ) | |
| const dbData = emojiDb.dbData | |
| const dbArray = Object.keys(dbData) | |
| const emojiPromiseArray = [] | |
| for (const key of dbArray) { | |
| const emoji = dbData[key] | |
| if (!emoji.qualified && !emojiImage[key]) { | |
| emojiPromiseArray.push(async () => { | |
| let brandFolderName = brand | |
| if (brand === 'blob') brandFolderName = 'google' | |
| const fileUrl = `${process.env.EMOJI_DOMAIN}/thumbs/60/${brandFolderName}/${brandFoledIds[brand]}/${emoji.image.file_name}` | |
| const img = await loadImageFromUrl(fileUrl, (headers) => { | |
| return !headers['content-type'].match(/image/) | |
| }) | |
| const base64 = img.toString('base64') | |
| if (base64) { | |
| return { | |
| key, | |
| base64 | |
| } | |
| } | |
| }) | |
| } | |
| } | |
| const donwloadResult = await promiseAllStepN(200)(emojiPromiseArray) | |
| for (const emojiData of donwloadResult) { | |
| if (emojiData) emojiImage[emojiData.key] = emojiData.base64 | |
| } | |
| if (Object.keys(emojiImage).length > 0) { | |
| const emojiJson = JSON.stringify(emojiImage, null, 2) | |
| fs.writeFile(emojiJsonFile, emojiJson, (err) => { | |
| if (err) return console.log(err) | |
| }) | |
| } | |
| console.log('emoji image load end') | |
| } | |
| for (const brand in emojiJsonByBrand) { | |
| const emojiJsonFile = path.resolve( | |
| __dirname, | |
| emojiJFilesDir + emojiJsonByBrand[brand] | |
| ) | |
| try { | |
| if (fs.existsSync(emojiJsonFile)) emojiImageByBrand[brand] = require(emojiJsonFile) | |
| } catch (error) { | |
| console.log(error) | |
| } | |
| // downloadEmoji(brand) | |
| } | |
| module.exports = emojiImageByBrand | |