Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

obsbuilderでリクエストを送る際に同名のオブジェクトが存在しないかチェックする #3

Open
TakumaNakagame opened this issue Nov 13, 2022 · 2 comments

Comments

@TakumaNakagame
Copy link
Collaborator

TakumaNakagame commented Nov 13, 2022

OBSの仕様上、同名のオブジェクトは作成できない。
そのため、一度 switcher build を実行した後、再度実行した場合に同名のオブジェクトが存在するためにリクエストが失敗する。

これを回避するため修正する。

  • 同名のオブジェクトがあるかチェックする
  • 同名のオブジェクトが存在した場合、上書き(削除→作成)するか確認する
  • 上書きしない場合は作成リクエストを行わない

また、このチェックは単純にリクエストを倍投げてしまうため、必要に応じてチェックをしないように修正する


手動で変更したオブジェクトを残しておきたいので優先度は低めでOK

@TakumaNakagame
Copy link
Collaborator Author

ちなみに現状のリクエストは以下の通り。

[
    Request: { // simpleobsws object
            requestType
            requestData
    },
]

[Request(requestType='CreateSceneCollection', requestData={'sceneCollectionName': '2022-11-21_A'}, inputVariables=None, outputVariables=None),
 Request(requestType='CreateScene', requestData={'sceneName': 'A_701_10:00-10:40_Securityに関する発表'}, inputVariables=None, outputVariables=None),
 Request(requestType='CreateInput', requestData={'sceneName': 'A_701_10:00-10:40_Securityに関する発表', 'inputName': 'A_701_10:00-10:40_Securityに関する発表_media', 'inputKind': 'ffmpeg_source', 'inputSettings': {'is_local_file': False, 'restart_on_activate': False, 'buffering_mb': 2, 'input': 'rtmp://nginx01.cloudnativedays.jp:10002/live/cndt2022-studio-a'}}, inputVariables=None, outputVariables=None),
 Request(requestType='CreateSourceFilter', requestData={'sourceName': 'A_701_10:00-10:40_Securityに関する発表_media', 'filterName': 'スケーリング/アスペクト比', 'filterKind': 'scale_filter', 'filterSettings': {'resolution': '1920x1080'}}, inputVariables=None, outputVariables=None),
 Request(requestType='CreateScene', requestData={'sceneName': 'A_702_10:25-11:05_IoT/Edgeに関する10の知見'}, inputVariables=None, outputVariables=None),
 Request(requestType='CreateInput', requestData={'sceneName': 'A_702_10:25-11:05_IoT/Edgeに関する10の知見', 'inputName': 'A_702_10:25-11:05_IoT/Edgeに関する10の知見_media', 'inputKind': 'ffmpeg_source', 'inputSettings': {'is_local_file': False, 'restart_on_activate': False, 'buffering_mb': 2, 'input': 'rtmp://nginx01.cloudnativedays.jp:10002/live/cndt2022-studio-a'}}, inputVariables=None, outputVariables=None),
 Request(requestType='CreateSourceFilter', requestData={'sourceName': 'A_702_10:25-11:05_IoT/Edgeに関する10の知見_media', 'filterName': 'スケーリング/アスペクト比', 'filterKind': 'scale_filter', 'filterSettings': {'resolution': '1920x1080'}}, inputVariables=None, outputVariables=None),
 Request(requestType='CreateScene', requestData={'sceneName': 'A_703_10:50-11:30_CloudNative Networking'}, inputVariables=None, outputVariables=None),
 Request(requestType='CreateInput', requestData={'sceneName': 'A_703_10:50-11:30_CloudNative Networking', 'inputName': 'A_703_10:50-11:30_CloudNative Networking_media', 'inputKind': 'vlc_source', 'inputSettings': {'playlist': [{'hidden': False, 'selected': False, 'value': '/home/ubuntu/Nextcloud/Broadcast/CNDT2022/Sync/Media/z-common/cndt2022_Countdown60.mp4'}, {'hidden': False, 'selected': False, 'value': '/home/ubuntu/Nextcloud2/cndt2022/CloudNative Networking.mp4'}]}}, inputVariables=None, outputVariables=None),
 Request(requestType='CreateSourceFilter', requestData={'sourceName': 'A_703_10:50-11:30_CloudNative Networking_media', 'filterName': 'スケーリング/アスペクト比', 'filterKind': 'scale_filter', 'filterSettings': {'resolution': '1920x1080'}}, inputVariables=None, outputVariables=None)]

これを以下のように、チェック用のリクエストを保持するように修正する

[
    Request: {
        standard_request: { // simpleobsws object
            requestType
            requestData
        },
        check_request: {
            requestType
            requestData
        }
    }
]```

@TakumaNakagame
Copy link
Collaborator Author

TakumaNakagame commented Nov 13, 2022



request_types = [
    {
        "create": "CreateSceneCollection",
        "get": "GetSceneCollectionList"
    },
    {
        "create": "CreateScene",
        "get": "GetSceneList"
    },
    {
        "create": "CreateInput",
        "get": "GetInputList"
    },
    {
        "create": "CreateSourceFilter",
        "get": "GetSourceFilterList"
    }
]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant