Skip to content

Commit 7e87b36

Browse files
authored
Merge pull request #288 from VirtualLiveLab/feature-eizoukizaiPC
wolに映像機材PCを追加
2 parents 8f86e53 + a997c4b commit 7e87b36

2 files changed

Lines changed: 30 additions & 2 deletions

File tree

src/app/wol/fn.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,35 @@
55
import aiohttp
66

77
# https://www.notion.so/virtual-live-lab/ddf6d9708a2e45469f675c37e6d09e28
8-
type ComputerType = Literal["left", "right", "stream"]
8+
type ComputerType = Literal["left", "right", "stream", "kizai"]
99

1010

1111
class ComputerStatus(TypedDict):
1212
left: bool | None
1313
right: bool | None
1414
stream: bool | None
15+
kizai: bool | None
1516

1617

1718
class ComputerAddresses(TypedDict):
1819
left: str
1920
right: str
2021
stream: str
22+
kizai: str
2123

2224

2325
PC_MAC_ADDRESSES: ComputerAddresses = {
2426
"left": "04:7C:16:01:41:A7",
2527
"right": "FC:34:97:BA:12:F1",
2628
"stream": "34:5A:60:A9:5F:CA",
29+
"kizai": "4C:C5:D9:4F:2D:9D",
2730
}
2831

2932
PC_IP_ADDRESSES: ComputerAddresses = {
3033
"left": "192.168.39.31",
3134
"right": "192.168.39.30",
3235
"stream": "192.168.39.32",
36+
"kizai": "192.168.39.33",
3337
}
3438

3539

@@ -55,11 +59,15 @@ async def get_computer_status() -> ComputerStatus:
5559
session.get(
5660
"https://wol.vlldev.com/check_status", params={"ip_address": PC_IP_ADDRESSES["stream"], "test_type": "icmp"}
5761
) as stream_response,
62+
session.get(
63+
"https://wol.vlldev.com/check_status", params={"ip_address": PC_IP_ADDRESSES["kizai"], "test_type": "icmp"}
64+
) as kizai_response,
5865
):
5966
left_is_wake = convert_status_str_to_bool(await left_response.text())
6067
right_is_wake = convert_status_str_to_bool(await right_response.text())
6168
stream_is_wake = convert_status_str_to_bool(await stream_response.text())
62-
return {"left": left_is_wake, "right": right_is_wake, "stream": stream_is_wake}
69+
kizai_is_wake = convert_status_str_to_bool(await kizai_response.text())
70+
return {"left": left_is_wake, "right": right_is_wake, "stream": stream_is_wake, "kizai": kizai_is_wake}
6371

6472

6573
class ComputerBootResult(Enum):

src/app/wol/view.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,19 @@ async def handle_wol_stream(self, interaction: Interaction) -> None:
5656
case ComputerBootResult.ERROR:
5757
await interaction.followup.send("エラーが発生しました。", ephemeral=True)
5858

59+
async def handle_wol_kizai(self, interaction: Interaction) -> None:
60+
await interaction.response.defer(ephemeral=True)
61+
res = await boot_computer("kizai")
62+
63+
match res:
64+
case ComputerBootResult.STARTED:
65+
self.status.set_state(lambda c: {**c, "kizai": True})
66+
await interaction.followup.send("映像機材PCの起動を開始しました。", ephemeral=True)
67+
case ComputerBootResult.CANCELED:
68+
await interaction.followup.send("映像機材PCは既に起動しています。", ephemeral=True)
69+
case ComputerBootResult.ERROR:
70+
await interaction.followup.send("エラーが発生しました。", ephemeral=True)
71+
5972
async def handle_refresh(self, interaction: Interaction) -> None:
6073
await interaction.response.defer(ephemeral=True)
6174
current_status = await get_computer_status()
@@ -84,6 +97,7 @@ def get_label(*, status: bool | None) -> str:
8497
e.add_field(name="左PC", value=get_label(status=self.status()["left"]))
8598
e.add_field(name="右PC", value=get_label(status=self.status()["right"]))
8699
e.add_field(name="配信PC", value=get_label(status=self.status()["stream"]))
100+
e.add_field(name="映像機材PC", value=get_label(status=self.status()["kizai"]))
87101

88102
return ViewObject(
89103
embeds=[e],
@@ -106,6 +120,12 @@ def get_label(*, status: bool | None) -> str:
106120
style={"color": "blurple", "disabled": self.disabled() or bool(self.status()["stream"]), "row": 0},
107121
on_click=self.handle_wol_stream,
108122
),
123+
Button(
124+
"映像機材PCを起動する",
125+
custom_id="wol_kizai",
126+
style={"color": "blurple", "disabled": self.disabled() or bool(self.status()["kizai"]), "row": 0},
127+
on_click=self.handle_wol_kizai,
128+
),
109129
Button(
110130
"表示を更新する",
111131
custom_id="wol_refresh",

0 commit comments

Comments
 (0)