CASTGETRC(5)

πŸ“¦
version 2.0.1 Β· 2 versions
, in arch rolling, fedora 43, fedora 44

πŸ’– CASTGETRC(5) β€” the castget config file, bestie edition πŸ’–

okay so this is the manual page for castgetrc (that's the 5 in CASTGETRC(5), iykyk β€” section 5 means file formats, and this is the file format for castget). Pull up a chair, we're configuring a podcast downloader and it's gonna be adorable. πŸŽ€


✨ NAME ✨

castgetrc β€” the configuration file for castget πŸ¦‹


🌸 DESCRIPTION 🌸

Bestie, listen. The configuration file .castgetrc should live in your home directory. It defines how the RSS enclosure downloader castget behaves, and β€” most importantly β€” it holds the list of channels it operates on. It's giving main character energy for your whole podcast setup. πŸ‘‘

The file is built on a super simple key-value format. It's made of a channel definition for every RSS feed that castget should process. Here's how a channel definition works, step by step:

  1. It starts with a line containing a channel identifier wrapped in brackets, like [this]. You can pick the channel identifier freely β€” it's yours, name it whatever β€” and it gets used for all subsequent operations on that channel.
  2. Next come one or more key-value pairs on the form key=value that define how castget behaves when it operates on that channel.
  3. The channel definition ends when another channel definition starts, or when you hit the end of the file. That's it. No closing tag, no goodbye, she just leaves. πŸ’…

Lines beginning with a hash character (#) and blank lines are considered comments. All identifiers, keys and values should be UTF-8 encoded β€” no cap.

Key-value pairs inside a channel definition define the behaviour of castget when processing that channel. So, for example, this channel definition:

[fooc]
url=http://downloads.bbc.co.uk/podcasts/radio4/fooc/rss.xml
spool=/home/joe/podcasts

...instructs castget to use /home/joe/podcasts as a download directory when processing the channel fooc. Iconic. ✨


πŸŽ€ KEYS πŸŽ€

Every key, every detail, no skipping, periodt. πŸ’…

  • url β€” Retrieve the RSS feed from this URL. This field is mandatory for all channel definitions β€” like, you literally cannot skip it. 🚨
  • spool β€” Download enclosures to this directory. πŸ“‚
  • playlist β€” Write the fully qualified file names of all downloaded enclosures to an m3u style playlist file with this name. 🎡
  • filter β€” Restrict operation to enclosures whose URLs match this regular expression. Fancy. πŸ”
  • id3leadartist β€” Add or overwrite the lead artist (TPE1) ID3v2 tag in enclosures that support this. 🎀
  • id3contentgroup β€” Add or overwrite the content group (TIT1) ID3v2 tag in enclosures that support this. πŸ—‚οΈ
  • id3title β€” Add or overwrite the title (TIT2) ID3v2 tag in enclosures that support this. 🏷️
  • id3album β€” Add or overwrite the album (TALB) ID3v2 tag in enclosures that support this. πŸ’Ώ
  • id3contenttype β€” Add or overwrite the content type (TCON) ID3v2 tag in enclosures that support this. 🎧
  • id3year β€” Add or overwrite the year (TYER) ID3v2 tag in enclosures that support this. πŸ“…
  • id3comment β€” Add or overwrite the comment (COMM) ID3v2 tag in enclosures that support this. πŸ’¬
  • filename β€” Save downloads using the given filename pattern instead of deriving it from the URL of the enclosure. See FILENAME PATTERNS below, bestie, don't skip it. πŸ‘‡

🌈 GLOBAL CONFIGURATION 🌈

A channel definition with the channel identifier * defines a global configuration affecting all channels. So this global configuration:

[*]
id3contenttype=Podcast

...for example, is equivalent to adding the key-value pair id3contenttype=Podcast to all other channel definitions. It's the "apply to all" button of your dreams. 🫢

And important: key-value pairs in channel definitions override the global configuration. The specific one wins. Slay. πŸ‘‘


πŸ¦‹ FILENAME PATTERNS πŸ¦‹

Filename patterns can contain patterns on the form %(parameter), which get expanded to form a complete filename. Patterns are expanded once for each enclosure download and can therefore be used to generate filenames that are unique to each download. Chef's kiss. 😘

Anything that is not a pattern is treated as a literal that will be reproduced verbatim (subject to some sanity checking). The complete pathname of a download is determined by concatenating the channel's spool directory with the filename.

⚠️ Careful, bestie. Note that castget will refuse to overwrite files that already exist except when it is invoked with the -r option to resume downloads. Some RSS feeds reuse the same filename for all enclosures. In such cases the -r option will corrupt existing downloads unless you use filename patterns to construct unique filenames. That is not a drill. πŸ’€

The following patterns take information from the item element or the enclosure in the RSS feed:

  • %(date): date (by default on the format YYYY-MM-DD)
  • %(title): title

The following take information from the channel element or the enclosure in the RSS feed:

  • %(channel_title): channel title

If any of the information required by a pattern is missing from the RSS feed or is invalid, the pattern will be ignored and removed from the resulting filename. She simply ghosts it. πŸ™ˆ


πŸ’œ CHANNEL REMOVAL πŸ’œ

If a channel configuration is removed, the channel status remains the same β€” so that if the channel is subsequently re-added, any enclosures marked as already downloaded will not be downloaded again. Your bandwidth said "thank you". 🧚


⭐ NOTE ⭐

The source distribution includes a sample configuration file demonstrating all supported settings. Go peek, bestie, it's basically the cheat sheet. πŸ“


πŸŽ€ SEE ALSO πŸŽ€


πŸ‘‘ AUTHOR πŸ‘‘

Marius L. JΓΈhndal.


and that's the whole page, fr fr β€” this was castget 2.0.0, dated December 2018. πŸ’– Go forth and download your little podcasts, bestie, you're gonna eat. βœ¨πŸŽ§πŸ¦‹

πŸ“¦ where this page comes from