-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.py
115 lines (93 loc) · 2.78 KB
/
utils.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
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
108
109
110
111
112
113
114
115
#!/usr/bin/python3
import os
import sys
from moviepy import AudioFileClip
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "libs"))
import config_reader
import random
def get_random_str(length=8):
"""生成一个随即字符串
Params:
length: 字符串长度
Return:
随即字符串
"""
alphabet = 'abcdefghijklmnopqrstuvwxyz1234567890_'
characters = random.sample(alphabet, length)
return ''.join(characters)
def get_time(script_time):
"""
将脚本的时间转换成数字,以秒为单位
Params:
script_time: 脚本时间,如: 3秒, 2分5秒, 2 (default is second)
Return:
以秒为单位的时间
"""
if not script_time:
return 0
try:
return float(script_time)
except ValueError:
pass
time_number = 0
if "分" in script_time:
_time = script_time.split("分")
time_number += int(_time[0]) * 60
if len(_time) > 1:
script_time = _time[1]
if "秒" in script_time:
script_time = script_time.replace("秒", '')
time_number += float(script_time)
return time_number
def covert_pos(pos):
"""
将系统中可能用的位置数据转换为像素值。
Params:
pos: 可能的位置数据,如: '中心', [0.1, 0.5], [140, 200], [左侧, 顶侧]
Return:
位置的像素值, 标准的最大值是config里的g_width, g_height
"""
try:
if not pos:
return None
if pos == '中心':
pos = [0.5, 0.5]
x_center, y_center = pos
if x_center == '中心':
x_center = 0.5
elif x_center == '左侧':
x_center = 0
elif x_center == '右侧':
x_center = 1
if y_center == '中心':
y_center = 0.5
elif y_center == '顶侧':
y_center = 0
elif y_center == '底部':
y_center = 1
# x,y的值在1和1.5之间时,是为了走出屏幕
if x_center > -1 and x_center < 2:
x_center = config_reader.g_width * x_center
if y_center > -1 and y_center < 2:
y_center = config_reader.g_height * y_center
return (int(x_center), int(y_center))
except Exception as e:
print("不支持的坐标: ", pos)
raise(e)
def get_audio_length(audio):
"""获取声音长度,单位秒
Params:
audio: 声音文件或AudioFileClip实例
Return:
声音长度,单位秒
"""
if not audio:
return 0
if isinstance(audio, str):
return AudioFileClip(audio).duration
else:
return audio.duration
if __name__ == "__main__":
# get_sub_title_list("tmp/养生论.txt")
print(get_random_str(4))
pass