🦾

YouTube「後で見る」リストをNotionで整理する方法

2024/12/26に公開


Notionのデータベースに登録された後でみるリスト

はじめに

こんにちは。nkutanです!
皆さんはYoutubeの後でみる機能使ってますか?私は新しい技術の情報や動向を把握するためにYoutubeをよく使うのですが、気になるものは後でみるリストに追加しています。
動画は見切れず溜まっていく一方で、気づいたら500件を超えるリストとなっていました。
Youtubeのページから一つ一つ整理するのは限界なので、何かいい方法はないかなーと考えていました。

この記事からわかること

この記事では以下のことを紹介します:

  • たまりに溜まったYoutubeの後でみるリストを整理する方法
  • NotionとPythonを使った自動化の実例

前提条件

記事を読み進める前提です:

  • Pythonの環境構築ができていること
  • NotionAPIの基本的な知識(詳しくは公式ドキュメントを参照してください)
  • Seleniumの基本的な知識

ゴール・全体イメージ

まずは作ったシステムの全体像を見ていきましょう!

ゴール・全体イメージ

システム構成図

システム構成

このシステムは以下の要素で構成されています:

  1. Google Takeout

    • YouTubeの「後で見る」リストをCSVでダウンロード
  2. Notion API

    • データベースへの動画情報の登録
    • タイトルとリンクを管理
  3. Notionのデータベース

    • 不要な動画に対してチェックをつける
    • 削除済み動画を追跡
  4. Selenium WebDriver

    • ブラウザを自動操作
    • YouTubeの「後で見る」リストから動画を削除
    • ブラウザ操作の柔軟性と信頼性を提供
  5. Pythonスクリプト

    • get_WL_from_youtube.py: YouTubeから動画情報を取得しNotionに登録
    • delete_WL_from_youtube.py: YouTubeの「後で見る」リストから動画を削除

準備手順

1. Google TakeoutでCSVをダウンロード

  1. Google Takeoutを開きます。
  2. 「YouTubeとYouTube Music」だけを選択します。
  3. 「すべてのYouTubeデータを含む」設定から「プレイリスト」のみを選択します。
  4. 指示に従いデータをエクスポートし、CSVを取得します。

2. Notionのデータベースを作成

  1. 新しいNotionデータベースを作成します。
  2. 以下のプロパティを追加します:
    • Name(タイトル型): 動画のタイトル
    • Link(URL型): YouTube動画のURL
    • delete(チェックボックス型): 削除対象の動画にチェック
    • deleted(チェックボックス型): 削除が完了した動画を追跡

3. 環境変数の設定

  1. プロジェクトのルートディレクトリに .env ファイルを作成します。
  2. 以下の環境変数を設定します:
    NOTION_API_TOKEN="your_notion_api_token"
    NOTION_DATABASE_ID="your_notion_database_id"
    CLIENT_SECRET_FILE="client_secret.json"  # デフォルト値
    CSV_FILE="Watchlater.csv"               # デフォルト値
    
    • NOTION_API_TOKEN: Notion Integrationから取得したAPIトークン
    • NOTION_DATABASE_ID: NotionデータベースのID
    • CLIENT_SECRET_FILE: Google Cloud ConsoleからダウンロードしたOAuthクライアントIDのJSONファイル名
    • CSV_FILE: Google Takeoutからダウンロードした後で見るリストのCSVファイル名

4. Pythonスクリプトの準備

  1. Python 3.xをインストールします。
  2. 必要なライブラリをインストールします:
    pip install google-auth-oauthlib google-auth-httplib2 google-api-python-client requests python-dotenv selenium
    

使い方

Notionに登録する

  1. Google TakeoutからYouTubeの「後で見る」リストをCSVでダウンロード
  2. get_WL_from_youtube.py: YouTubeから動画情報を取得しNotionに登録
    python get_WL_from_youtube.py
    

Notionに登録された動画を削除する

  1. Notionの画面から不要な動画にdeleteチェックをつける
  2. delete_WL_from_youtube.pyを実行しYouTubeの「後で見る」リストから動画を削除
    python delete_WL_from_youtube.py
    

はまったポイント

元々YouTube Data API v3で直接後で見る動画を取得するつもりだったんですが、実行しても0件となり、調べてみると使えないみたいで、仕方なくGoogle Takeoutを使ってCSVで取得する方式に変更しました。(同じように削除でも使う予定だったんですが、同じく使えず、無理やりSeleniumを使う方式に変更しました。)

参考にした情報:

まとめ

今回はYouTubeの後で見るリストの整理という地味な作業を自動化してみました。APIの制限で初めの想定から大きく方式が変わりましたが、やりたかったことの実現はできたかなと思います!

似たような悩みを持っている方の参考になれば嬉しいです。ぜひ自分の環境に合わせてカスタマイズしてみてください!(もしもっと良い方法をご存知の方がいればメッセージいただきたいです!)

ソースコードは以下で公開しています!

https://github.com/utanutan/notion_watchlist_manager

以上です!

<<2024/12/28 追記>>
・表示される動画のページによってはうまく削除できない問題に対応中です。

Discussion