|
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 |
|
|