straw-viewer (search and stream videos from youtube)

straw-viewer is a lightweight application for searching and streaming
videos from YouTube, using the API of invidio.us[2]. The project is
in its early development stages and some features are not implemented
yet.

straw-viewer is a fork of youtube-viewer that does not require a Google
API key. Usage and user interface are identical to youtube-viewer.

For playing videos, this uses mplayer, vlc, or mpv. However, the mplayer
that ships with Slackware 14.2 has some issues with straw-viewer (or
actually with youtube: the audio stream cuts out randomly, and can be
fixed by pressing the left arrow usually). Using vlc or mpv is highly
recommended.

Optional dependencies:

perl-Gtk3, perl-File-ShareDir - for gtk-straw-viewer.
perl-lwp-useragent-cached - for local cache support.
perl-JSON-XS - for faster JSON deserialization.
perl-Text-CharWidth, perl-Unicode-LineBreak - for better formatting
                                              in the terminal.
perl-Term-ReadLine-Gnu - for command editing/history in the terminal.
youtube-dl [1] - if this is present, straw-viewer will use it to detect
                 available formats for the video.

Counting optional ones, straw-viewer has over 40 dependencies. To make
life easier, there's a "straw-viewer.sqf" queue file included with this
build, which includes everything listed above.

This build always includes the command-line client (straw-viewer). For
the GTK client (gtk-straw-viewer[3]), install perl-Gtk3 and
perl-File-ShareDir before running this script. If you have them
installed but don't want gtk-straw-viewer, you can set GTK=no in the
script's environment.

Notes:

[1] A small caveat about youtube-dl: straw-viewer works without it,
    though occasionally it'll choose a lower quality than is available
    for some videos. However, if youtube-dl is present but outdated,
    straw-viewer will fail to play videos at all! If you suspect this,
    remove youtube-dl and try without it.

[2] The default API host is http://invidious.snopyta.org. If you get
    "Bad gateway" or "Too many requests" errors, try changing the
    api_host in ~/.config/straw-viewer/straw-viewer.conf or via
    the --api-host option. A list of API hosts can be found at:
    https://instances.invidio.us/

[3] To force gtk-straw-viewer to use your preferred terminal for
    downloading with wget and watching in a terminal, set
    TERMINAL in the script's environment (e.g. TERMINAL="xterm" or
    TERMINAL="urxvt").
