第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でリンク情報を送信。
⬇️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 Driveのdropbox_wp_library.jsonをmd5で差分確認し、安全に取得・保存。F2(シート1)から公開データを読み、videoct.json(本番同構造・末尾改行)とvideoembed.json(公開・必須項目チェック、video2任意)を生成。upload_secure_json.pyは3 JSONをUTF-8検証しSHA-256差分比較のうえ一時名→原子的反映でXserverの/_secure/wp_jsonへ配置。必要時のみGDrive同期可。LaunchAgentが30秒毎に起動。
⬇️NAS上の/volume1/dropbox_1を基点に、pmedia、mmedia、gd_wp_dataの各フォルダをリモートサーバへ同期するスクリプト。rsyncをSSHポート10022経由で実行し、削除やパーミッション設定を含む完全同期を行う。@esDirやテスト用JSON、dropbox_wp_library.jsonは転送対象外。エラーのみ各ログファイルに記録し、処理間に1秒の待機を挟む。
⬇️実メディアデータを自宅サーバーへ送り込む処理CloudSync
(SynologyNASのアプリ。自宅サーバーもSynologyNASを使っている。Dropboxの同期を介して連携する。)
⬇️rd.phpは、指定されたidに対応するメディア情報をJSONから取得し、該当URLへ転送または中継出力するPHPスクリプト。txt・vtt・srtなど文字ファイルの場合は、文字化け防止のためサーバー側でUTF-8へ変換して直接配信する。Dropbox・Synology・pCloudなど複数サーバーのURLを動的に切り替え、キャッシュ防止や診断表示(?diag=1)にも対応する。
バックグラウンド処理(常時監視する)
mmediaおよびpmediaフォルダを監視し、ファイルやフォルダの移動・リネーム(MOVED)を検出してGoogleスプレッドシートに記録するPythonスクリプト。検出時には[変更前パス、変更後パス、更新日時(JST)、更新フラグ]を追記し、重複する(A,B)ペアは古い方のみ残して更新日時の降順に整列する。認証はサービスアカウントJSONを使用し、ログを~/Library/Logsに出力。watchdogで監視、gspreadでシート操作を行い、LaunchAgentのplistで自動起動・常駐動作する。
ファイルパス変更処理

上の処理は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章を読む


🔗 目次ページへ戻る