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