北航(BUAA)Classroom PPT ダウンローダー

Tool

概要

北航(BUAA)のオンライン講義プラットフォーム「Classroom / ZhiXue」にアップロードされたPPT資料を自動取得するためのシンプルなPythonプログラムです。READMEでは「Protocol Edition」として、Requestsのセッション管理(requests.Session)とBeautifulSoupを利用したHTMLパースを明記しており、Python 3.8+環境下で軽量に動作することを目標にしています。主な用途は、講義資料が配布者側でダウンロード制限されている場合や、手作業での保存が煩雑な多数のPPTファイルをまとめて取得したい場合の自動化です。スクリプト本体は universe_v2.py に集約されており、用途に応じて認証情報(クッキーやログイン情報)の利用、あるいは手動でのセッション作成が想定されます(約300字)。

GitHub

リポジトリの統計情報

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

主な特徴

  • 軽量設計:依存は主に requests と BeautifulSoup(bs4)で、追加ライブラリが少ない。
  • セッション駆動:requests.Session を使いクッキーや認証を維持してリクエストを行う設計。
  • 汎用的なHTMLパース:BeautifulSoupで講義ページを解析し、PPT/PPTXなどの資料リンクを抽出。
  • MITライセンス:自由に利用・改変可能で、学内利用や個人利用に適する。

技術的なポイント

このプロジェクトは「軽量なスクレイピング+ダウンローダー」として設計されており、READMEにある通り Requests(Session)と BeautifulSoup による実装が核です。想定される動作フローは次の通りです。まずrequests.Sessionを生成し、必要に応じてログイン処理や事前に取得したクッキーをセッションに組み込みます。これにより同一セッション内でクッキーや認証ヘッダが維持され、複数ページにまたがる取得が可能になります。次に対象の講義ページを取得し、BeautifulSoupでHTMLを解析、スライド資料(拡張子が .ppt/.pptx/.pdf 等)のアンカータグや埋め込み要素を探索してダウンロードURLを収集します。取得したURLは絶対パス化やRefererヘッダの付与、必要に応じたヘッダ(User-Agent など)の設定を行ったうえでストリーミングダウンロードし、ファイル名をサニタイズしてローカルに保存します。

技術上の注意点としては、プラットフォーム側の認証方式(フォームログイン、トークン、SAML/SSO等)や動的に生成されるリンクに対する対応、CSRFトークンの扱い、レート制限やアクセスブロックへの配慮が挙げられます。READMEのバッジからPython 3.8+を前提にしているため、型ヒントや一部の標準ライブラリ機能を利用している可能性があります。また、安定性を高めるためにはエラー処理(ネットワーク失敗、途中断、重複ファイルチェック)、ログ出力、再試行ロジック、タイムアウト設定が重要です。将来的な拡張案として、並列ダウンロード(スレッド/非同期)、セレクタの外部化(設定ファイルによるカスタムCSS/XPath)、GUIやCLI引数による実行制御、ダウンロード済みメタデータの保存(JSON/SQLite)などが考えられます。ライセンスはMITのため、教育目的での改変や配布が容易ですが、スクレイピング対象の利用規約や著作権、学内ポリシーには注意が必要です。(700字以上の詳細説明)

プロジェクトの構成

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

  • README.md: file
  • universe_v2.py: file

(universe_v2.py がメイン実行スクリプト。ここにセッション生成、ページ取得、リンク抽出、ダウンロード処理が実装されている想定。)

まとめ

軽量で実用的な北航Classroom向けPPT自動取得ツール。小規模なカスタマイズで即利用可能。

リポジトリ情報:

READMEの抜粋:

🎓 BUAA Classroom PPT Exporter (Protocol Edition)

Python Requests BS4 License

专为北航 Classroom 网课平台打造的极致轻量化 P…