def script_properties(): print('script_properties') props = obs.obs_properties_create() obs.obs_properties_add_text(props, "stream_url", "Stream URL", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_int(props, "interval", "Update Interval (milliseconds)", 1, 500, 1) p = obs.obs_properties_add_list(props, "source", "Media Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_id(source) if source_id == "ffmpeg_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) elif source_id == "vlc_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) obs.obs_properties_add_button(props, "button", "Refresh", refresh_pressed) return props
def script_properties(): # ui props = S.obs_properties_create() p = S.obs_properties_add_list( props, "source", "Text Source", S.OBS_COMBO_TYPE_EDITABLE, S.OBS_COMBO_FORMAT_STRING, ) sources = S.obs_enum_sources() if sources is not None: for source in sources: source_id = S.obs_source_get_unversioned_id(source) name = S.obs_source_get_name(source) S.obs_property_list_add_string(p, name, name) S.source_list_release(sources) _p = S.obs_properties_add_list( props, "scene", "Scene", S.OBS_COMBO_TYPE_EDITABLE, S.OBS_COMBO_FORMAT_STRING, ) scenes = S.obs_frontend_get_scenes() for scene in scenes: name = S.obs_source_get_name(scene) S.obs_property_list_add_string(_p, name, name) S.source_list_release(scenes) S.obs_properties_add_button(props, "button", "Duplicate", button_pressed) return props
def script_properties(): #global props props = obs.obs_properties_create() text1 = obs.obs_properties_add_list(props, "source 1", "Text Source 1", obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_STRING) text2 = obs.obs_properties_add_list(props, "source 2", "Text Source 2", obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_STRING) background = obs.obs_properties_add_list(props, "background", "Background for Transition", obs.OBS_COMBO_TYPE_LIST, obs.OBS_COMBO_FORMAT_STRING) obs.obs_property_list_add_string(text1, "None", "") obs.obs_property_list_add_string(text2, "None", "") obs.obs_property_list_add_string(background, "None", "") sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_id(source) if source_id == "text_gdiplus" or source_id == "text_ft2_source" or source_id == "text_gdiplus_v2": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(text1, name, name) obs.obs_property_list_add_string(text2, name, name) if source_id == "color_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(background, name, name) obs.source_list_release(sources) obs.obs_properties_add_float_slider(props, "transition_time", "Transition time (S)", 0.1, 5.0, 0.1) obs.obs_properties_add_text(props, "host", "Host ip", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_int(props, "port", "Port", 1, 100000, 1) obs.obs_properties_add_text(props, "password", "Password", obs.OBS_TEXT_PASSWORD) obs.obs_properties_add_button(props, "connect_button", "Connect to server", connect_button_clicked) obs.obs_properties_add_bool(props, "autoconnect", "Automatically try to (re)connect to server") return props
def script_properties(): props = obs.obs_properties_create() obs.obs_properties_add_text(props, "scripted_text", "Scripted text", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_int(props, "refresh_rate", "Refresh rate(ms)", 15, 5 * 1000, 1) obs.obs_properties_add_int(props, "duration", "Duration shown(ms)", 1 * 1000, 3600 * 1000, 1) p = obs.obs_properties_add_list( props, "source", "Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) sp = obs.obs_properties_add_list( props, "playsound", "Media Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) tp = obs.obs_properties_add_list( props, "text_effect", "Text effect", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) for i in scripted_text_driver.txt_efcts.keys(): obs.obs_property_list_add_string(tp, i, i) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_unversioned_id(source) if source_id == "text_gdiplus" or source_id == "text_ft2_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) if source_id == "ffmpeg_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(sp, name, name) obs.source_list_release(sources) obs.obs_properties_add_button( props, "button1", "PREVIEW", lambda *props: scripted_text_driver.hotkey_hook()) obs.obs_properties_add_button( props, "button2", "RESET", lambda *props: scripted_text_driver.reset_duration()) return props
def change_to_scene(scene_name): scenes = obs.obs_frontend_get_scenes() for scene in scenes: print(obs.obs_source_get_name(scene)) if obs.obs_source_get_name(scene) == scene_name: current_scene = obs.obs_frontend_get_current_scene() scenes.remove(current_scene) obs.obs_frontend_set_current_scene(scene)
def set_logo(blue_config, orange_config): #reused for logo later default_logo = os.path.join(files_path, 'logo.png') blue_config_bun = get_bot_config_bundle(blue_config) orange_config_bun = get_bot_config_bundle(orange_config) blue_logo = blue_config_bun.get_logo_file() if blue_logo is None: blue_logo = default_logo orange_logo = orange_config_bun.get_logo_file() if orange_logo is None: orange_logo = default_logo default_logo_scale = 0.25 default_logo_size = [400*default_logo_scale, 300*default_logo_scale] blue_logo_size = list(Image.open(blue_logo).size) blue_scale = default_logo_size[0]/blue_logo_size[0] orange_logo_size = list(Image.open(orange_logo).size) orange_scale = default_logo_size[0]/orange_logo_size[0] scenes = obs.obs_frontend_get_scenes() if scenes is not None: for scene in scenes: if obs.obs_source_get_name(scene) == 'RLBot - AutoLeague': scene = obs.obs_scene_from_source(scene) items = obs.obs_scene_enum_items(scene) for item in items: if item is not None: source_t = obs.obs_sceneitem_get_source(item) if obs.obs_source_get_name(source_t) == "Logo-0": source = source_t settings = obs.obs_data_create() obs.obs_data_set_string(settings, "file", blue_logo) obs.obs_source_update(source, settings) obs.obs_data_release(settings) vec = obs.vec2() obs.vec2_set(vec, blue_scale, blue_scale) obs.obs_sceneitem_set_scale(item, vec) if obs.obs_source_get_name(source_t) == "Logo-1": source = source_t settings = obs.obs_data_create() obs.obs_data_set_string(settings, "file", orange_logo) obs.obs_source_update(source, settings) obs.obs_data_release(settings) vec = obs.vec2() obs.vec2_set(vec, orange_scale, orange_scale) obs.obs_sceneitem_set_scale(item, vec) obs.source_list_release(scenes) obs.sceneitem_list_release(items)
def script_properties(): "https://obsproject.com/docs/reference-properties.html" props = obs.obs_properties_create() obs.obs_properties_add_text(props, "scripted_text", "Scripted text", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_int(props, "refresh_rate", "Refresh rate(ms)", 50, 5000, 1) obs.obs_properties_add_int(props, "duration", "Duration shown(ms)", 5000, 15000, 1) p = obs.obs_properties_add_list( props, "source", "Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) sp = obs.obs_properties_add_list( props, "playsound", "Media Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) tp = obs.obs_properties_add_list( props, "text_effect", "Text effect", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) for i in ["rainbow", "static", "random_chars", "blink"]: obs.obs_property_list_add_string(tp, i, i) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_unversioned_id(source) if source_id == "text_gdiplus" or source_id == "text_ft2_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) if source_id == "ffmpeg_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(sp, name, name) print(name) obs.source_list_release(sources) obs.obs_properties_add_button(props, "button", "Refresh and preview(5s)", refresh) return props
def get_item_names_by_scene(source): item_names = [] scene = obs.obs_scene_from_source(source) scene_name = obs.obs_source_get_name(source) scene_items = obs.obs_scene_enum_items(scene) if scene_items is not None: for item in scene_items: item_source = obs.obs_sceneitem_get_source(item) item_name = obs.obs_source_get_name(item_source) if item_name in light_mapping: item_names.append(item_name) obs.sceneitem_list_release(scene_items) return item_names
def script_properties(): # ui props = obs.obs_properties_create() p = obs.obs_properties_add_list( props, "source", "Browser source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) obs.obs_properties_add_button(props, "button1", "Press tab", press_tab) obs.obs_properties_add_button(props, "button2", "Press shift+tab", press_shift_tab) obs.obs_properties_add_button(props, "button3", "Send LMB at [100,200]", click_at) obs.obs_properties_add_button(props, "button4", "Move to 0,0 ", move_mouse0) obs.obs_properties_add_button(props, "button5", "Move to 100,200 ", move_mouse1) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_unversioned_id(source) if source_id == "browser_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) return props
def script_properties(): props = obs.obs_properties_create() # obs_property_t *obs_properties_add_text(obs_properties_t *props, const char *name, const char *description, enum obs_text_type type) obs.obs_properties_add_text( props, "api_endpoint", "API Endpoint", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_text( props, "jsonpath", "Path to json string (ex menu.state)", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_text( props, "format_rule", "Formatting rule (python format)", obs.OBS_TEXT_MULTILINE) # obs_property_t *obs_properties_add_int(obs_properties_t *props, const char *name, const char *description, int min, int max, int step) p = obs.obs_properties_add_list( props, "text_source", "Text Source (old FreeType 2)", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_unversioned_id(source) if source_id == "text_ft2_source": # gdiplus lags!!!!!! if source_id == "text_gdiplus" or source_id == "text_ft2_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) obs.obs_properties_add_button( props, "button", "Save/Refresh", save_pressed) return props
def script_properties(): props = obs.obs_properties_create() p = obs.obs_properties_add_list( props, 'source', 'Text Source:', obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_unversioned_id(source) if source_id == 'text_gdiplus' or source_id == 'text_ft2_source': name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) obs.obs_properties_add_text(props, 'format', 'Text Format:', obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_button(props, 'start_button', 'Start Timer', start_pressed) obs.obs_properties_add_bool(props, 'auto_start', 'Start Automatically with Stream') return props
def script_properties(): props = obs.obs_properties_create() obs.obs_properties_add_text(props, "strftime", "时间格式", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_text(props, "prefix", "前缀", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_text(props, "suffix", "后缀", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_float(props, "interval", "刷新间隔 (秒)", 0, 3600, 0.5) obs.obs_properties_add_float(props, "time_offset", "时间偏移 (小时)", -24, 24, 1) p = obs.obs_properties_add_list(props, "source", "文本源", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_id(source) if source_id.startswith("text"): name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) obs.obs_properties_add_button(props, "button", "刷新", refresh_pressed) return props
def script_properties(): """ Called to define user properties associated with the script. These properties are used to define how to show settings properties to a user. """ props = obs.obs_properties_create() mh = obs.obs_properties_add_bool(props, "match_history", "Show Match History") p = obs.obs_properties_add_list(props, "source", "Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_id(source) if source_id == "text_gdiplus" or source_id == "text_ft2_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) obs.obs_properties_add_int(props, "blink_rate", "Blink Rate(ms)", 1000, 10000, 1) obs.obs_properties_add_button(props, "button", "Reset Match History", refresh_pressed) return props
def set_current_scene(self): scenes = obs.obs_frontend_get_scenes() for scene in scenes: name = obs.obs_source_get_name(scene) if name == self.scene_name: obs.obs_frontend_set_current_scene(scene) obs.source_list_release(scenes)
def get_audio_sources_from_scene(scene, source_dict=None): if source_dict is None: source_dict = OrderedDict() for sceneitem in obspython.obs_scene_enum_items( obspython.obs_scene_from_source(scene)): item_source = obspython.obs_sceneitem_get_source(sceneitem) name = obspython.obs_source_get_name(item_source) if obspython.obs_source_get_output_flags( item_source) & obspython.OBS_SOURCE_COMPOSITE: source_dict = get_audio_sources_from_scene(item_source, source_dict) if obspython.obs_source_get_output_flags( item_source) & obspython.OBS_SOURCE_AUDIO: source_active = obspython.obs_source_active(item_source) audio_active = obspython.obs_source_audio_active(item_source) priv_settings = obspython.obs_source_get_private_settings( item_source) hidden = obspython.obs_data_get_bool(priv_settings, "mixer_hidden") if not source_active or not audio_active or hidden: continue source_dict[name] = item_source return source_dict
def script_properties(): props = obs.obs_properties_create() obs.obs_properties_add_text( props, "username", "Showdown Username", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_int( props, "interval", "Update interval (seconds)", 5, 3600, 1) p = obs.obs_properties_add_list( props, "source", "Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_id(source) if source_id == "text_gdiplus" or source_id == "text_gdiplus_v2" or source_id == "text_ft2_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) obs.obs_properties_add_text( props, "format", "Format (OU, UU etc.)", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_text( props, "str_format", "Text format (see website for details)", obs.OBS_TEXT_DEFAULT) return props
def script_properties(): props = obs.obs_properties_create() obs.obs_properties_add_text(props, "host", "MPD Host Address", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_int(props, "port", "Port", 0, 65535, 1) obs.obs_properties_add_text(props, "password", "Password", obs.OBS_TEXT_PASSWORD) obs.obs_properties_add_int(props, "interval", "Update Interval (milliseconds)", 1, 30000, 1) p = obs.obs_properties_add_list(props, "source", "Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_id(source) if source_id == "text_gdiplus" or source_id == "text_ft2_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) obs.obs_properties_add_button(props, "refresh_button", "Refresh", refresh_pressed) return props
def script_properties(): props = obs.obs_properties_create() p = obs.obs_properties_add_list( props, 'source', 'Text Source:', obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_unversioned_id(source) if source_id == 'text_gdiplus' or source_id == 'text_ft2_source': name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) obs.obs_properties_add_int_slider(props, 'timer_duration', 'Timer Duration (Mins):', 1, 120, 1) obs.obs_properties_add_button(props, 'start_button', 'Start Countdown', start_pressed) return props
def create_muted_callback(sn): global callback_name if sn is None or sn == callback_name: return False # source hasn't changed or callback is already set if callback_name is not None: remove_muted_callback(callback_name) source = obs.obs_get_source_by_name(sn) if source is None: if sources_loaded: # don't print if sources are still loading dprint("ERROR: Could not create callback for", sn) return False handler = obs.obs_source_get_signal_handler(source) obs.signal_handler_connect(handler, "mute", mute_callback) callback_name = sn # save name for future reference dprint("Added callback for \"{:s}\"".format( obs.obs_source_get_name(source))) if port: # if the serial port is open... obs.timer_add(send_initial_state, init_state_delay) # send the initial state obs.obs_source_release(source) return True
def script_properties(): props = obs.obs_properties_create() obs.obs_properties_add_int(props, "xMaxSize", "Max x size:", 0, 10000, 1) obs.obs_properties_add_int(props, "yMaxSize", "Max y size:", 0, 10000, 1) obs.obs_properties_add_int(props, "followRate", "Follow speed %:", 0, 100, 1) obs.obs_properties_add_int(props, "zoomRate", "Zoom speed %:", 0, 100, 1) obs.obs_properties_add_bool(props, "keepAspectRatio", "Keep aspect ratio on select rectangle:") sourceList1 = obs.obs_properties_add_list(props, "sourceName1", "Screen source 1:", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) sourceList2 = obs.obs_properties_add_list(props, "sourceName2", "Screen source 2:", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) sources = obs.obs_enum_sources() obs.obs_property_list_add_string(sourceList1, "", "") obs.obs_property_list_add_string(sourceList2, "", "") if sources is not None: for source in sources: source_id = obs.obs_source_get_unversioned_id(source) if source_id == "monitor_capture": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(sourceList1, name, name) obs.obs_property_list_add_string(sourceList2, name, name) obs.source_list_release(sources) return props
def script_properties(): # ui props = obs.obs_properties_create() p = obs.obs_properties_add_list( props, "source", "Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_unversioned_id(source) if source_id == "text_gdiplus" or source_id == "text_ft2_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) number = obs.obs_properties_add_int(props, "_int", "Number", 1, 100, 1) text_value = obs.obs_properties_add_text(props, "_text", "Additional input:", obs.OBS_TEXT_DEFAULT) obs.obs_property_set_visible(text_value, False) obs.obs_property_set_modified_callback(number, callback) return props
def dup(self): current_scene = S.obs_scene_from_source( S.obs_frontend_get_current_scene()) scene_item = S.obs_scene_find_source(current_scene, self.source_name) info = S.obs_transform_info() crop = S.obs_sceneitem_crop() S.obs_sceneitem_get_info(scene_item, info) S.obs_sceneitem_get_crop(scene_item, crop) duplicate = S.obs_sceneitem_get_source(scene_item) duplicated = S.obs_source_duplicate(duplicate, "duplicate" + self.source_name, False) scenes = S.obs_frontend_get_scenes() for scene in scenes: name = S.obs_source_get_name(scene) if name == self.scene_name: scene = S.obs_scene_from_source(scene) scene_item2 = S.obs_scene_add(scene, duplicated) S.obs_sceneitem_set_info(scene_item2, info) S.obs_sceneitem_set_crop(scene_item2, crop) S.obs_scene_release(scene) S.obs_source_release(duplicated) S.source_list_release(scenes) S.obs_scene_release(current_scene)
def script_properties(): debug("[CS] Loaded properties.") props = obs.obs_properties_create() obs.obs_properties_add_bool(props, "enabled", "Enabled") obs.obs_properties_add_bool(props, "debug_mode", "Debug Mode") obs.obs_properties_add_int(props, "check_frequency", "Check frequency", 150, 10000, 100) obs.obs_properties_add_text(props, "display_text", "Display text", obs.OBS_TEXT_DEFAULT) for i in filter(lambda x: not x.startswith('_'), calcingfunc.keys()): obs.obs_properties_add_bool(props, globals()[i].id, globals()[i].display_name) p = obs.obs_properties_add_list(props, "source_name", "Text source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) sources = obs.obs_enum_sources() if sources: for source in sources: source_id = obs.obs_source_get_unversioned_id(source) if source_id in ("text_gdiplus", "text_ft2_source"): name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) return props
def handle_preview_change(): global preview_items program_source = obs.obs_frontend_get_current_scene() program_name = obs.obs_source_get_name(program_source) obs.obs_source_release(program_source) preview_source = obs.obs_frontend_get_current_preview_scene() preview_name = obs.obs_source_get_name(preview_source) preview_items = get_item_names_by_scene(preview_source) if program_name != preview_name: set_lights_by_items(preview_items, preview_color, preview_brightness) obs.obs_source_release(preview_source) set_idle_lights()
def source_deactivated(calldata): source = obs.calldata_source(calldata, "source") if source is not None: name = obs.obs_source_get_name(source) if name == LATEST_SUBSCRIBER_SOURCE and TRACKING_SUBSCRIBERS: obs.timer_remove(update_latest_subscriber)
def script_properties(): props = obs.obs_properties_create() obs.obs_properties_add_color(props, "tally^IdleColor", "Idle Color") obs.obs_properties_add_int_slider(props, "tally^IdleBrightness", "Idle Brightness", 0, 10, 1) obs.obs_properties_add_color(props, "tally^PreviewColor", "Queued Color") obs.obs_properties_add_int_slider(props, "tally^PreviewBrightness", "Queued Brightness", 0, 10, 1) obs.obs_properties_add_color(props, "tally^ProgramColor", "Live Color") obs.obs_properties_add_int_slider(props, "tally^ProgramBrightness", "Live Brightness", 0, 10, 1) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_id(source) if source_id == 'av_capture_input': source_name = obs.obs_source_get_name(source) obs.script_log(obs.LOG_INFO, "Found source: " + source_name) obs.obs_properties_add_text(props, source_name, source_name + " light addr:", obs.OBS_TEXT_DEFAULT) obs.source_list_release(sources) return props
def get_order(scene_items=None): order = list() for i, s in enumerate(scene_items): source = obs.obs_sceneitem_get_source(s) name = obs.obs_source_get_name(source) order.append({"index": i, "name": name, "scene_item": s}) return order
def should_switch_scenes(): current = obs.obs_frontend_get_current_scene() name = obs.obs_source_get_name(current) obs.obs_source_release(current) if name in scene_names and name != scene_names[get_active_monitor()]: return True return False
def change_to_scene(bot, message, args): time_to_wait = time.time() - last_scene_change["t"] last_scene_change["t"] = time.time() if time_to_wait < DELAY: message['ttw'] = "{:.1f}".format(time_to_wait) return "CommandToSoon" scene_name = args['scene'] scenes = obs.obs_frontend_get_scenes() for scene in scenes: print(obs.obs_source_get_name(scene)) if obs.obs_source_get_name(scene) == scene_name: current_scene = obs.obs_frontend_get_current_scene() scenes.remove(current_scene) obs.obs_frontend_set_current_scene(scene) return 'Success'
def script_properties(): props = obs.obs_properties_create() obs.obs_properties_add_text(props, "counter_text1", "[1]Set counter text", obs.OBS_TEXT_DEFAULT) p1 = obs.obs_properties_add_list( props, "source1", "[1]Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) obs.obs_properties_add_text(props, "counter_text2", "[2]Set counter text", obs.OBS_TEXT_DEFAULT) p2 = obs.obs_properties_add_list( props, "source2", "[2]Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING, ) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_unversioned_id(source) if source_id == "text_gdiplus" or source_id == "text_ft2_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p1, name, name) obs.obs_property_list_add_string(p2, name, name) obs.source_list_release(sources) return props
def script_properties(): props = obs.obs_properties_create() obs.obs_properties_add_text(props, "url", "URL", obs.OBS_TEXT_DEFAULT) obs.obs_properties_add_int(props, "interval", "Update Interval (seconds)", 5, 3600, 1) p = obs.obs_properties_add_list(props, "source", "Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) sources = obs.obs_enum_sources() if sources is not None: for source in sources: source_id = obs.obs_source_get_id(source) if source_id == "text_gdiplus" or source_id == "text_ft2_source": name = obs.obs_source_get_name(source) obs.obs_property_list_add_string(p, name, name) obs.source_list_release(sources) obs.obs_properties_add_button(props, "button", "Refresh", refresh_pressed) return props