第2章「メディアライブラリへの登録〜パイプライン処理〜」

メディアライブラリを作ろう

字幕一覧(クリック)

(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形式で送信し、更新処理を実行する。
⬇️<マイライブラリ生成更新処理>
mediaLibrary.gsは、Dropbox等のメディアファイル情報をF1シートで一元管理し、その変更を自動反映するGASです。ファイル名・パスから一意なwpidexを生成し、sb付き一時ファイル名や?v=付きURL、NFC差、連続スラッシュなどを正規化して突合します。doPostはmodeにより、ライブラリのフル再構築やvideoembed.jsonのみ更新、通常の作業行追加+処理を切り替えます。processWorkingRecordはF3のパス変更履歴を反映しつつ、K=ADD行をADD2に更新し、JSON生成とライブラリ整理、pcloudidシートへの同期を行います。cleanMediaLibraryはDEL行や重複を除去し、更新日時で並べ替え、フラグをFALSEに戻します。videoembed関連は「動画パッケージ」シートから埋め込みHTMLを集約し、XserverのPHPにJSONをPOST送信します。
⬇️<メディアおよび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 起動時に自動実行される構成となっている。
ファイルパス変更処理

上の処理はMacを使った処理ですが、ChatGPTの分析では、Windowsへの移植には、以下が変更点になります。Mac、Windowsで共通して使えるGAS、AppSheetを中心に据える作り方がベターと言えます。

Windowsへの変更点
処理MacWindoowsでの代替
GUI自動処理AppleScriptPowerShell or Python GUI
クリップボードthe clipboardpyperclip (Python)
パス処理POSIXパスos.path (Python)
sed/basenameshellコマンドPythonの標準ライブラリ
GAS通信requests.postそのままOK
フォルダ監視shell + find/commPowerShell + Compare-Object
自動同期rsyncrobocopy / WinSCP
タスク自動実行Automator or cronWindowsタスクスケジューラ

次回予告:

第3章では、「YouTube(大手)に依存しないで配信するについてご紹介します。

第3章を読む


🔗 目次ページへ戻る