メディアライブラリを作ろう
動画はまだ準備中です。
ポイント解説:
作成するスクリプトは、結構、分量があります。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)にも対応する。 | ![]() |
上の処理は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章を読む



