Project Description

Implements a customized client for viewing livestreams from Twitch.tv.

An instance of the client supports simultaneously viewing up to 4 livestreams with 3 viewing settings:

  1. a single stream with its chatroom
  2. two streams with their respective chatrooms
  3. four streams

Futhermore, the project supports viewing multiple instances of a client over multiple monitors (up to 3). Therefore, a maximum of 12 livestreams can be viewed simultaneously.

Features

Supports up to 4 livestreams simultaneously.
Multiple clients can be launched for multi-monitor support.

Read PDF for even more features.

Motivation

At the initial time of project conception, Twitch.tv did not offer a method to view multiple livestreams simultaneously.

Thus, one would have to commonly choose one of the following compromises:

  1. Open multiple browser tabs but only focus on one, potentially missing entertaining segments of the other livestreams.
  2. Open multiple browser tabs and manually organize the windows but also having to endure the tedium, especially as the number of livestreams scale.
  3. Open only one browser tab but forgo all other livestreams, completely unaware of any entertaining segments of the other livestreams.

In this regard, I conceived of the idea of a customized client, capable of viewing multiple livestreams simultaneously and being controlled effortlessly through hotkeys.

Design Goals

  • The client must be capable of viewing multiple livestreams simultaneously.
  • Hotkeys should be implemented to facilitate quick control of the client.

Benefits

  • Circumvents ads from Twitch.tv by leveraging the streamlink module
  • Integrates with my personal Twitch.tv account
  • Minimizes footprint, compared to a web browser, by embedding the mpv media player into the Qt GUI
  • Provides quick control via hotkeys, removing the need to resize or move the client by dragging
  • Allows for the alerting of livestreams under special conditions, such as when viewer count hits a desired threshold, usually indicating that a special event is occurring

Notable Milestones & Roadblocks

Dependencies

Languages

  • Python 3.8
  • AutoHotkey 1.1

Python

  • requests
  • streamlink
  • psutil
  • pyqt6
  • python-mpv
  • python-twitch-client

External

  • Libmpv
  • Chatterino 2