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  
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