Skip to main content

一个强大的跨平台命令行播客下载工具,支持多个播客平台和 RSS 源

Project description

   ____          _         ____
  / ___|__ _ ___| |_ ___  |  _ \  _____      ___ __
 | |   / _` / __| __/ __| | | | |/ _ \ \ /\ / / '_ \
 | |__| (_| \__ \ |_\__ \ | |_| | (_) \ V  V /| | | |
  \____\__,_|___/\__|___/ |____/ \___/ \_/\_/ |_| |_|

      Intelligent Podcast Downloader

一个强大的跨平台命令行播客下载工具,支持多个播客平台和 RSS 源。


IMPORTANT DISCLAIMER

+========================================================================+
|                          [!] IMPORTANT NOTICE                          |
+========================================================================+
|                                                                        |
|  This tool is provided for EDUCATIONAL and PERSONAL USE ONLY.         |
|                                                                        |
|  By using this software, you explicitly agree to:                     |
|                                                                        |
|  1. PERSONAL USE ONLY                                                 |
|     - Use for personal learning, research, and hobby purposes         |
|     - NOT for commercial distribution or public sharing               |
|     - NOT for any profit-making activities                            |
|                                                                        |
|  2. RESPECT COPYRIGHT LAWS                                            |
|     - All downloaded content remains property of original creators    |
|     - Respect intellectual property rights and copyright laws         |
|     - Support content creators through official channels              |
|                                                                        |
|  3. RESPECT BUSINESS ECOSYSTEMS                                       |
|     - Do not use this tool to circumvent paid subscriptions           |
|     - Support creators via official platforms and subscriptions       |
|     - Respect the business model of podcast platforms                 |
|                                                                        |
|  4. LEGAL COMPLIANCE                                                  |
|     - Comply with all applicable laws in your jurisdiction            |
|     - Comply with Terms of Service of podcast platforms               |
|     - Users are solely responsible for their usage                    |
|                                                                        |
|  PROHIBITED USES:                                                     |
|    X Commercial redistribution of downloaded content                  |
|    X Mass downloading for public sharing or distribution              |
|    X Bypassing paid subscription services                             |
|    X Any activity that harms content creators or platforms            |
|                                                                        |
|  The developers assume NO LIABILITY for misuse of this software.      |
|                                                                        |
+========================================================================+
+========================================================================+
|                          [!] 重要声明                                  |
+========================================================================+
|                                                                        |
|  本工具仅供学习、研究和个人爱好使用。                                      |
|                                                                        |
|  使用本软件即表示您明确同意:                                              |
|                                                                        |
|  1. 仅限个人使用                                                        |
|     - 用于个人学习、研究和爱好目的                                        |
|     - 禁止用于商业分发或公开传播                                          |
|     - 禁止用于任何盈利活动                                               |
|                                                                        |
|  2. 尊重版权法规                                                        |
|     - 所有下载内容归原创作者所有                                          |
|     - 尊重知识产权和版权法律                                             |
|     - 通过官方渠道支持内容创作者                                          |
|                                                                        |
|  3. 尊重商业生态                                                        |
|     - 不得使用本工具绕过付费订阅服务                                       |
|     - 通过官方平台和订阅支持创作者                                        |
|     - 尊重播客平台的商业模式                                             |
|                                                                        |
|  4. 遵守法律法规                                                        |
|     - 遵守您所在地区的所有适用法律                                        |
|     - 遵守播客平台的服务条款                                             |
|     - 用户对其使用行为承担全部责任                                        |
|                                                                        |
|  禁止用途:                                                             |
|    X 商业性再分发下载的内容                                              |
|    X 大规模下载用于公开分享或传播                                         |
|    X 绕过付费订阅服务                                                   |
|    X 任何损害内容创作者或平台利益的行为                                   |
|                                                                        |
|  开发者对本软件的滥用不承担任何责任。                                      |
|                                                                        |
+========================================================================+

Features

  • Smart Detection: Automatically identifies URL type, no need to specify downloader
  • Multi-Platform Support:
    • Apple Podcasts (single episodes and podcast pages)
    • Xiaoyuzhou
    • Standard RSS 2.0 feeds
  • Async Concurrent Downloads: Configurable concurrency for faster downloads
  • Progress Display: Real-time download progress tracking
  • Episode Selection: Download specific episodes from Apple Podcasts links
  • Smart File Management: Auto-naming, skip existing files

Installation

Option 1: Install via pip (Recommended)

pip install casts_down

Option 2: Install from source

git clone https://github.com/clemente0731/casts_down.git
cd casts_down
pip install -r requirements.txt
python casts_down.py <URL>

Usage

Unified Entry Point (Auto-detection)

# Smart detection - no need to specify platform
casts-down "<any-podcast-URL>"

# Apple Podcasts - Download single episode
casts-down "https://podcasts.apple.com/podcast/id123?i=456"

# Apple Podcasts - Download latest 3 episodes
casts-down "https://podcasts.apple.com/podcast/id123" --latest 3

# Xiaoyuzhou - Download single episode
casts-down "https://www.xiaoyuzhoufm.com/episode/xxx"

# Xiaoyuzhou - Download podcast
casts-down "https://www.xiaoyuzhoufm.com/podcast/xxx" --latest 5

# RSS Feed - Download all
casts-down "https://feeds.example.com/podcast.rss" --all

Advanced Options

# Specify output directory
casts-down "<URL>" -o ./my_podcasts

# Set concurrent downloads
casts-down "<URL>" --concurrent 5

# Skip existing files
casts-down "<URL>" --all --skip-existing

Command Line Arguments

+------------------+--------+---------------------------+------------------+
| Argument         | Short  | Description               | Default          |
+------------------+--------+---------------------------+------------------+
| --all            | -a     | Download all episodes     | False (latest)   |
| --latest N       | -l N   | Download latest N eps     | 1                |
| --output DIR     | -o DIR | Output directory          | ./podcasts       |
| --concurrent N   | -c N   | Concurrent downloads      | 3                |
| --skip-existing  | -s     | Skip existing files       | False            |
+------------------+--------+---------------------------+------------------+

Platform Support

Fully Supported

Apple Podcasts

  • Podcast homepage (download all or latest N episodes)
  • Single episode links (smart matching and download)
  • Automatic RSS extraction

Xiaoyuzhou

  • Single episode links
  • Podcast links (first 15 episodes)
  • [!] Full podcast list requires additional reverse engineering

RSS Feeds

  • Standard RSS 2.0 podcast feeds (most recommended)

Not Supported

Pocket Casts

  • Client application, does not host audio files
  • Recommendation: Download from original podcast RSS feed

Technical Stack

+------------------+--------------------------------+
| Component        | Technology                     |
+------------------+--------------------------------+
| Language         | Python 3.8+                    |
| RSS Parsing      | feedparser                     |
| HTTP Client      | aiohttp (async downloads)      |
| CLI Framework    | click                          |
| Progress Display | tqdm                           |
| HTML Parsing     | BeautifulSoup4                 |
+------------------+--------------------------------+

Examples

Download NPR's "Up First" podcast

casts-down "https://feeds.npr.org/510318/podcast.xml" --latest 3

Download from Apple Podcasts

casts-down "https://podcasts.apple.com/us/podcast/the-daily/id1200361736" --all

Batch download with skip existing

casts-down "https://feeds.example.com/podcast.rss" --all -o ./downloads --skip-existing

Notes

[!] WARNING
+------------------------------------------------------------------+
| 1. RSS Feed Expiration: Some feeds may require auth or expired   |
| 2. Audio URL Validity: Some URLs may contain time-limited tokens |
| 3. Rate Limiting: Frequent requests may trigger restrictions     |
| 4. Copyright: Ensure downloads are for personal use only         |
+------------------------------------------------------------------+

Troubleshooting

Issue: Cannot extract Apple Podcasts RSS

Solution:

  • Ensure URL format is correct (contains podcast ID)
  • Check network connection
  • Use browser developer tools to manually find RSS URL

Issue: Download timeout

Solution:

  • Reduce concurrency: --concurrent 1
  • Check network connection
  • Some servers may have rate limiting

Issue: Abnormal file names

Solution:

  • Tool automatically cleans illegal characters
  • If issues persist, please submit an Issue

License

+------------------------------------------------------------------+
| MIT License                                                      |
|                                                                  |
| Copyright (c) 2024 Casts Down Contributors                       |
+------------------------------------------------------------------+

Contributing

Contributions are welcome! Please submit Issues and Pull Requests.

Quick Test

# Test RSS parsing (no actual download)
casts-down "https://feeds.npr.org/510318/podcast.xml" --latest 1

# Test Apple Podcasts
casts-down "https://podcasts.apple.com/us/podcast/the-daily/id1200361736" --latest 1

Made with <3 by open source contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

casts_down-1.0.2.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

casts_down-1.0.2-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file casts_down-1.0.2.tar.gz.

File metadata

  • Download URL: casts_down-1.0.2.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for casts_down-1.0.2.tar.gz
Algorithm Hash digest
SHA256 228561815853cb3db8f4d4d07c7009a24bed2f55859e70582d1fc11ba2072261
MD5 14f12f4115cb2c9cc03eb90378df94a4
BLAKE2b-256 60401d5a2286d383d73f8dc1e91010bd95dee38abd6a2469ef488bc3af541b18

See more details on using hashes here.

Provenance

The following attestation bundles were made for casts_down-1.0.2.tar.gz:

Publisher: build.yml on clemente0731/casts_down

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file casts_down-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: casts_down-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for casts_down-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7904bce5b9d52b9dbb36de73cb0da19bdd4f3473a29661db1729dead39e9bff4
MD5 928b8d301632dc868852a06f2d6cbcf2
BLAKE2b-256 56a4e9542b586e04fad8914f47b4826397d953a7fcc1526d7b0ef6598e0dc4d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for casts_down-1.0.2-py3-none-any.whl:

Publisher: build.yml on clemente0731/casts_down

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page