main
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3import re
4
5# From: https://github.com/Rongronggg9/RSS-to-Telegram-Bot/blob/84ce41fd31819d83e146507d50a95e28a5b58afe/src/parsing/weibo_emojify_map.py
6COMMON = {
7 "[ๅพฎ็ฌ]": "๐",
8 "[ๅฏ็ฑ]": "๐",
9 "[ๅคชๅผๅฟ]": "๐",
10 "[้ผๆ]": "๐",
11 "[ๅปๅป]": "๐",
12 "[ๅๅ]": "๐",
13 "[็ฌcry]": "๐",
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 "[good]": "๐",
64 "[ๅผฑ]": "๐",
65 "[NO]": "โ",
66 "[่ถ]": "โ",
67 "[ๆณๅคด]": "โ",
68 "[ok]": "๐",
69 "[ๅ ๆฒน]": "๐ช",
70 "[haha]": "๐ค",
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 "[ๅๆ]": "๐",
108 # customization
109 "[ๅคง็ฌ]": "๐",
110}
111
112XHS = {
113 "[้ถR]": "0๏ธโฃ",
114 "[ไธR]": "1๏ธโฃ",
115 "[ไบR]": "2๏ธโฃ",
116 "[ไธR]": "3๏ธโฃ",
117 "[ๅR]": "4๏ธโฃ",
118 "[ไบR]": "5๏ธโฃ",
119 "[ๅ
ญR]": "6๏ธโฃ",
120 "[ไธR]": "7๏ธโฃ",
121 "[ๅ
ซR]": "8๏ธโฃ",
122 "[ไนR]": "9๏ธโฃ",
123 "[่ๅ
R]": "๐",
124 "[ๆปกๆR]": "๐",
125 "[็ๆฐR]": "๐ก",
126 "[ๅคฑๆR]": "๐",
127 "[ๆ็R]": "๐",
128 "[่่ๅR]": "๐",
129 "[็บข่ฒๅฟๅฝขR]": "โค",
130 "[็็ธR]": "๐ฅ",
131 "[็ธๅผนR]": "๐ฃ",
132}
133
134DOUYIN = {
135 "[่ฆๆถฉ]": "๐ญ",
136 "[doge]": "๐ถ",
137 "[ๆ้ผป]": "๐",
138 "[ๆณช]": "๐ญ",
139 "[็ผๅซ็ญๆณช]": "๐ฅบ",
140 "[ๅฒ็]": "๐",
141 "[็ซ็ฐ]": "๐น",
142 "[ไธ่ตทๅ ๆฒน]": "๐ช",
143 "[ๆฏๅฟ]": "๐",
144 "[็]": "๐ถ",
145 "[ๅฎๆบ]": "๐ง",
146 "[ๆ่ธ]": "๐คฆ",
147 "[ๆณชๅฅ]": "๐ญ",
148 "[ๅฐฌ็ฌ]": "๐
",
149 "[ๆฑไธๆฑ]": "๐ค",
150 "[ๆcall]": "๐",
151 "[ๅ]": "๐ฅฐ",
152}
153BILIBILI = {"[็ฌๅญ]": "๐คฆ"}
154
155CURRENCY = {
156 "AED": "๐ฆ๐ช",
157 "AFN": "๐ฆ๐ซ",
158 "ALL": "๐ฆ๐ฑ",
159 "AMD": "๐ฆ๐ฒ",
160 "ANG": "๐ณ๐ฑ",
161 "AOA": "๐ฆ๐ด",
162 "ARS": "๐ฆ๐ท",
163 "AUD": "๐ฆ๐บ",
164 "AWG": "๐ฆ๐ผ",
165 "AZN": "๐ฆ๐ฟ",
166 "BAM": "๐ง๐ฆ",
167 "BBD": "๐ง๐ง",
168 "BDT": "๐ง๐ฉ",
169 "BGN": "๐ง๐ฌ",
170 "BHD": "๐ง๐ญ",
171 "BIF": "๐ง๐ฎ",
172 "BMD": "๐ง๐ฒ",
173 "BND": "๐ง๐ณ",
174 "BOB": "๐ง๐ด",
175 "BRL": "๐ง๐ท",
176 "BSD": "๐ง๐ธ",
177 "BTN": "๐ง๐น",
178 "BWP": "๐ง๐ผ",
179 "BYN": "๐ง๐พ",
180 "BYR": "๐ง๐พ",
181 "BZD": "๐ง๐ฟ",
182 "CAD": "๐จ๐ฆ",
183 "CDF": "๐จ๐ฉ",
184 "CHF": "๐จ๐ญ",
185 "CLF": "๐จ๐ฑ",
186 "CLP": "๐จ๐ฑ",
187 "CNY": "๐จ๐ณ",
188 "COP": "๐จ๐ด",
189 "CRC": "๐จ๐ท",
190 "CUC": "๐จ๐บ",
191 "CUP": "๐จ๐บ",
192 "CVE": "๐จ๐ป",
193 "CZK": "๐จ๐ฟ",
194 "DJF": "๐ฉ๐ฏ",
195 "DKK": "๐ฉ๐ฐ",
196 "DOP": "๐ฉ๐ด",
197 "DZD": "๐ฉ๐ฟ",
198 "EGP": "๐ช๐ฌ",
199 "ERN": "๐ช๐ท",
200 "ETB": "๐ช๐น",
201 "EUR": "๐ช๐บ",
202 "FJD": "๐ซ๐ฏ",
203 "FKP": "๐ซ๐ฐ",
204 "GBP": "๐ฌ๐ง",
205 "GEL": "๐ฌ๐ช",
206 "GHS": "๐ฌ๐ญ",
207 "GIP": "๐ฌ๐ฎ",
208 "GMD": "๐ฌ๐ฒ",
209 "GNF": "๐ฌ๐ณ",
210 "GTQ": "๐ฌ๐น",
211 "GYD": "๐ฌ๐พ",
212 "HKD": "๐ญ๐ฐ",
213 "HNL": "๐ญ๐ณ",
214 "HRK": "๐ญ๐ท",
215 "HTG": "๐ญ๐น",
216 "HUF": "๐ญ๐บ",
217 "IDR": "๐ฎ๐ฉ",
218 "ILS": "๐ฎ๐ฑ",
219 "INR": "๐ฎ๐ณ",
220 "IQD": "๐ฎ๐ถ",
221 "IRR": "๐ฎ๐ท",
222 "ISK": "๐ฎ๐ธ",
223 "JMD": "๐ฏ๐ฒ",
224 "JOD": "๐ฏ๐ด",
225 "JPY": "๐ฏ๐ต",
226 "KES": "๐ฐ๐ช",
227 "KGS": "๐ฐ๐ฌ",
228 "KHR": "๐ฐ๐ญ",
229 "KMF": "๐ฐ๐ฒ",
230 "KPW": "๐ฐ๐ต",
231 "KRW": "๐ฐ๐ท",
232 "KWD": "๐ฐ๐ผ",
233 "KYD": "๐ฐ๐พ",
234 "KZT": "๐ฐ๐ฟ",
235 "LAK": "๐ฑ๐ฆ",
236 "LBP": "๐ฑ๐ง",
237 "LKR": "๐ฑ๐ฐ",
238 "LRD": "๐ฑ๐ท",
239 "LSL": "๐ฑ๐ธ",
240 "LTL": "๐ฑ๐น",
241 "LVL": "๐ฑ๐ป",
242 "LYD": "๐ฑ๐พ",
243 "MAD": "๐ฒ๐ฆ",
244 "MDL": "๐ฒ๐ฉ",
245 "MGA": "๐ฒ๐ฌ",
246 "MKD": "๐ฒ๐ฐ",
247 "MMK": "๐ฒ๐ฒ",
248 "MNT": "๐ฒ๐ณ",
249 "MOP": "๐ฒ๐ด",
250 "MRO": "๐ฒ๐ท",
251 "MUR": "๐ฒ๐บ",
252 "MVR": "๐ฒ๐ป",
253 "MWK": "๐ฒ๐ผ",
254 "MXN": "๐ฒ๐ฝ",
255 "MYR": "๐ฒ๐พ",
256 "MZN": "๐ฒ๐ฟ",
257 "NAD": "๐ณ๐ฆ",
258 "NGN": "๐ณ๐ฌ",
259 "NIO": "๐ณ๐ฎ",
260 "NOK": "๐ณ๐ด",
261 "NPR": "๐ณ๐ต",
262 "NZD": "๐ณ๐ฟ",
263 "OMR": "๐ด๐ฒ",
264 "PAB": "๐ต๐ฆ",
265 "PEN": "๐ต๐ช",
266 "PGK": "๐ต๐ฌ",
267 "PHP": "๐ต๐ญ",
268 "PKR": "๐ต๐ฐ",
269 "PLN": "๐ต๐ฑ",
270 "PYG": "๐ต๐พ",
271 "QAR": "๐ถ๐ฆ",
272 "RON": "๐ท๐ด",
273 "RSD": "๐ท๐ธ",
274 "RUB": "๐ท๐บ",
275 "RWF": "๐ท๐ผ",
276 "SAR": "๐ธ๐ฆ",
277 "SBD": "๐ธ๐ง",
278 "SCR": "๐ธ๐จ",
279 "SDG": "๐ธ๐ฉ",
280 "SEK": "๐ธ๐ช",
281 "SGD": "๐ธ๐ฌ",
282 "SHP": "๐ธ๐ญ",
283 "SLE": "๐ธ๐ฑ",
284 "SLL": "๐ธ๐ฑ",
285 "SOS": "๐ธ๐ด",
286 "SRD": "๐ธ๐ท",
287 "STD": "๐ธ๐น",
288 "SYP": "๐ธ๐พ",
289 "SZL": "๐ธ๐ฟ",
290 "THB": "๐น๐ญ",
291 "TJS": "๐น๐ฏ",
292 "TMT": "๐น๐ฒ",
293 "TND": "๐น๐ณ",
294 "TOP": "๐น๐ด",
295 "TRY": "๐น๐ท",
296 "TTD": "๐น๐น",
297 "TWD": "๐น๐ผ",
298 "TZS": "๐น๐ฟ",
299 "UAH": "๐บ๐ฆ",
300 "UGX": "๐บ๐ฌ",
301 "USD": "๐บ๐ธ",
302 "UYU": "๐บ๐พ",
303 "UZS": "๐บ๐ฟ",
304 "VEF": "๐ป๐ช",
305 "VES": "๐ป๐ช",
306 "VND": "๐ป๐ณ",
307 "VUV": "๐ป๐บ",
308 "WST": "๐ผ๐ธ",
309 "XAF": "๐จ๐ฒ",
310 "XCD": "๐ฆ๐ฎ",
311 "XOF": "๐ง๐ฏ",
312 "XPF": "๐ต๐ซ",
313 "YER": "๐พ๐ช",
314 "ZAR": "๐ฟ๐ฆ",
315 "ZMW": "๐ฟ๐ฒ",
316 "ZWL": "๐ฟ๐ผ",
317}
318
319CTYPE_EMOJI = {
320 "BOT": "๐ค",
321 "GROUP": "๐ฅ",
322 "SUPERGROUP": "๐ฅ",
323 "CHANNEL": "๐ข",
324 "PRIVATE": "๐ค",
325}
326MTYPE_EMOJI = {
327 "text": "๐ค",
328 "audio": "๐ง",
329 "document": "๐",
330 "photo": "๐",
331 "sticker": "๐จ",
332 "video": "๐ฌ",
333 "video_note": "๐ฅ",
334 "animation": "โจ",
335 "voice": "๐ค",
336 "web_page": "๐",
337}
338
339
340def emojify(text: str, platform: str = "all") -> str:
341 """Replace the text emojis with actual emojis.
342
343 [ๅพฎ็ฌ]Hello[็ฑไฝ ] -> ๐Hello๐ฅฐ
344 """
345 if platform == "all":
346 EMOJI_MAP = COMMON | BILIBILI | XHS | DOUYIN
347 elif platform == "xhs":
348 EMOJI_MAP = COMMON | XHS
349 elif platform == "douyin":
350 EMOJI_MAP = COMMON | DOUYIN
351 elif platform == "bilibili":
352 EMOJI_MAP = COMMON | BILIBILI
353 else:
354 EMOJI_MAP = COMMON
355 pattern = re.compile("|".join(re.escape(k) for k in EMOJI_MAP))
356
357 return pattern.sub(lambda match: EMOJI_MAP[match.group(0)], text)
358
359
360if __name__ == "__main__":
361 text = "[ๅพฎ็ฌ]Hello[็ฑไฝ ]"
362 print(emojify(text))