メディアライブラリを作ろう
字幕一覧(クリック)
(00:00:00) 〜メディアライブラリを作ろう〜
(00:00:18) メディア用ライブラリですね。そのパイプライン処理をですね。やってみたいと思います。
(00:00:30) まずこの画面にですね。画像が入っているフォルダーがあります。
(00:00:37) 1つこれはChatGPTで作った画像ですけれどもこの画像ですね。pmediaフォルダにコピーします。
(00:00:54) 実はもうコピーしてあります。このように「鳥の群れ」のですね。写真が入ってます。
(00:01:05) 次にこのファイルの上でメディアライブラリ作成を行います。
(00:01:12) データがPythonによってGASへ送られます。
(00:01:24) ちょっと待つのですがGASへ送られました。GASにデータが正常に送信されました。
(00:01:37) OKを押します。
(00:01:40) この状態ですとどうなってるかと言うとSpreadsheetを持ってきます。
(00:01:50) そうするとですね。Spreadsheetの1番上段にですね。もう、ChatGPT今のファイルですね。それが登録されてます。
(00:02:06) 同時にこれに登録されていれば当然なんですが、
(00:02:14) メディアライブラリですね。
(00:02:16) AppSheetで作ったメディア用ライブラリの先頭にもですね。ChatGPTの画像が入ってきます。
(00:02:34) これ今現在、処理が少し時間がかかるので、
(00:02:43) 「エラー:指定されたIDのデータが見つかりません」となりますが、少し待ちます。
(00:02:51) どうでしょうか。はい再生URLから「鳥の群れ」の画像が表示されました。
(00:03:04) これは実はいくつかの再生サーバーに置いてあるんですけれども、
(00:03:11) Dropboxリンクからはこのように再生されます。
(00:03:18) それからもう一つWPエンコード後URL、これはWordPressサーバーですが、そこからもしっかり再生されます。
(00:03:32) いくつか再生サーバーがあるんですけれども、それを選択をするようになってまして、
(00:03:38) 選択番号3っていうのはですね。このWordPressサーバーから引っ張ってくることになっています。
(00:03:50) これですね。この再生URLこれをクリックするとWordPressサーバーから引っ張ってくるようになっています。今3番を選んでますからですね。
(00:04:07) このような形で処理が行われます。
(00:04:14) それでは次ですね。もう一つの改良点についてですね。説明します。
(00:04:22) 今の1つのファイルを登録したわけですね。
(00:04:28) このChatGPTimage..pngを登録したわけですけれども、
(00:04:34) このChatGPTimage..と言う抽象的な名前ですと、何のことかわからんわけですね。
(00:04:42) それでファイル名の中に具体的な例えば何の映像だとかそういうことをですね。書いておいたほうがいいですよね。
(00:04:54) ファイルの名前を変えるわけです。その場合。
(00:05:00) 名前を変えます。
(00:05:07) 具体的には日付、これはですね。これは「鳥の群れ」とします。名前を変えました。
(00:05:33) そうするとですね。中で自動処理が進んでまして、
(00:05:41) 名前を変更する前のファイルパスそれから名前を変更した後のファイルパスをデータとして保存してます。従ってそれで置き換えができるようになってます。
(00:05:56) 例えば今、ここにあるファイルですけどもしばらく放置しておきます。
(00:06:09) 実際、5分に1回の処理なんですが、ちょっと5分待つことにはなるんですが、
(00:06:17) 何もしなくていいです
(00:06:20) そうするとここがですね変わってきますので、少々お待ちください。
(00:06:31) 名前が変わりました「鳥の群れ」ですね。名前が変わってます。
(00:06:40) 名前は変わりましたが再生URLの番号ですね。識別番号は変わってません。
(00:06:50) 従って、実際このURLを使ってWordPressに記述したとしてもですね。全然それは変更しなくてもいいわけですね。
(00:07:05) こういったことが行えるようになってます。
ポイント解説:
作成するスクリプトは、結構、分量があります。ChatGPTを使い、ゆっくり進めるのがいいです。以下のスクリプトをChatGPTへコピペして、(1)「このスクリプトの解説をしてください」と、まず解説をしてもらう(2)その解説の中で、自分向けに修正する箇所を指摘して、スクリプトの記述を指示する、そのようなやり方が効率的です。表の右欄に、スクリプトをリンクします。
| パイプライン処理(画面入力をトリガーに、一品料理で一連の処理を行う) |
⬇️<マイライブラリ画面入力> Finderで選択したファイルを処理し、対応するDropbox共有リンクを自動取得して送信スクリプトに渡すAppleScript。ファイルのパスや拡張子を取得し、日本語などを除去してDropbox形式のファイル名に整形。Python仮想環境のget_dropbox_link.pyでリンクを生成し、ファイル名の整合性を確認後、send_request.pyでリンク情報を送信。 |  |
⬇️<マイライブラリDropboxAPI認証リンク取得GAS通信> DropboxのOAuth認証設定、リンク自動取得、GASとの通信を行う3本のPythonスクリプト群。 ①dropbox_auth_setup.pyはローカルHTTPサーバで認証コードを受け取り、Dropboxのアクセストークンとリフレッシュトークンを取得する。 ②get_dropbox_link.pyはリフレッシュトークンを用いてDropbox APIに接続し、指定ローカルファイルの共有リンクを取得または生成し、dl=0をraw=1に変換して出力する。 ③send_request.pyはAppleScriptから受け取ったDropboxリンクやファイル情報をGASのエンドポイントへJSON形式で送信し、更新処理を実行する。 |  |
⬇️<マイライブラリ生成更新処理> このGoogle Apps Scriptは、WordPressと連携するメディアライブラリの自動管理システムです。Webhook (`doPost`) を介して新しいメディア情報の追加や既存パスの変更通知を受け取ります。 主要機能は以下の通りです。 1. **メディア情報の一元管理**: Googleスプレッドシート(F1シート)を主データソースとし、Dropboxリンク、ファイルパス、WordPress用のURL(正規化・エンコード済み)、ユニークID(wpidex)などを自動生成・更新します。 2. **パス変更履歴の適用**: ファイルパス変更履歴シート(F3シート)を利用し、F1シートの旧パスを新パスへ自動更新します。 3. **JSONファイルの生成と同期**: F1シートのデータからWordPress連携用のJSONファイル (`dropbox_wp_library.json`) をGoogle Driveに生成・上書き保存します。 4. **動画埋め込みJSONの更新**: 別シートの動画埋め込みデータをJSON化し、外部サーバー(Xserver)へ送信して`videoembed.json`を更新します。 5. **シートの整理と重複除去**: F1シートの不要行削除、K列フラグのリセット、重複行の整理(新しい方を優先し、一部データを引き継ぐ)、更新日時順での並べ替えを行います。 6. **pCloudID連携**: F1シートの情報に基づき、pCloudID同期用シートの内容を更新し、変更があった場合は更新フラグを立てます。 `processWorkingRecord`関数が中心的な役割を担い、モードに応じた一連の処理とデータ同期を安全に実行します。多岐にわたるユーティリティ関数が処理を支援します。 |  |
⬇️<メディアおよびJSONをXserverへ更新> Dropbox → Xserver 同期用のメインスクリプトは、pmedia・mmedia・meta_gd_wp_data を Homebrew 版 rsync で転送し、SSH鍵を自動ロードして毎分同期するよう LaunchAgent から実行される。ログは /tmp と $HOME/scripts/logs に記録される。 しかし rsync が残留してフリーズすることがあるため、毎日 3:30 に自動復旧スクリプトが動作し、pmedia/mmedia 関連の rsync プロセスを検出して kill し、メインの LaunchAgent(com.xxxxxxxxm1.sync_dropbox_xserver_m1)を unload/load し直して正常状態へ戻す仕組みとなっている。 |  |
⬇️<配信サーバー切り替えリダイレクト処理> rd.phpは、指定されたidに対応するメディア情報をJSONから取得し、該当URLへ転送または中継出力するPHPスクリプト。txt・vtt・srtなど文字ファイルの場合は、文字化け防止のためサーバー側でUTF-8へ変換して直接配信する。Dropbox・Xserver・pCloudなど複数サーバーのURLを動的に切り替え、キャッシュ防止や診断表示(?diag=1)にも対応する。 |  |
| バックグラウンド処理(常時監視する) |
<ファイルパス変更処理> mmedia・pmedia フォルダを常時監視し、ファイルやフォルダの移動・リネーム(MOVED)を検出して記録する Python スクリプト。検出時には変更前・変更後パス、JST の更新時刻、更新フラグ TRUE を Google スプレッドシート(sheet1)へ追記し、その後シート全体を読み込んで (A,B) が同じ重複記録は「最も古いものだけ残す」形に正規化し、更新日時の降順で再整列して書き戻す。scripts_pub や .dropbox など特定パスは無視するフィルタを搭載。watchdog によりディレクトリを監視し続け、ログは ~/Library/Logs に記録。LaunchAgent(com.xxxxxxxx.filewatcher.plist)を用いて macOS 起動時に自動実行される構成となっている。 |
 |
<dropboxリンクの定期的自動修復> このシステムはmacOS上でDropbox共有リンクの自動巡回・修復、およびリンクの有効性チェックを行うものです。`fix_dropbox_links.py`はスプレッドシートのローカルパスを基に、共有リンクをダウンロード可能な形式(raw=1)に変換し、Mac特有の濁点問題を修正してAPI経由で最新リンクを取得します。差分があればスプレッドシートを更新しフラグを立てます。この処理は`com.XXXXXX.fix_dropbox_links.plist`により1時間ごとに自動実行されます。さらに今回追加された`check_dropbox_link.py`は、任意のDropbox共有リンクが有効か(リンク切れしていないか)をAPIを用いて直接確認し、結果をログに出力します。これらのスクリプト群により、Dropbox共有リンクの継続的な整合性維持と異常検知を自動化、手動介入を減らした堅牢な運用を実現しています。
|
 |
上の処理はMacを使った処理ですが、ChatGPTの分析では、Windowsへの移植には、以下が変更点になります。Mac、Windowsで共通して使えるGAS、AppSheetを中心に据える作り方がベターと言えます。
| Windowsへの変更点 |
| 処理 | Mac | Windoowsでの代替 |
| GUI自動処理 | AppleScript | PowerShell or Python GUI |
| クリップボード | the clipboard | pyperclip (Python) |
| パス処理 | POSIXパス | os.path (Python) |
| sed/basename | shellコマンド | Pythonの標準ライブラリ |
| GAS通信 | requests.post | そのままOK |
| フォルダ監視 | shell + find/comm | PowerShell + Compare-Object |
| 自動同期 | rsync | robocopy / WinSCP |
| タスク自動実行 | Automator or cron | Windowsタスクスケジューラ |
次回予告:
第3章では、「YouTube(大手)に依存しないで配信する」についてご紹介します。
➡ 第3章を読む
🔗 目次ページへ戻る