| PODBOAT(1) | PODBOAT(1) |
NAME
podboat - a podcast download manager for text terminals
SYNOPSIS
podboat [-C configfile] [-q queuefile] [-a] [-h]
DESCRIPTION
Podboat is a podcast manager for text terminals. It is a helper program to Newsboat which queues podcast downloads into a file. These queued downloads can then be download with Podboat.
OPTIONS
-h, --help
-C configfile, --config-file=configfile
-q queuefile, --queue-file=queuefile
--lock-file=lockfile
-a, --autodownload
-l loglevel, --log-level=loglevel
-d logfile, --log-file=logfile
PODCAST SUPPORT
A podcast is a media file distributed over the internet using syndication feeds such as RSS, for later playback on portable players or computers. Newsboat supports downloading, saving and streaming podcasts, though an external media player is needed for playback. This support differs a bit from other podcast aggregators or "podcatchers" in how it is done.
Podcast content is transported in RSS feeds via special tags called "enclosures". Newsboat recognizes these enclosures and stores the relevant information for every podcast item it finds in an RSS feed. Since version 2.0, it also recognizes and handles the Yahoo Media RSS extensions.
Remote APIs don’t always list those "enclosures", so podcasts might be missing from Newsboat. Such APIs are marked in the relevant section of our docs. If a note is missing but you still don’t see enclosures in Newsboat, please file an issue and we’ll get to the bottom of it!
MANAGING AUDIO FILES WITH PODBOAT
What the user can do is to add the podcast download URL to a download queue. Alternatively, Newsboat can be configured to automatically do that. This queue is stored in the queue file next to the cache.db file.
The user can then use the download manager podboat to download these files to a directory on the local filesystem. Podboat comes with the Newsboat package, and features a look and feel very close to the one of Newsboat. It also shares the same configuration file.
Podcasts that have been downloaded but haven’t been played yet remain in the queue but are marked as downloaded. You can remove them by purging them from the queue with the Shift + P key. After you’ve played a file and close Podboat, it will be removed from the queue. The downloaded file remains on the filesystem unless "delete-played-files" is enabled.
A common "use case" is to configure Newsboat to automatically enqueue newly found podcast download URLs. Then, the user reloads the podcast RSS feeds in Newsboat, and after that, uses Podboat to view the current queue, and either selectively download certain files or automatically download them all together by pressing A within Podboat.
CONFIGURATION COMMANDS
delete-played-files (parameters: [yes/no]; default value: no)
download-path (parameters: <path>; default value: ~/)
download-filename-format (parameters: <string>; default value: "%?u?%u&%Y-%b-%d-%H%M%S.unknown?")
max-downloads (parameters: <number>; default value: 1)
player (parameters: <player command>; default value: "")
podlist-format (parameters: <format>; default value: "%4i [%6dMB/%6tMB] [%5p %%] [%12K] %-20S %u → %F")
FORMAT STRINGS
Newsboat contains a powerful format string system to make it possible for the user to configure the format of various aspects of the application, such as the format of entries in the feed list or in the article list.
Format strings are similar to those that are found in the printf function in the C programming language. A format sequence begins with the % character, followed by optional alignment indication: positive numbers indicate that the text that is inserted for the sequence shall be padded on the left to a total width that is specified by the number, while negative number specify padding on the right. Followed by the padding indication comes the actual sequence identifier, which is usually a single letter. %=[width][identifier] centers the sequence, where if w=0 the whole width of the window is used.
In addition, Newsboat provides other, more powerful sequences, such as %>[char], which indicates that the text right to the sequence will be aligned right on the screen, and characters between the text on the left and the text on the right will be filled by [char]. Another powerful format is the conditional sequence, %?[char]?[format 1]&[format 2]?: if the text of the sequence identifier [char] contains any non-whitespace characters, then [format 1] will be evaluated and inserted, otherwise [format 2] will be evaluated and inserted. The & and [format 2] are optional, i.e. if the identifier’s text is empty, then an empty string will be inserted.
The following tables show what sequence identifiers are available for which format:
Table 1. Available Identifiers for feedlist-format
| Identifier | Meaning |
| d | Feed description |
| i | Feed index |
| l | Feed link |
| L | Feed RSS URL |
| n | "unread" flag field |
| S | download status |
| t | Feed title |
| T | First tag of a feed in the URLs file |
| u | "unread/total" field |
| U | "unread" field |
| c | "total" field |
While a reload-all operation is running, the download
status indicates the
download status of a feed, which can be "to be downloaded"
(indicated by "_"), "currently downloading" (indicated
by "."), successfully downloaded (indicated by " ") and
"download error" (indicated by "x").
Table 2. Available Identifiers for articlelist-format
| Identifier | Meaning |
| a | Article author |
| D | Publication date. This can be tweaked further with datetime-format |
| f | Two characters: 1) "N" if article is unread, "D" if article is deleted, a space otherwise; 2) "!" if article has flags, a space otherwise. |
| n | "unread" field |
| d | "deleted" field |
| F | Article flags |
| i | Article index |
| t | Article title |
| T | If the article list displays articles from different feeds, then this identifier contains the title of the feed to which the article belongs. |
| L | Article length |
| e | Article enclosure URL |
Table 3. Available Identifiers for selecttag-format
| Identifier | Meaning |
| i | Line’s index in the list |
| T | The tag this line corresponds to |
| f | Number of unread feeds under this tag |
| n | Number of unread articles in feeds tagged with this tag |
| u | Number of feeds tagged with this tag |
Table 4. Available Identifiers for notify-format
| Identifier | Meaning |
| n | Number of unread articles |
| f | Number of unread feeds |
| d | Number of new unread articles (i.e. that were added through the last reload) |
| D | Number of new unread feeds (i.e. that were added through the last reload) |
Table 5. Available Identifiers for podlist-format
| Identifier | Meaning |
| i | Download index |
| d | Currently downloaded size in megabytes, displays one digit of precision |
| t | Total download size in megabytes, displays one digit of precision |
| p | Downloaded precentage, displays one digit of precision |
| k | Download speed, displays two digit of precision, always in KB/s (does not include the "KB/s" text) |
| K | Download speed, displays two digit of precision, human readable (automatically switches between KB/s, MB/s, and GB/s) |
| S | Status of download, displays one of the folowing; "queued", "downloading", "ready", "canceled", "deleted", "missing", "played", "finished" or "failed" |
| u | Url of the download |
| F | Absolute filename of the download from the root directory (e.g. ~/downloads/podcast.mp3 → /home/name/downloads/podcast.mp3) |
| b | Basename of the download (e.g. /home/name/downloads/podcast.mp3 → podcast.mp3) |
Examples:
feedlist-format "%4i %n %11u %t" articlelist-format "%4i %f %D %?T?|%-17T| ?%t" notify-format "%d new articles (%n unread articles, %f unread feeds)" podlist-format "%4i [%-5p %%] %-12S %F"
Table 6. Available Identifiers for download-path and download-filename-format
| Identifier | Meaning |
| u | Filename part of the download URL. May be empty. May include a query string https://en.wikipedia.org/wiki/Query_string |
| n | Name of the podcast feed |
| N | Name of the podcast feed. Contains the original feed’s name, even when selected through a query feed |
| h | Name of the podcast feed’s hostname |
| t | Title of the podcast episode |
| e | Extension of the podcast episode |
| F | Publication date of the podcast episode formatted as yyyy-mm-dd |
| m | Month when podcast episode was published |
| b | Abbreviated month name when podcast episode was published |
| d | Day when podcast episode was published |
| H | Hour when podcast episode was published |
| M | Minute when podcast episode was published |
| S | Second when podcast episode was published |
| y | Year when podcast episode was published formatted as yy |
| Y | Year when podcast episode was published formatted as yyyy |
FILES
By default, Newsboat stores all the files in a traditional Unix
fashion, i.e.
in a "dotdir" located at ~/.newsboat. However, it also
supports a modern way, XDG Base Directory Specification
https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html,
which splits the files between the following locations:
If the newsboat directory exists under XDG_CONFIG_HOME, then Newsboat will use XDG directories (creating the data directory if necessary). Otherwise, Newsboat will default to ~/.newsboat.
If you’re currently using ~/.newsboat/ but wish to migrate to XDG directories, you should move the files as follows:
config, urls
cache.db, history.search, history.cmdline, queue
Newsboat and Podboat also create "lock files". These prevent you from starting two instances of the same program, and thus from corrupting your data. Newsboat and Podboat remove these files when you quit the program, so there is no need to copy them anywhere — just be aware of them in case you write scripts that work with cache.db or queue. By default, lock files are located as follows:
| dotdir | XDG | |
| Newsboat | ~/.newsboat/cache.db.lock | $XDG_DATA_HOME/newsboat/cache.db.lock |
| Podboat | ~/.newsboat/pb-lock.pid | $XDG_DATA_HOME/newsboat/.lock |
Newsboat places the lock file next to the cache file, so if you specify cache-file setting or pass —cache-file command-line argument, the path to the lock file will change too. Podboat’s lock can be placed elsewhere using —lock-file command-line argument.
dotfiles
~/.newsboat/queue
XDG
$XDG_DATA_HOME/newsboat/queue
Note: if the XDG_CONFIG_HOME environment variable is not set, Podboat behaves as if it was set to ~/.config. Similarly, XDG_DATA_HOME defaults to ~/.local/share.
ENVIRONMENT
BROWSER
CURL_CA_BUNDLE
This option is useful if your libcurl is built without useful certificate information, and you can’t rebuild the library yourself.
EDITOR
NO_PROXY
This variable contains a comma-separated list of hostnames, domain names, and IP addresses.
Domain names match subdomains, i.e. "example.com" also matches "foo.example.com". Domain names that start with a dot only match subdomains, e.g. ".example.com" matches "bar.example.com" but not "example.com" itself.
IPv6 addresses are written without square brackets, and are matched as strings. Thus "::1" doesn’t match "::0:1" even though this is the same address.
PAGER
TMPDIR
VISUAL
XDG_CONFIG_HOME
XDG_DATA_HOME
SEE ALSO
newsboat(1)
AUTHOR
Alexander Batischev
| 2025-12-28 |