File size: 2,516 Bytes
0dcf096 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
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
|