-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptions.py
38 lines (29 loc) · 996 Bytes
/
options.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
import os
import assets
class Options:
def __init__(self, form: dict):
self.input_path = _parse_file(form)
self.start_time = _parse_start_time(form)
self.duration = _parse_duration(form)
self.gif_speed = _parse_speed(form)
self.output_path = _out_from_in(self.input_path)
def _parse_start_time(form) -> str:
try:
hh, mm, ss = (int(val) for val in form['start'])
except ValueError:
raise ValueError(assets.msgs.INVALID_TRIM)
return f"{hh:02d}:{mm:02d}:{ss:02d}"
def _parse_file(form) -> str:
file = form['input_path']
if not (file and os.path.isfile(file)):
raise ValueError(assets.msgs.INVALID_FILE)
return file
def _parse_speed(form) -> float:
spd = form['gif_speed']
return round(0.25 / spd, 2)
def _parse_duration(form) -> str:
ss = form['duration']
return f"00:00:{ss:02d}"
def _out_from_in(file) -> str:
out_path = f'{os.path.splitext(file)[0]}.gif'
return out_path