| @@ 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, |
|
| @@ 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): |
|