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