Created
January 6, 2021 13:26
-
-
Save pixelomer/8088241bc125d60519ed34d8a6dbcb0d to your computer and use it in GitHub Desktop.
Script for automatically triggering a video recording on a Switch once every 25 seconds
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import asyncio | |
import logging | |
import os | |
from aioconsole import ainput | |
from joycontrol import logging_default as log, utils | |
from joycontrol.command_line_interface import ControllerCLI | |
from joycontrol.controller import Controller | |
from joycontrol.controller_state import ControllerState, button_push, button_press, button_release | |
from joycontrol.memory import FlashMemory | |
from joycontrol.protocol import controller_protocol_factory | |
from joycontrol.server import create_hid_server | |
async def _main(): | |
spi_flash = FlashMemory() | |
controller = Controller.from_arg("PRO_CONTROLLER") | |
factory = controller_protocol_factory(controller, spi_flash=spi_flash) | |
ctl_psm, itr_psm = 17, 19 | |
transport, protocol = await create_hid_server( | |
factory, | |
reconnect_bt_addr=None, | |
ctl_psm=ctl_psm, | |
itr_psm=itr_psm | |
) | |
controller_state = protocol.get_controller_state() | |
print("Trying to connect...") | |
await controller_state.connect() | |
print("Connected.") | |
#input("Press enter to send L+R.") | |
await button_press(controller_state, 'l', 'r') | |
await button_release(controller_state, 'l', 'r') | |
try: | |
while True: | |
print("\nWaiting 25 seconds...") | |
await asyncio.sleep(25) | |
print("Ensuring connection...") | |
await controller_state.connect() | |
print("Pressing capture button...") | |
await button_press(controller_state, "capture") | |
await asyncio.sleep(1) | |
await controller_state.connect() | |
print("Releasing capture button...") | |
await button_release(controller_state, "capture") | |
finally: | |
await transport.close() | |
loop = asyncio.get_event_loop() | |
loop.run_until_complete(_main()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment