Many people have given their "why," but I'll give another "how".
castget¹ is a simple tool that does exactly what you want, just add a feed URL and it pulls all the episodes. It has a nice catchup mode so you can add feeds that you've listened to elsewhere without pulling all the old episodes too. hpodder² is another tool I've used in the past, but I can't remember why I switched.
Depending on how much you like cobbling together your own solution html-xml-utils³ makes it incredibly easy to script a solution. For example, "curl feed | hxselect -c -s '\n' 'enclosure::attr(url)'" would list just the URLs. feedparser⁴ is a battle tested solution for processing feeds if you'd prefer a proper parsing solution over a hacky shell script(it will correctly handle different formats without any extra work for example).
Comments
Many people have given their "why," but I'll give another "how".
castget¹ is a simple tool that does exactly what you want, just add a feed URL and it pulls all the episodes. It has a nice catchup mode so you can add feeds that you've listened to elsewhere without pulling all the old episodes too. hpodder² is another tool I've used in the past, but I can't remember why I switched.
Depending on how much you like cobbling together your own solution html-xml-utils³ makes it incredibly easy to script a solution. For example, "curl feed | hxselect -c -s '\n' 'enclosure::attr(url)'" would list just the URLs. feedparser⁴ is a battle tested solution for processing feeds if you'd prefer a proper parsing solution over a hacky shell script(it will correctly handle different formats without any extra work for example).
¹ https://castget.johndal.com/
² https://github.com/jgoerzen/hpodder/
³ https://www.w3.org/Tools/HTML-XML-utils/
⁴ https://github.com/kurtmckee/feedparser
Thanks for all your suggestions! You and others have provided a lot of solutions in this thread, and I appreciate it.
I was looking at feedparser last night, and it definitely seems like the go-to for rolling my own as a learning exercise.
Cheers.