Skip to content

Commit 138023f

Browse files
committed
归档
1 parent 0d93ef2 commit 138023f

14 files changed

+245
-66
lines changed

src/zh-hant/audio_and_video.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def test(props, prop):
3131
# 取得持續時間和當前時間,並計算播放進度
3232
duration = obs.obs_source_media_get_duration(media)
3333
time = obs.obs_source_media_get_time(media)
34-
obs.script_log(obs.LOG_INFO, f"Media 播放進度 {int(time * 100 / duration)}%")
34+
obs.script_log(obs.LOG_INFO, f'Media 播放進度 {int(time * 100 / duration)}%')
3535

3636
# 切換媒體來源的各種狀態
3737
state = obs.obs_source_media_get_state(media)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# 匯入模組 obspython
2+
import obspython as obs
3+
4+
def test(props, prop):
5+
# 取得文字(GDI+)來源中名稱為 blue 濾鏡
6+
welcome = obs.obs_get_source_by_name('Welcome')
7+
blue = obs.obs_source_get_filter_by_name(welcome, 'blue')
8+
9+
if not blue:
10+
# 如果 blue 濾鏡不存在,則建立新增該濾鏡
11+
settings = obs.obs_data_create_from_json('{"color_multiply":' + str(0xFF0000) + '}')
12+
blue = obs.obs_source_create('color_filter_v2', 'blue', settings, None)
13+
obs.obs_source_filter_add(welcome, blue)
14+
15+
# 取得來源的濾鏡個數,並將 blue 濾鏡移動至第二的位置
16+
count = obs.obs_source_filter_count(welcome)
17+
if count > 1:
18+
obs.obs_source_filter_set_index(welcome, blue, count - 2)
19+
20+
# 釋放 OBS 資料設定物件
21+
obs.obs_data_release(settings)
22+
23+
# 複製 Welcome 中的濾鏡到 Bye
24+
bye = obs.obs_get_source_by_name('Bye')
25+
obs.obs_source_copy_filters(bye, welcome)
26+
# 釋放 OBS 來源物件
27+
obs.obs_source_release(bye)
28+
29+
# 釋放 OBS 來源物件
30+
obs.obs_source_release(blue)
31+
obs.obs_source_release(welcome)
32+
33+
# 取得來源 Welcome 的隱藏轉場特效
34+
t = obs.obs_get_transition_by_name('Welcome 隱藏轉場特效')
35+
obs.obs_source_release(t)
36+
37+
# 為腳本新增一個用於測試的按鈕,回呼函式為 test
38+
def script_properties():
39+
props = obs.obs_properties_create()
40+
obs.obs_properties_add_button(props, 'test', '測試', test)
41+
return props

src/zh-hant/items_and_groups.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# 匯入模組 obspython 和 vec2
2+
import obspython as obs
3+
from obspython import vec2
4+
5+
def test(props, prop):
6+
# 取得場景 Scene 對應的場景物件
7+
source_scene = obs.obs_get_source_by_name('Scene')
8+
scene = obs.obs_scene_from_source(source_scene)
9+
10+
# 兩次尋找場景項 Welcome,第二次包括群組
11+
welcome = obs.obs_scene_find_source(scene, 'Welcome')
12+
obs.script_log(obs.LOG_INFO, f'找到了 Welcome?{welcome != None}')
13+
welcome = obs.obs_scene_find_source_recursive(scene, 'Welcome')
14+
obs.script_log(obs.LOG_INFO, f'找到了 Welcome(包括群組中的)?{welcome != None}')
15+
16+
# 顯示場景項 Welcome 的來源類型識別碼
17+
source_welcome = obs.obs_sceneitem_get_source(welcome)
18+
obs.script_log(obs.LOG_INFO, f'{obs.obs_source_get_unversioned_id(source_welcome)}')
19+
20+
# 將場景項 Welcome 移除
21+
obs.obs_sceneitem_remove(welcome)
22+
23+
# 將場景項 Hi 移動至末尾
24+
hi = obs.obs_scene_find_source(scene, 'Hi')
25+
obs.obs_sceneitem_set_order_position(hi, 0)
26+
27+
# 設定場景項 Hi 的位置
28+
pos = vec2()
29+
pos.x = 100
30+
pos.y = 100
31+
obs.obs_sceneitem_set_pos(hi, pos)
32+
# 設定場景項 Hi 的旋轉角度
33+
obs.obs_sceneitem_set_rot(hi, 30)
34+
# 設定場景項 Hi 的縮放
35+
scale = vec2()
36+
scale.x = 1.5
37+
scale.y = 1.5
38+
obs.obs_sceneitem_set_scale(hi, scale)
39+
40+
# 儲存並載入場景項的變型資訊,使中途的修改無效
41+
states = obs.obs_scene_save_transform_states(scene, True)
42+
# 設定場景項 Hi 的旋轉角度
43+
obs.obs_sceneitem_set_rot(hi, 90)
44+
obs.obs_scene_load_transform_states(obs.obs_data_get_json(states))
45+
46+
# 為場景項 Hi 增加滑出的隱藏轉場效果
47+
transition = obs.obs_source_create('swipe_transition', 'hi_hide_transition', None, None)
48+
obs.obs_sceneitem_set_transition(hi, False, transition)
49+
obs.obs_sceneitem_do_transition(hi, False)
50+
# 釋放來源物件
51+
obs.obs_source_release(transition)
52+
53+
# 建立一個新的群組,並將 Hi 加入其中
54+
message = obs.obs_scene_add_group(scene, 'Message')
55+
obs.obs_sceneitem_group_add_item(message, hi)
56+
57+
# 取得場景項 Bye 所在的群組
58+
bye = obs.obs_scene_find_source_recursive(scene, 'Bye')
59+
group = obs.obs_sceneitem_get_group(scene, bye)
60+
obs.script_log(obs.LOG_INFO, f'是群組?{obs.obs_sceneitem_is_group(group)}')
61+
62+
gs = obs.obs_get_source_by_name('Group')
63+
g = obs.obs_group_from_source(gs)
64+
obs.script_log(obs.LOG_INFO, f'是群組?{obs.obs_sceneitem_is_group(g)}')
65+
obs.obs_source_release(gs)
66+
67+
# 釋放來源物件
68+
obs.obs_source_release(source_scene)
69+
70+
# 為腳本新增一個用於測試的按鈕,回呼函式為 test
71+
def script_properties():
72+
props = obs.obs_properties_create()
73+
obs.obs_properties_add_button(props, 'test', '測試', test)
74+
return props

src/zh-hant/properties.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def set_source_color(settings):
3838
def set_source_font(settings):
3939
# 取得字型對話方塊所確定的字型
4040
font = obs.obs_data_get_obj(settings, 'font')
41-
# obs.script_log(obs.LOG_INFO, f"色彩:{font}")
41+
# obs.script_log(obs.LOG_INFO, f'色彩:{font}')
4242

4343
# 為場景中的文字來源 Welcome 設定字型
4444
source = obs.obs_get_source_by_name('Welcome')

src/zh-hant/scenes.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@ def test(props, prop):
2020
obs.obs_source_release(source_text)
2121
obs.obs_data_release(settings)
2222

23-
# 兩次尋找場景項 Welcome,第二次包括群組
24-
welcome = obs.obs_scene_find_source(scene, 'Welcome')
25-
obs.script_log(obs.LOG_INFO, f"找到了 Welcome?{welcome != None}")
26-
welcome = obs.obs_scene_find_source_recursive(scene, 'Welcome')
27-
obs.script_log(obs.LOG_INFO, f"找到了 Welcome(包括群組中的)?{welcome != None}")
28-
2923
# 釋放場景物件和來源物件
3024
obs.obs_source_release(source_scene)
3125
obs.obs_scene_release(scene_sub)

src/zh-hant/sources.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ def test(props, prop):
3030
# 顯示 Weclome 來源的大小
3131
width = obs.obs_source_get_width(welcome)
3232
height = obs.obs_source_get_height(welcome)
33-
obs.script_log(obs.LOG_INFO, f"Welcome 的大小 {width}x{height}")
33+
obs.script_log(obs.LOG_INFO, f'Welcome 的大小 {width}x{height}')
3434

3535
# 顯示 Weclome 來源的來源類型識別碼和 UUID
3636
v_id = obs.obs_source_get_id(welcome)
3737
id = obs.obs_source_get_unversioned_id(welcome)
38-
obs.script_log(obs.LOG_INFO, f"Welcome 的 id {v_id} {id}")
38+
obs.script_log(obs.LOG_INFO, f'Welcome 的 id {v_id} {id}')
3939
uuid = obs.obs_source_get_uuid(welcome)
40-
obs.script_log(obs.LOG_INFO, f"Welcome 的 uuid {uuid}")
40+
obs.script_log(obs.LOG_INFO, f'Welcome 的 uuid {uuid}')
4141

4242
# 釋放來源 Welcome 和 Bye
4343
obs.obs_source_release(welcome)
@@ -52,22 +52,22 @@ def test(props, prop):
5252
# 顯示 Group 來源的類型,並判斷是否為群組
5353
group = obs.obs_get_source_by_name('Group')
5454
group_type = obs.obs_source_get_type(group)
55-
obs.script_log(obs.LOG_INFO, f"Group 的類型 {group_type},等於 OBS_SOURCE_TYPE_SCENE?{group_type == obs.OBS_SOURCE_TYPE_SCENE}")
56-
obs.script_log(obs.LOG_INFO, f"Group 是群組?{obs.obs_source_is_group(group)}")
55+
obs.script_log(obs.LOG_INFO, f'Group 的類型 {group_type},等於 OBS_SOURCE_TYPE_SCENE?{group_type == obs.OBS_SOURCE_TYPE_SCENE}')
56+
obs.script_log(obs.LOG_INFO, f'Group 是群組?{obs.obs_source_is_group(group)}')
5757
obs.obs_source_release(group)
5858

5959
# 來源 Screen 如果存在,則將其移除
6060
screen = obs.obs_get_source_by_name('Screen')
6161
if screen:
6262
obs.obs_source_remove(screen)
63-
obs.script_log(obs.LOG_INFO, f"Screen 被移除?{obs.obs_source_removed(screen)}")
63+
obs.script_log(obs.LOG_INFO, f'Screen 被移除?{obs.obs_source_removed(screen)}')
6464
obs.obs_source_release(screen)
6565

6666
# 判斷來源 Video 的輸出旗標
6767
video = obs.obs_get_source_by_name('Video')
6868
flags = obs.obs_source_get_output_flags(video)
69-
obs.script_log(obs.LOG_INFO, f"Video 具有視訊功能?{flags & obs.OBS_SOURCE_VIDEO == obs.OBS_SOURCE_VIDEO}")
70-
obs.script_log(obs.LOG_INFO, f"Video 具有音訊功能?{flags & obs.OBS_SOURCE_AUDIO == obs.OBS_SOURCE_AUDIO}")
69+
obs.script_log(obs.LOG_INFO, f'Video 具有視訊功能?{flags & obs.OBS_SOURCE_VIDEO == obs.OBS_SOURCE_VIDEO}')
70+
obs.script_log(obs.LOG_INFO, f'Video 具有音訊功能?{flags & obs.OBS_SOURCE_AUDIO == obs.OBS_SOURCE_AUDIO}')
7171
obs.obs_source_release(video)
7272

7373
# 為腳本新增一個用於測試的按鈕,回呼函式為 test

src/zh-hant/video.py

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/zh/audio_and_video.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def test(props, prop):
3131
# 获取持续时间和当前时间,并计算播放进度
3232
duration = obs.obs_source_media_get_duration(media)
3333
time = obs.obs_source_media_get_time(media)
34-
obs.script_log(obs.LOG_INFO, f"Media 播放进度 {int(time * 100 / duration)}%")
34+
obs.script_log(obs.LOG_INFO, f'Media 播放进度 {int(time * 100 / duration)}%')
3535

3636
# 切换媒体源的各种状态
3737
state = obs.obs_source_media_get_state(media)

src/zh/filters_and_transitions.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# 导入模块 obspython
2+
import obspython as obs
3+
4+
def test(props, prop):
5+
# 获取文字(GDI+)来源中名称为 blue 滤镜
6+
welcome = obs.obs_get_source_by_name('Welcome')
7+
blue = obs.obs_source_get_filter_by_name(welcome, 'blue')
8+
9+
if not blue:
10+
# 如果 blue 滤镜不存在,则创建添加该滤镜
11+
settings = obs.obs_data_create_from_json('{"color_multiply":' + str(0xFF0000) + '}')
12+
blue = obs.obs_source_create('color_filter_v2', 'blue', settings, None)
13+
obs.obs_source_filter_add(welcome, blue)
14+
15+
# 获取来源的滤镜个数,并将 blue 滤镜移动至第二的位置
16+
count = obs.obs_source_filter_count(welcome)
17+
if count > 1:
18+
obs.obs_source_filter_set_index(welcome, blue, count - 2)
19+
20+
# 释放 OBS 数据设置对象
21+
obs.obs_data_release(settings)
22+
23+
# 复制 Welcome 中的滤镜到 Bye
24+
bye = obs.obs_get_source_by_name('Bye')
25+
obs.obs_source_copy_filters(bye, welcome)
26+
# 释放 OBS 来源对象
27+
obs.obs_source_release(bye)
28+
29+
# 释放 OBS 来源对象
30+
obs.obs_source_release(blue)
31+
obs.obs_source_release(welcome)
32+
33+
# 获取来源 Welcome 的隐藏转场特效
34+
t = obs.obs_get_transition_by_name('Welcome 隐藏转场特效')
35+
obs.obs_source_release(t)
36+
37+
# 为脚本添加一个用于测试的按钮,回调函数为 test
38+
def script_properties():
39+
props = obs.obs_properties_create()
40+
obs.obs_properties_add_button(props, 'test', '测试', test)
41+
return props

src/zh/items_and_groups.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# 导入模块 obspython 和 vec2
2+
import obspython as obs
3+
from obspython import vec2
4+
5+
def test(props, prop):
6+
# 获取场景 Scene 对应的场景对象
7+
source_scene = obs.obs_get_source_by_name('Scene')
8+
scene = obs.obs_scene_from_source(source_scene)
9+
10+
# 两次查找场景项 Welcome,第二次包括分组
11+
welcome = obs.obs_scene_find_source(scene, 'Welcome')
12+
obs.script_log(obs.LOG_INFO, f'找到了 Welcome?{welcome != None}')
13+
welcome = obs.obs_scene_find_source_recursive(scene, 'Welcome')
14+
obs.script_log(obs.LOG_INFO, f'找到了 Welcome(包括分组中的)?{welcome != None}')
15+
16+
# 显示场景项 Welcome 的来源类型标识符
17+
source_welcome = obs.obs_sceneitem_get_source(welcome)
18+
obs.script_log(obs.LOG_INFO, f'{obs.obs_source_get_unversioned_id(source_welcome)}')
19+
20+
# 将场景项 Welcome 移除
21+
obs.obs_sceneitem_remove(welcome)
22+
23+
# 将场景项 Hi 移动至末尾
24+
hi = obs.obs_scene_find_source(scene, 'Hi')
25+
obs.obs_sceneitem_set_order_position(hi, 0)
26+
27+
# 设置场景项 Hi 的位置
28+
pos = vec2()
29+
pos.x = 100
30+
pos.y = 100
31+
obs.obs_sceneitem_set_pos(hi, pos)
32+
# 设置场景项 Hi 的旋转角度
33+
obs.obs_sceneitem_set_rot(hi, 30)
34+
# 设置场景项 Hi 的缩放
35+
scale = vec2()
36+
scale.x = 1.5
37+
scale.y = 1.5
38+
obs.obs_sceneitem_set_scale(hi, scale)
39+
40+
# 保存并加载场景项的变换信息,使中途的修改无效
41+
states = obs.obs_scene_save_transform_states(scene, True)
42+
# 设置场景项 Hi 的旋转角度
43+
obs.obs_sceneitem_set_rot(hi, 90)
44+
obs.obs_scene_load_transform_states(obs.obs_data_get_json(states))
45+
46+
# 为场景项 Hi 增加滑出的隐藏转场效果
47+
transition = obs.obs_source_create('swipe_transition', 'hi_hide_transition', None, None)
48+
obs.obs_sceneitem_set_transition(hi, False, transition)
49+
obs.obs_sceneitem_do_transition(hi, False)
50+
# 释放来源对象
51+
obs.obs_source_release(transition)
52+
53+
# 创建一个新的分组,并将 Hi 加入其中
54+
message = obs.obs_scene_add_group(scene, 'Message')
55+
obs.obs_sceneitem_group_add_item(message, hi)
56+
57+
# 获取场景项 Bye 所在的分组
58+
bye = obs.obs_scene_find_source_recursive(scene, 'Bye')
59+
group = obs.obs_sceneitem_get_group(scene, bye)
60+
obs.script_log(obs.LOG_INFO, f'是分组?{obs.obs_sceneitem_is_group(group)}')
61+
62+
# 释放来源对象
63+
obs.obs_source_release(source_scene)
64+
65+
# 为脚本添加一个用于测试的按钮,回调函数为 test
66+
def script_properties():
67+
props = obs.obs_properties_create()
68+
obs.obs_properties_add_button(props, 'test', '测试', test)
69+
return props

0 commit comments

Comments
 (0)