小宇宙播客下载工具「xyz-dl」の使い方と技術解説

Tool

概要

「xyz-dl」は、小宇宙FM(中国発の人気ポッドキャストプラットフォーム)向けのCLI(コマンドラインインターフェース)ダウンロードツールです。電話番号によるログイン機能があり、単一のエピソードやアルバム単位でのダウンロードをサポート。ダウンロード数の制限設定や進捗表示、メタデータのみの保存も可能です。Python 3.13以上で動作し、シンプルな操作性と柔軟なカスタマイズ性を兼ね備えています。ポッドキャストファンやコンテンツアーカイブ用途に最適なツールです。

GitHub

リポジトリの統計情報

  • スター数: 6
  • フォーク数: 1
  • ウォッチャー数: 6
  • コミット数: 3
  • ファイル数: 13
  • メインの言語: Python

主な特徴

  • 電話番号認証による小宇宙アカウントログイン対応
  • ポッドキャストの単独エピソードおよびアルバム単位の一括ダウンロード
  • ダウンロード件数の制限設定や進捗バーの表示機能を搭載
  • メタデータのみ保存やダウンロード先ディレクトリの指定が可能

技術的なポイント

xyz-dlはPython 3.13以上を前提としたコマンドラインツールで、外部依存パッケージとしてrequestsによるHTTP通信とtqdmによる進捗表示を利用しています。小宇宙FMのAPIに電話番号認証でログインする仕組みを実装し、ユーザーのアカウント情報を使って限定コンテンツの取得も可能です。

ダウンロード機能はエピソード単位とアルバム単位で別々に実装されており、APIから取得したメタデータを元にファイルURLを抽出して順次ダウンロードします。ダウンロード中はtqdmでリアルタイムの進捗バーを表示し、ユーザーに視覚的なフィードバックを提供。ダウンロード数の上限設定も可能で、大量のコンテンツを扱う際に便利です。

保存先はユーザーが自由にディレクトリを指定でき、ファイル名の命名規則はエピソードタイトルや番号を反映して整理しやすくしています。さらに、実際の音声ファイルのダウンロードを行わず、JSONなどのメタデータだけを保存するモードもあり、データ管理や解析用途に適しています。

プロジェクトはシンプルなファイル構成で、main.pyがエントリーポイント。インタラクティブモードを備え、初めての利用でも迷わず操作できる設計になっています。APIとの通信部分はapi.pyに集約されており、保守や拡張がしやすいモジュール分割がなされています。

全体として、Pythonの標準的なネットワーク通信技術とCLIインターフェース設計をうまく組み合わせ、ユーザーの利便性を重視しながらも堅牢なダウンロード機能を提供する点が特徴的です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: Gitで管理しないファイルを指定
  • .python-version: Pythonバージョン指定ファイル
  • LICENSE: ライセンス情報
  • README.md: プロジェクト概要と使用方法説明
  • api.py: 小宇宙FM APIとの通信処理を実装
  • main.py: メインの実行スクリプト、CLIインターフェース
  • config.py: 設定関連の管理(例:保存先ディレクトリ、ダウンロード制限)
  • utils.py: 補助的なユーティリティ関数群
  • requirements.txt または pyproject.toml: 依存パッケージ管理
  • その他Pythonスクリプトや設定ファイルなど合計13ファイル

まとめ

小宇宙FMのポッドキャストを効率的に保存できるPython製CLIツール。

リポジトリ情報: