Code Duplication    Length = 33-43 lines in 2 locations

src/scripting/media_player_scripting.py 1 location

@@ 24-66 (lines=43) @@
21
        rtgg_obs.media_player.play_media_callback = play_sound
22
23
24
def script_media_player_settings(
25
    props, rtgg_obs: RacetimeObs, media_player_toggled
26
):
27
    p = obs.obs_properties_add_bool(
28
        props, "use_media_player", "Enable sounds?"
29
    )
30
    obs.obs_property_set_modified_callback(p, media_player_toggled)
31
    media_player_group = obs.obs_properties_create()
32
    obs.obs_properties_add_group(
33
            props, "media_player_group", "Media Player Mode",
34
            obs.OBS_GROUP_NORMAL, media_player_group
35
        )
36
    obs.obs_property_set_visible(
37
        obs.obs_properties_get(props, "media_player_group"),
38
        rtgg_obs.media_player.enabled
39
    )
40
    monitoring_list = obs.obs_properties_add_list(
41
        media_player_group, "monitoring_type", "Monitoring Type",
42
        obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_INT)
43
    obs.obs_property_list_add_int(
44
        monitoring_list, "Listen Only", obs.OBS_MONITORING_TYPE_MONITOR_ONLY)
45
    obs.obs_property_list_add_int(
46
        monitoring_list, "Stream Only", obs.OBS_MONITORING_TYPE_NONE)
47
    obs.obs_property_list_add_int(
48
        monitoring_list, "Listen and Stream",
49
        obs.OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT)
50
    p = obs.obs_properties_add_bool(
51
        media_player_group, "use_chat_pings", "Chat Pings")
52
    obs.obs_property_set_long_description(
53
        p, ("Enable this and set choose a sound file to play when a bot posts "
54
            "or when someone @s you in racetime.gg chat"))
55
    p = obs.obs_properties_add_path(
56
        media_player_group, "chat_ping_sound",
57
        "Chat media file", obs.OBS_PATH_FILE,
58
        "Audio Files (*.mp3 *.aac *.wav *.wma)", None
59
    )
60
    obs.obs_properties_add_path(
61
        media_player_group, "first_place_sound",
62
        "First Place Sound", obs.OBS_PATH_FILE,
63
        "Audio Files (*.mp3 *.aac *.wav *.wma)", None
64
    )
65
    obs.obs_property_set_long_description(
66
        p, "Sound file to play when you finish first.")
67
68
69
def play_sound(media_path: str,

src/scripting/media_trigger_scripting.py 1 location

@@ 5-37 (lines=33) @@
2
from rtgg_obs import RacetimeObs
3
4
5
def media_trigger_settings(props, rtgg_obs: RacetimeObs, index: int):
6
    media_player_group = obs.obs_properties_create()
7
    name = f"media_trigger_#{index}"
8
    obs.obs_properties_add_group(
9
            props, name, f"Media Trigger #{index}",
10
            obs.OBS_GROUP_NORMAL, media_player_group
11
        )
12
    obs.obs_property_set_visible(
13
        obs.obs_properties_get(props, "media_player_group"),
14
        rtgg_obs.media_player.enabled
15
    )
16
    obs.obs_properties_add_path(
17
        media_player_group, f"media_path_#{index}",
18
        "Sound File", obs.OBS_PATH_FILE,
19
        "Audio Files (*.mp3 *.aac *.wav *.wma)", None
20
    )
21
    p = obs.obs_properties_add_list(
22
        media_player_group, f"trigger_type_#{index}", "Type of Trigger",
23
        obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_STRING)
24
    obs.obs_property_list_add_string(p, "", "")
25
    obs.obs_property_list_add_string(p, "Chat", "chat")
26
    obs.obs_property_list_add_string(p, "Finish Place", "finish")
27
    obs.obs_property_list_add_string(p, "Timer", "time")
28
    obs.obs_property_set_modified_callback(p, media_type_changed)
29
    p = obs.obs_properties_add_list(
30
        media_player_group, f"monitoring_type_#{index}", "Monitoring Type",
31
        obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_INT)
32
    obs.obs_property_list_add_int(
33
        p, "Only Listen", obs.OBS_MONITORING_TYPE_MONITOR_ONLY)
34
    obs.obs_property_list_add_int(
35
        p, "Only Stream", obs.OBS_MONITORING_TYPE_NONE)
36
    obs.obs_property_list_add_int(
37
        p, "Listen and Stream", obs.OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT)
38
39
40
def media_type_changed(props, prop, settings):