| @@ 29-78 (lines=50) @@ | ||
| 26 | rtgg_obs.media_player.play_media_callback = play_sound |
|
| 27 | ||
| 28 | ||
| 29 | def script_media_player_settings( |
|
| 30 | props, rtgg_obs: RacetimeObs, media_player_toggled |
|
| 31 | ): |
|
| 32 | lang = gettext.translation( |
|
| 33 | "racetime-obs", localedir=os.environ['LOCALEDIR']) |
|
| 34 | _ = lang.gettext |
|
| 35 | ||
| 36 | p = obs.obs_properties_add_bool( |
|
| 37 | props, "use_media_player", _("Enable sounds?") |
|
| 38 | ) |
|
| 39 | obs.obs_property_set_modified_callback(p, media_player_toggled) |
|
| 40 | media_player_group = obs.obs_properties_create() |
|
| 41 | obs.obs_properties_add_group( |
|
| 42 | props, "media_player_group", _("Media Player Mode"), |
|
| 43 | obs.OBS_GROUP_NORMAL, media_player_group |
|
| 44 | ) |
|
| 45 | obs.obs_property_set_visible( |
|
| 46 | obs.obs_properties_get(props, "media_player_group"), |
|
| 47 | rtgg_obs.media_player.enabled |
|
| 48 | ) |
|
| 49 | monitoring_list = obs.obs_properties_add_list( |
|
| 50 | media_player_group, "monitoring_type", _("Monitoring Type"), |
|
| 51 | obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_INT) |
|
| 52 | obs.obs_property_list_add_int( |
|
| 53 | monitoring_list, _("Listen Only"), |
|
| 54 | obs.OBS_MONITORING_TYPE_MONITOR_ONLY |
|
| 55 | ) |
|
| 56 | obs.obs_property_list_add_int( |
|
| 57 | monitoring_list, _("Stream Only"), obs.OBS_MONITORING_TYPE_NONE) |
|
| 58 | obs.obs_property_list_add_int( |
|
| 59 | monitoring_list, _("Listen and Stream"), |
|
| 60 | obs.OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT) |
|
| 61 | p = obs.obs_properties_add_bool( |
|
| 62 | media_player_group, "use_chat_pings", _("Chat Pings")) |
|
| 63 | obs.obs_property_set_long_description( |
|
| 64 | p, _("Enable this and set choose a sound file to play when a bot posts" |
|
| 65 | " or when someone @s you in racetime.gg chat") |
|
| 66 | ) |
|
| 67 | p = obs.obs_properties_add_path( |
|
| 68 | media_player_group, "chat_ping_sound", |
|
| 69 | _("Chat media file"), obs.OBS_PATH_FILE, |
|
| 70 | "Audio Files (*.mp3 *.aac *.wav *.wma)", None |
|
| 71 | ) |
|
| 72 | obs.obs_properties_add_path( |
|
| 73 | media_player_group, "first_place_sound", |
|
| 74 | _("First Place Sound"), obs.OBS_PATH_FILE, |
|
| 75 | "Audio Files (*.mp3 *.aac *.wav *.wma)", None |
|
| 76 | ) |
|
| 77 | obs.obs_property_set_long_description( |
|
| 78 | p, _("Sound file to play when you finish first.")) |
|
| 79 | ||
| 80 | ||
| 81 | def play_sound(media_path: str, |
|
| @@ 8-44 (lines=37) @@ | ||
| 5 | from rtgg_obs import RacetimeObs |
|
| 6 | ||
| 7 | ||
| 8 | def media_trigger_settings(props, rtgg_obs: RacetimeObs, index: int): |
|
| 9 | lang = gettext.translation( |
|
| 10 | "racetime-obs", localedir=os.environ['LOCALEDIR']) |
|
| 11 | _ = lang.gettext |
|
| 12 | ||
| 13 | media_player_group = obs.obs_properties_create() |
|
| 14 | name = f"media_trigger_#{index}" |
|
| 15 | obs.obs_properties_add_group( |
|
| 16 | props, name, _("Media Trigger #") + f"{index}", |
|
| 17 | obs.OBS_GROUP_NORMAL, media_player_group |
|
| 18 | ) |
|
| 19 | obs.obs_property_set_visible( |
|
| 20 | obs.obs_properties_get(props, "media_player_group"), |
|
| 21 | rtgg_obs.media_player.enabled |
|
| 22 | ) |
|
| 23 | obs.obs_properties_add_path( |
|
| 24 | media_player_group, f"media_path_#{index}", |
|
| 25 | _("Sound File"), obs.OBS_PATH_FILE, |
|
| 26 | "Audio Files (*.mp3 *.aac *.wav *.wma)", None |
|
| 27 | ) |
|
| 28 | p = obs.obs_properties_add_list( |
|
| 29 | media_player_group, f"trigger_type_#{index}", _("Type of Trigger"), |
|
| 30 | obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_STRING) |
|
| 31 | obs.obs_property_list_add_string(p, "", "") |
|
| 32 | obs.obs_property_list_add_string(p, _("Chat"), "chat") |
|
| 33 | obs.obs_property_list_add_string(p, _("Finish Place"), "finish") |
|
| 34 | obs.obs_property_list_add_string(p, _("Timer"), "time") |
|
| 35 | obs.obs_property_set_modified_callback(p, media_type_changed) |
|
| 36 | p = obs.obs_properties_add_list( |
|
| 37 | media_player_group, f"monitoring_type_#{index}", _("Monitoring Type"), |
|
| 38 | obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_INT) |
|
| 39 | obs.obs_property_list_add_int( |
|
| 40 | p, _("Only Listen"), obs.OBS_MONITORING_TYPE_MONITOR_ONLY) |
|
| 41 | obs.obs_property_list_add_int( |
|
| 42 | p, _("Only Stream"), obs.OBS_MONITORING_TYPE_NONE) |
|
| 43 | obs.obs_property_list_add_int( |
|
| 44 | p, _("Listen and Stream"), obs.OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT) |
|
| 45 | ||
| 46 | ||
| 47 | def media_type_changed(props, prop, settings): |
|