Spaces:
Running
Running
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 | |