-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy patholdik.py
68 lines (51 loc) · 1.28 KB
/
oldik.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
66
67
68
import typer
import time
from frames import (
piyola_frames,
beer_frames,
glass_frames,
cola_frames,
broken_glass_frames,
get_ascii_frames,
love_frames,
)
DEFAULT_FRAMES = glass_frames
VERSION_TO_FRAMES = {
"uzbekistan": piyola_frames,
"germany": beer_frames,
"canada": broken_glass_frames,
"cola": cola_frames,
"love": love_frames
}
def clear_line(n=1):
LINE_UP = '\033[1A'
LINE_CLEAR = '\x1b[2K'
for i in range(n):
print(LINE_UP, end=LINE_CLEAR)
def animate_frames(frames):
i = 0
while True:
# validate frames length
if len(frames) == 0:
return
line_count = len(frames)
frame = frames[i]
print(frame)
time.sleep(.1)
clear_line(len(frame.split("\n")))
i += 1
i %= line_count
def animate_version(version: str = ""):
frames = VERSION_TO_FRAMES.get(version.lower(), DEFAULT_FRAMES)
animate_frames(frames)
def animate_gif(path: str):
frames = get_ascii_frames(path)
animate_frames(frames)
def main(version: str = "uzbekistan", path: str = None):
# If gif path specified, then animate gif
if path:
animate_gif(path)
else:
animate_version(version)
if __name__ == '__main__':
typer.run(main)