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
Esempio n. 3
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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
Esempio n. 8
0
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
Esempio n. 10
0
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
Esempio n. 11
0
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
Esempio n. 12
0
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
Esempio n. 13
0
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)
Esempio n. 15
0
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
Esempio n. 16
0
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
Esempio n. 17
0
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
Esempio n. 18
0
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)
Esempio n. 23
0
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
Esempio n. 24
0
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)
Esempio n. 26
0
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
Esempio n. 28
0
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
Esempio n. 29
0
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'
Esempio n. 30
0
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
Esempio n. 31
0
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