【Python】YouTube字幕取得と要約を自動化する【ソフト配布・ソースコード付き】
公立高校で物理・情報を教えているphys-kenです。久しぶりに、フリーソフトを作成しました。利用場面は限られるかもしれませんが、ご興味ある方はぜひご利用ください。
作ったもの
YouTubeのURLから動画の字幕を取得し、事前登録したプロンプトとともにGeminiに送り、返答を表示するデスクトップアプリです(Gemini APIが必要です。2024.10.28現在、無料でも利用可能です)。Pythonのソースコードと、Windows11 64bitで動作確認済みのexeファイルの2つの形式で配布します。
簡単なデモ動画を作成しました。
Gemini API keyの取得方法はいろいろなサイトで見れます。例えばこのサイトなど….
作ったきっかけ
授業動画の要約のため
私の高校物理の授業では、1時間の資料をすべてClassroomの「質問」にまとめて投稿しています。『学び合い』形式で教師からの一斉講義は行っていませんが、生徒が参考にできるような授業動画を毎回添付するようにしています。今までは記事本文に目標しか書いていませんでしたが、せっかくなので授業の概要を書いたら復習がしやすいのではないかと思いました。
どうせなら生成AIにひな型を作ってもらった方が楽だと思ったので、このアプリを作りました。
「情報Ⅰ」の教材研究として
後日記事にしようと思っていますが、chromebookのcrostini仮想環境が結構便利で驚いています。Python3もTkinterも初めから入っているようで、エディタさえ入れればTkinterを使ったGUIアプリ作成の実習もできそうでした。PythonのIDLEも、microも使えました。
ということで、私も久しぶりにGUIアプリを作って勘を取り戻そうと思って作りました。でも、大半は生成AI(ChatGPT)に頼って作りました。
↓作成途中のchromebookでPythonローカル開発環境セットアップマニュアルです。あとはスクショを張るだけです。
アプリを作りながら、授業でどう扱おうか考えていました。「入出力がある関数を実装する」ところまでは生徒本人に頑張ってもらって、GUI作成については基本的に生成AIと協力しながら、「解の公式計算機」でも「税込み額計算機」でも、楽しんでやってくれればいいかなと思いました。ローカル開発可能でGUIも作れるとなると、頑張りたい生徒は青天井で頑張ってくれそうな気がしています(何人か顔が思い浮かぶ)。
「情報Ⅱ」も見据えて
いつか情報Ⅱを指導する日が来るかも…と考えると、PythonでGUIアプリを分担して作るというのは、システム設計実習としてはほどよい課題かもと、この記事を書きながら考えています。
動画内のように、htmlとかjsとかに話が広げるのは難しい気もしています。Pythonだけで情報システム実習をやる方法を、ゆっくり考えたいと思います。
使用した技術
このアプリケーションは、以下の技術を使用して構築されています。
Python: メインのプログラミング言語
Tkinter: ユーザーインターフェースの構築
YouTube Transcript API ライブラリ: YouTube字幕の取得
Gemini API: 生成AIによるテキスト生成
PyInstaller: Pythonスクリプトを実行ファイルに変換
Pyinstallerの軽量化のために、初めてPythonの仮想環境venvを使いました。以下の記事がとても参考になりました。
ダウンロードはこちら
ソフトのダウンロードページはこちらです。インターネット通信を行うアプリなので、端末のセキュリティの設定によってはうまく動かないかもしれません。
ソースコード等は、以下のGithubリポジトリにアップしています。私が作成したソースコードは、ライセンスはGPL 3.0で配布します。
余談
TkinterのGUI…
一時期Electronを書いていたせいで、Tkinterのめんどくささと古臭い伝統的なデザインにちょっとがっかりしています。もっとええ感じのGUIアプリを少し調べてみます。
ChatGPTすごすぎ&昔の自分よく頑張った
もう3年前ですが、同じ技術(Python&Tkinter&pyinstaller)でデジタル採点のフリーソフトを作りました。一人暮らしの夏休み丸々使って作りました。
リポジトリのコミット履歴を見ると「ああ、このころはChatGPTなんかなくて、全部私が手打ちでコーディングしてたな」と過去の自分をほめてあげたくなります。
ところが、今回のこのウェブアプリはアイディアから2時間でexe化まで終了しています。GeminiのAPIまわりはChatGPTだけでは解決できなくて、ライブラリを代わりに読んであげたりもしましたが、Tkinterの処理はほぼ私は手を付けていません。採点斬りを作った時は、Tkinterの画面遷移とかコンテンツの配置場所の微調整で膨大な時間を取られていたのに…。また、当時はpyinstallerの日本語ドキュメントもあまりなく、相対パスの書き方とかはかなり苦戦してたのですが、ChatGPTで一発です。しかも「なんでこのコードでうまくいくか」の解説までしてくれます。
ほんとに最後
余談が長くなってしまいました。私はエンジニアでも何でもない、日曜プログラマー(自称)なので、不勉強な点や間違った内容もある可能性があります。お気づきの点がある場合は、コメント等でご指摘いただけると私にとって勉強になります。お待ちしています。
ここまで記事をご覧くださり、ありがとございました!