helpers.obs_context_manager.source_ar()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 7
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
dl 0
loc 7
rs 10
c 0
b 0
f 0
cc 1
nop 1
1
from contextlib import contextmanager
2
3
import obspython as obs
4
5
# auto release context managers
6
7
8
@contextmanager
9
def source_ar(source_name):
10
    source = obs.obs_get_source_by_name(source_name)
11
    try:
12
        yield source
13
    finally:
14
        obs.obs_source_release(source)
15
16
17
@contextmanager
18
def p_source_ar(id, source_name, settings):
19
    try:
20
        _source = obs.obs_source_create_private(id, source_name, settings)
21
        yield _source
22
    finally:
23
        obs.obs_source_release(_source)
24
25
26
@contextmanager
27
def data_ar(source_settings=None):
28
    settings = None
29
    if not source_settings:
30
        settings = obs.obs_data_create()
31
    if source_settings:
32
        settings = obs.obs_source_get_settings(source_settings)
33
    try:
34
        yield settings
35
    finally:
36
        obs.obs_data_release(settings)
37
38
39
@contextmanager
40
def scene_ar(scene):
41
    scene = obs.obs_scene_from_source(scene)
42
    try:
43
        yield scene
44
    finally:
45
        obs.obs_scene_release(scene)
46
47
48
@contextmanager
49
def filter_ar(source, name):
50
    source = obs.obs_source_get_filter_by_name(source, name)
51
    try:
52
        yield source
53
    finally:
54
        obs.obs_source_release(source)
55
56
57
@contextmanager
58
def source_list_ar():
59
    source_list = obs.obs_enum_sources()
60
    try:
61
        yield source_list
62
    finally:
63
        obs.source_list_release(source_list)
64
65
66
@contextmanager
67
def media_source_ar(media_path: str, monitoring_type: int):
68
    media_source = obs.obs_source_create_private(
69
        "ffmpeg_source", "Global Media Source", None
70
        )
71
    with data_ar() as settings:
72
        obs.obs_data_set_string(settings, "local_file", media_path)
73
        obs.obs_source_update(media_source, settings)
74
        obs.obs_source_set_monitoring_type(media_source, monitoring_type)
75
        try:
76
            yield media_source
77
        finally:
78
            obs.obs_source_release(media_source)
79