| 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) |
| } |
| |
| } |
|
|
| module.exports = emojiImageByBrand |
|
|