1. Prerequisites and Overall Design Philosophy

To get started, I assume you have your own Plex server. In order to get started with Plex, start at the Plex website and put your media into it. Next, follow the Installation instructions. Join or identify the music, television, and movie based services described in Section 2.1, and server settings described in Section 2.2. Use howdy_config_gui to save your services and settings information, and then you will be good to go in using the ~25 or so command line and graphical user interface (GUI) tools to manage your Plex server.

1.1. Prerequisites

You will need to have PyQt5, PyQtWebEngine, and sshpass. On Debian based systems (such as Ubuntu. Mint, or Debian), you can install PyQt5 and sshpass with the following command (as sudo or root).

sudo apt install python3-pyqt5 python3-pyqt5.qtwebengine sshpass

Equivalent commands to install PyQt5 and sshpass exist on Red Hat based systems, such as Fedora or CentOS. An even easier way to install the latest version of PyQt5 on your user account is with this command,

pip3 install --user pyqt5

Note

The installation of PyQtWebEngine is relatively difficult. On my Ubuntu 20.04 machine, I had to run sudo apt install python3-pyqt5.qtwebengine to get this to work. More portable and universal commands, such as pip3 install --user pyqtwebengine, will install PyQtWebEngine, but imports may not work.

1.2. Installation

Since this package has been setup-ified, installation is very easy. Just cd into the howdy directory, and run,

python3 setup.py install --user

Or you can run pip from that directory. This installation process is especially suited for active development; you make changes to your code, and interactive tests of the API or of the executables are immediately reflected.

pip3 install --user -e .

Or, if you feel ridiculously brave, you can install from the GitHub URL.

pip3 install --user git+https://github.com/tanimislam/howdy.git#egg=howdy

1.3. Common Design Philosophies and Features for Command Line and GUIs

Since I am forced to use the tools I developed to manage my Plex server, my command line interfaces (CLIs) and GUIs share common features that I hope make these tools discoverable and more easily debuggable.

The CLIs are programmed with argparse's ArgumentParser( ) and have a comprehensive help that can be accessed via <cli_tool> -h, where <cli_tool> refers to the the specific Python CLI.

The GUI tools all share common features. One can take a PNG screenshot of each widget and sub-widget with the Shift+Ctrl+P (or Shift+Command+P on Mac OS X computers) key combination. This helps to debug issues that may appear in the GUI, and helps to create useful documentation. I always try to put help screens into my GUIs, although not all the GUIs have working help dialogs.

Many of the GUIs and CLIs can be run with a --noverify option to access SSL protected URLs and services without verification, which is needed when running in more restricted environments.

In fact, here is a summary of the 25 CLI’s and GUI’s currently in Howdy. The ☑ after the name (or name and icon) means that I have completed the documentation for that CLI or GUI.

Functionality

CLI

GUI

core

howdy_core_cli

howdy_config_gui_icon howdy_config_gui

howdy_deluge_console

howdy_core_gui_icon howdy_core_gui

howdy_resynclibs

howdy_store_credentials

rsync_subproc

howdy_core_plex_download

tv

get_tv_batch

howdy_tv_gui_icon howdy_tv_gui

get_tv_tor

howdy_tv_epinfo

howdy_tv_epname

howdy_tv_futureshows

howdy_tv_plots

howdy_tv_excludes

movie

get_mov_tor

howdy_movie_totgui_icon howdy_movie_totgui

music

howdy_music_album

howdy_music_metafill

howdy_music_songs

upload_to_gmusic

email

howdy_email_notif

howdy_email_gui_icon howdy_email_gui

howdy_email_demo_gui_icon howdy_email_demo_gui