TODO:
  ☐ Handle socket disconnect
  ☐ Start/stop stream automation
    ☐ Support scheduled start/stop
      - instead of countdown for X seconds, use datetime argument
    ☐ Start
      - Countdown for X minutes is triggered and shown
  ☐ Decouple twitch chat from GHOBS
    ☐ Move anything that calls director.state from app into fgfm lib
  ☐ Restrict # of requests a user can have in the queue at once
  ☐ Room vid requests / import
    ☐ Improved interface for viewer requests
      ☐ Web interface? Twitch extension?
    ☐ Improvements
      ☐ When playing a room back, loop it at slower speeds for a few iterations
  ☐ Support adding sets of videos to the queue at once (like the entire ttas or all gold segments)
  ☐ Tool to output list of video ID's / descriptions
  ☐ Stream alerts for chat
  ☐ Rotating background images (leftside)
  ☐ Support gif's via command through gifph
    - !slowdance
    - !bender
    - !carlton
    - !weeb
  ☐ Fix commercial playing issue (switches back to scene early)
    ☐ Change $auw and $meme to queue up the videos just like the others (don't switch scenes)

Ideas:
  ☐ Web interface for viewers to issue commands -- twitch extension?!
  ☐ Support songrequests -- play through discord?

StreamWebRemote:
  - OBS Websocket Connection Mgmt
  - Stream Start/Stop/Restart
  - Video Queue Mgmt
  - Video DB Mgmt
  Users:
    - use twitch login
    - video requests
    - room requests

＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿
Archive:
 ✔ Stop @done (18-11-06 21:54) @project(TODO)
 ✔ video starting/ending/skipped @done (18-11-06 21:53) @project(TODO)
 ✔ show status changing @done (18-11-06 21:53) @project(TODO)
 ✔ Have director emit events for bots to listen to @done (18-11-06 21:53) @project(TODO)
 ✔ Auto-enable vrmode timer when show starts (listen for event) @done (18-11-06 21:53) @project(TODO)
 ✔ hide sources before switching to credits @done (18-11-06 21:41) @project(TODO)
 ✔ Support a delay for Start Streaming @done (18-11-06 21:41) @project(TODO)
 ✔ Add a $rooms alias for $room @done (18-11-06 15:05) @project(TODO)
 ✔ Remove currently playing video from vote choices @done (18-10-30 11:51) @project(TODO)
 ✔ track votes for the current playing video @done (18-10-30 11:48) @project(TODO)
 ✔ if threshold is met, skip @done (18-10-30 11:48) @project(TODO)
 ✔ config item for how many votes are required to skip @done (18-10-30 11:48) @project(TODO)
 ✔ clear votes after video finishes @done (18-10-30 11:48) @project(TODO)
 ✔ Support viewer $skip voting @done (18-10-30 11:48) @project(TODO)
 ✔ update director showStatus to 'PAUSED' @done (18-10-30 11:33) @project(TODO)
 ✔ have nextVideo check for PAUSED @done (18-10-30 11:33) @project(TODO)
 ✔ Support for $pause (pauses queue after current video finishes) @done (18-10-30 11:33) @project(TODO)
 ✔ Move vrmode timer to this bot, delete from SLCB @done (18-10-30 11:20) @project(TODO)
 ✔ Don't auto-init GHOBS or FGFM, make them on-demand @done (18-10-30 08:26) @project(TODO)
 ✔ Switch to credits with 1 minute remaining @done (18-10-30 08:15) @project(TODO)
 ✔ Stop Stream @done (18-10-30 08:15) @project(TODO)
 ✔ Stop @done (18-10-30 08:15) @project(TODO)
 ✔ Parameter for how long until the stream should end @done (18-10-30 08:15) @project(TODO)
 ✔ Fade out audio sources with 5 seconds left @done (18-10-30 08:15) @project(TODO)
 ✔ Add parameter for countdown @done (18-10-30 08:15) @project(TODO)
 ✔ Set up the queue upon init so it can be managed during startup @done (18-10-30 08:14) @project(TODO)
 ✔ Starting Soon is shown until countdown is triggered @done (18-10-26 09:44) @project(TODO)
 ✔ Start stream @done (18-10-26 09:44) @project(TODO)
 ✔ Add cooldowns @done (18-10-02 10:16) @project(TODO)
 ✔ video length @done (18-09-28 09:33) @project(TODO)
 ✔ root folder name @done (18-09-28 09:33) @project(TODO)
 ✔ room ID @done (18-09-28 09:33) @project(TODO)
 ✔ original file name @done (18-09-28 09:33) @project(TODO)
 ✔ keywords @done (18-09-28 09:33) @project(TODO)
 ✔ dungeon (parse from root folder name) @done (18-09-28 09:33) @project(TODO)
 ✔ Store the following as metadata: @done (18-09-28 09:33) @project(TODO)
 ✔ Read the Y:\media\videos\ALttP\my-vids\room-vids directory @done (18-09-28 09:33) @project(TODO)
 ✔ Go through each folder and get all the .mp4 files @done (18-09-28 09:33) @project(TODO)
 ✔ Look into just making the video loop instead of hiding at the end @done (18-09-26 18:29) @project(TODO)
 ✔ specify # of loops in video object @done (18-09-26 18:28) @project(TODO)
 ✔ change source to loop? calculate time? @done (18-09-26 18:28) @project(TODO)
 ✔ Update the queue to support looping @done (18-09-26 18:28) @project(TODO)
 ✔ Fix queue to only return first 20 or so @done (18-09-26 12:04) @project(TODO)
 ✔ Importing @done (18-09-26 08:25) @project(TODO)
 ✔ Move vods to their own config @done (18-09-25 15:40) @project(TODO)
 ✔ Modularize OBS and Twitch code @done (18-09-25 15:39) @project(TODO)
 ✔ Ability to include/exclude vods from shuffle in config @done (18-09-25 15:39) @project(TODO)
 ✔ Add random chance for room grind playlist to show for certain amount of time @done (18-09-21 12:28) @project(TODO)
 ✔ show commercials after a video length cap is hit -- show at conclusion of video @done (18-09-19 11:11) @project(TODO)
 ✔ add memes to commercial scene @done (18-09-19 11:11) @project(TODO)
 ✔ add $setcurrent support (to update text label through obs websocket instead of chat) @done (18-09-17 18:06) @project(TODO)
 ✔ remember the last X vids played, remove these from shuffle choices @done (18-09-17 14:34) @project(TODO)
