-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathffz.py
65 lines (51 loc) · 1.7 KB
/
ffz.py
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
from dotenv import load_dotenv
import time
import os
import requests
from models.emotes import Emote
base_url = 'https://api.frankerfacez.com/v1'
load_dotenv()
CACHE_TIMEOUT = int(os.getenv('CACHE_TIMEOUT_FFZ', 300))
def parseEmote(e):
emote = Emote(
code=e['name'],
provider=3,
zero_width=False,
animated='animated' in e.keys()
)
for u in (e.get('animated') or e['urls']).items():
size = f'{u[0]}x'
url = u[1]
emote.addUrl(size, url)
return emote
def updateEmotes(self):
if (time.time() - self.ffz_emotes_updated) < CACHE_TIMEOUT:
print(f'[{self.login}] Using cached ffz emotes.')
return
print(f'[{self.login}] Updating ffz emotes..')
self.ffz_emotes.clear()
emotes = []
if self.login == '_global':
url = f'{base_url}/set/global'
response = requests.get(url)
if response.status_code == 200:
data = response.json()
set_ids = data['default_sets']
for set_id in set_ids:
emotes.extend(data['sets'][str(set_id)]['emoticons'])
else:
url = f'{base_url}/room/id/{self.user_id}'
response = requests.get(url)
if response.status_code == 200:
data = response.json()
set_id = data['room']['set']
emotes.extend(data['sets'][str(set_id)]['emoticons'])
for e in emotes:
emote = parseEmote(e)
self.ffz_emotes.append(emote)
self.ffz_emotes_updated = time.time()
print(f'[{self.login}] Updated ffz emotes: {len(self.ffz_emotes)} emotes.')
def getEmotes(self):
with self.ffz_lock:
updateEmotes(self)
return [e.toDict() for e in self.ffz_emotes]