This is a TUI tool to monitor YouTube channels for new videos and keep track of which ones you've already watched. This tool is work in progress and some functions might not work (correctly).
- Linux (other platforms are untested and likely require additional work)
- A modern, C++17 capable compiler
- meson
- ninja
- pkg-config
- Installed (it may also be required to install separate development packages) and accesible via pkg-config:
- libcurl
- nlohmann-json (at least version 3.5.0)
- sqlite3
- termpaint
- Create a build folder.
- Configure the project by running e.g.
meson setup /path/to/build/dir
in the source directory. Seemeson setup --help
for available configuration options. - Build the application with
meson compile -C /path/to/build/dir
. - You can now start the application by running
/path/to/build/dir/yttui
(but have a look at the configuration options first). - Optionally you can install the application by running
meson install -C /path/to/build/dir
.
- Build (and optionally install) the application
- Get a YouTube API key.
- Create a configuration file in JSON format.
- You can either put it next to the application binary or in
$HOME/.config/yttui.conf
- Have a look at
yttui.conf.example
. It contains all possible configuration options and is a good place to start. - Configuration default values are described in "Configuration options".
- You can either put it next to the application binary or in
- Start the application. You can press
F1
at any time to get help andC-q
(holding down the control key and pressing q) to quit.
Option | Description | Default value | Required |
---|---|---|---|
apiKey | YouTube API Key | ✓ | |
extraHeaders | Extra HTTP headers to send to YouTube. This is a JSON array of objects containing "key" and "value" . Will be sent with each API requrest. |
[] |
✘ |
database | Path of channel/video database | $HOME/.local/share/yttui.db | ✘ |
watchCommand | Command executed to watch a video. {{vid}} will be replaced by the Id of the video to watch. |
["xdg-open", "https://youtube.com/watch?v={{vid}}"] |
✘ |
notifications | Object describing notification settings | {} |
✘ |
autoRefreshInterval | Automatically refresh all channels every X seconds (and after 30 seconds of inactivity). -1 to disable. | -1 | ✘ |
The notifications
entry can have the following sub-options:
Option | Description | Default value | Required |
---|---|---|---|
channelNewVideoCommand | Gets executed when refreshing a single channel and there is one new videos. {{channelName}} will be replaced with the name of updated channel, {{title}} with the title of the new video. |
[] |
✘ |
channelNewVideosCommand | Gets executed when refreshing a single channel and there are multiple new videos. {{channelName}} will be replaced with the name of updated channel, {{newVideos}} with the number of new videos. |
[] |
✘ |
channelsNewVideosCommand | Gets executed when refreshing multiple channels and there are new videos. {{updatedChannels}} will be replaced with the number of updated channels, {{newVideos}} with the number of new videos across all refreshed channels. |
[] |
✘ |