Dropboxの動画をWordPressへ貼り付ける方法

2024.5.20変更:www.dropbox.comはそのままで、dl=0→raw=1へ変更しました。
2024.5.5変更:
Dropboxリンクの書き換え方法を、www.dropbox.com→dl.dropbox.com、dl=0→raw=1へ変更しました。



改めて、災害時の損失を抑え復旧を速やかに行うことが大切と感じています。自宅サーバーを今すぐ撤去するつもりはありませんが、自宅サーバーに依存しない方向、自宅サーバーは選択肢の一つにする方向、そちらへ舵を切りたいと思います。動画再生方法のいくつかの選択肢をテストする中で、その選択肢を更に使いやすくする方法を作ってみます。なお、Google単独は、GoogleドライブからWordPressプレーヤーへ動画と字幕を同期させて引き込む方法は、基本的には困難なようですので、対象から除きました。

No1 Vimeo単独

VimeoはYouTubeと同様にトランスコードされてストリーミング再生されるので、停滞が非常に少ないです。Vimeoは、動画の、まるごと差し替えがOK、何回でも上書きアップロードができます。

動画ファイル字幕ファイル初期画面ファイル
Vimeo◎◎
(Vimeoサイトに
アップロードする)
◎
(動画からショットするか、
Vimeoにアップロードする)
Dropbox
Google
自宅サーバー
外部サーバー
(Xserver)

注:動画の中で、書き換え方法を、dl=0→raw=1としていますが、www.dropbox.com→dl.dropbox.com dl=0→raw=1へ変更しています。

動画を別ページで表示します(ここをクリック)。

Dropbox - File Deleted - Simplify your life
No2 Dropbox単独

Dropboxは、ブログを補足するための短い簡潔なビデオが適しています。ニッチに役立つことが目的なので、集中アクセスは殆どないと想定しますが、一般向けの内容の場合はVimeoを使います。Dropboxの再生のスムーズさは、WiFi環境であれば、少々待ち時間はありますが、問題なく視聴できると思います。但しスマホで4Gセルラーでの視聴は、時間帯によっては困難かも知れません。特に昼休み。仕事場でWiFiや有線LANでパソコンを使っていた人が、昼休みになると一斉にスマホを使い出すので、昼休みは困難かも知れません。この動画は476MBと大きいサイズです。更新方法は、MacにあるDropboxにリンクしたローカルファイルを上書き保存するだけです。

動画ファイル字幕ファイル初期画面ファイル
Vimeo
Dropbox○
dl=0 → raw=1
www.dropbox.com →dl.dropbox.com
◎
dl=0 → raw=1
www.dropbox.com →dl.dropbox.com
Google
自宅サーバー
外部サーバー(Xserver)◎
直接アップロード
字幕ファイルは、WordPressブログを発信しているサーバー内に置く。

注:動画の中で、書き換え方法を、dl=0→raw=1としていますが、www.dropbox.com→dl.dropbox.com dl=0→raw=1へ変更しています。

Dropbox - File Deleted - Simplify your life
No3 自宅単独
動画ファイル字幕ファイル初期画面ファイル
Vimeo
Dropbox
Google
自宅サーバー○◎
外部サーバー
(Xserver)
◎
直接アップロード
字幕ファイルは、WordPressブログを発信しているサーバー内に置く。

Dropboxより非力です。過去の投稿で紹介してきた通り、一般には、476MBという大きい動画を扱うのは無理クリですが、あえて掲載しました。WiFi環境で、高速度なら、視聴できるかも知れません。場合によってはDropboxよりサクサク動くこともあります。更新方法は、MacにあるDropboxにリンクしたローカルファイル(実はWordPressフォルダとも同期させている)を上書き保存するだけです。

注:動画の中で、書き換え方法を、dl=0→raw=1としていますが、www.dropbox.com→dl.dropbox.com dl=0→raw=1へ変更しています。

Dropbox - File Deleted - Simplify your life

No1~No3と比較してきましたが、現在、安定度に優れるのはNo1のVimeoが第1位、No2のDropbox単独が第2位です。扱い易さは、圧倒的にNo3の自宅単独です。実はこの3つ以外にも、Dropbox(動画、字幕) と自宅(初期画面)、Dropbox(動画、字幕) とGoogleフォト(初期画面)、Dropbox(動画、字幕) と外部(初期画面)についてテストをしましたが、今一つ不安定なことと操作が複雑になることから割愛しました。
しかし、今回、改めて考察するキッカケになった災害リスク。これを考えると、自宅のWebサーバーに比重を置くのは問題といえるでしょう。

従って、今回、「No2 Dropbox単独を採用していきます。10分未満の簡単編集でマニアックなものはDropbox、ファイルが重そうな10分以上あるいは一般向け配信のものはVimeoという使い分けをイメージしています。さあどうかな。

Google図形描画

ポイント解説

1 動画の中に登場するAppleScriptの紹介

(1)Dropboxの共有リンクをWordPress貼り付け用に変換するクイックアクションのAppleScriptは、以下です。

コード変換の方法は、

URLの記述の中の

“www.dropbox.com” を”dl.dropbox.com”へ置き換える。

“dl=0” を”raw=1″へ置き換える。

を使っています。なお、拡張子に関係なく扱えています。

DropboxのURLを変換するAppleスクリプト

「AppleScriptを実行」を挿入

-- DropboxのURLを変換するスクリプト

-- 3−1 ベースとなるDropboxの共有URLを一時的に保管する。
set baseURL to the clipboard
set tempURL to ""

-- 共有URLが存在するか確認
if baseURL is not equal to "" then
	
	-- 3−1 クリップボードの結果をtempURLへ置き換える。
	set tempURL to baseURL
	
	-- 3−2 URLの記述の中の "www.dropbox.com" を "dl.dropbox.com" へ置き換える。
	-- set tempURL to replaceText("www.dropbox.com", "dl.dropbox.com", baseURL)
	
	-- 3−3 URLの記述の中の "dl=0" を"raw=1"へ置き換える。
	set tempURL to replaceText("dl=0", "raw=1", tempURL)
	
	-- 3−4 クリップボードに保管する。「クリップボードにWordPress貼り付け用URLをコピーしました。」と表示する。
	set the clipboard to tempURL
	display dialog "クリップボードにWordPress貼り付け用URLをコピーしました。"
else
	display dialog "共有URLが見つかりません。"
end if

-- 文字列中の指定されたテキストを置き換える関数
on replaceText(find, replace, sourceText)
	set text item delimiters to find
	set sourceText to text items of sourceText
	set text item delimiters to replace
	set sourceText to sourceText as text
	set text item delimiters to ""
	return sourceText
end replaceText

(2)WordPress動画貼り付けコード生成用アプリのAppleScriptは以下です。

-- スクリプトのテンプレート
set scriptTemplate to "<figure class=\"wp-block-video aligncenter\">
<video controls
poster=\"%poster%\"
src=\"%video%\" 
playsinline=\"\">
<track default=\"\" 
src=\"%subtitles%\" 
label=\"日本語\" srclang=\"ja\" kind=\"subtitles\">
</video>
<figcaption>%videoDescription%
</figcaption>
</figure>
[dynamic_external_html url=\"%subtitle_list%\"]"

-- ダイアログでユーザーに入力を求める
set posterURL to text returned of (display dialog "<WordPress動画貼り付けコードを生成> 開始画面の画像のURLを入力してください(省略可)。" default answer "")
set videoURL to text returned of (display dialog "<WordPress動画貼り付けコードを生成> 動画本体のURLを入力してください(省略可)。" default answer "")
set subtitlesURL to text returned of (display dialog "<WordPress動画貼り付けコードを生成> 字幕ファイルのURLを入力してください(省略可)。" default answer "")
set videoDescription to text returned of (display dialog "<WordPress動画貼り付けコードを生成> 動画の説明を記入ください(省略可)。※先頭の文字に小文字の< >は不可。" default answer "")
set subtitleListURL to text returned of (display dialog "<WordPress動画貼り付けコードを生成> 字幕一覧のURLを入力してください(省略可)。" default answer "")

-- スクリプトのテンプレートをユーザーの入力で置き換える
set customHTML to scriptTemplate
set customHTML to my replaceText(customHTML, "%poster%", posterURL)
set customHTML to my replaceText(customHTML, "%video%", videoURL)
set customHTML to my replaceText(customHTML, "%subtitles%", subtitlesURL)
set customHTML to my replaceText(customHTML, "%videoDescription%", videoDescription)
set customHTML to my replaceText(customHTML, "%subtitle_list%", subtitleListURL)

-- 置換用の関数
on replaceText(originalText, searchString, replacementString)
	set AppleScript's text item delimiters to searchString
	set textItems to text items of originalText
	set AppleScript's text item delimiters to replacementString
	set replacedText to textItems as text
	set AppleScript's text item delimiters to ""
	return replacedText
end replaceText

-- 結果を表示
display dialog customHTML

-- 結果をクリップボードにコピー
set the clipboard to customHTML
display dialog "この内容をクリップボードにコピーしました。"

なお、後日、字幕一覧のデータの投稿内引き込みを追加しました。WordPressのfunction.phpへ以下を追加ください。

<?php
// 外部テキストを取得する関数
function fetch_dynamic_external_html_content($atts) {
    // ショートコードの引数を定義
    $attributes = shortcode_atts(array(
        'url' => '' // URLを指定する
    ), $atts);

    $url = $attributes['url'];
    
    // URLが指定されていない場合の処理
    if (empty($url)) {
        return 'URLが指定されていません。';
    }

    // 外部URLからデータを取得
    $response = wp_remote_get($url);

    // エラーチェック
    if (is_wp_error($response)) {
        return 'テキストの読み込みに失敗しました。';
    }

    // 取得したデータの処理
    $body = wp_remote_retrieve_body($response);
    return $body; // HTMLとしてそのまま返す
}

// ショートコードを作成
function display_dynamic_external_html($atts) {
    return fetch_dynamic_external_html_content($atts);
}
add_shortcode('dynamic_external_html', 'display_dynamic_external_html');

?>

上の2つのAppleScriptは、汎用性があります。

例えば、自宅サーバー用のWordPressのカスタムhtml記述については、URLはランダムな文字列を埋め込むことなく、素直なディレクトリの記述になっているので、(2)だけ使います。

2 ChatGPTの活用

上のAppleScriptですが、実は、ChatGPT(無料版の利用)の力を借りています。私は、「指示書を書いて、結果を検証して、間違いを指摘して訂正を求める」だけです。ChatGPTは、プログラミングは得意な分野だと思います。私は、特に活用法をどこかで学んだことはありませんが、質疑応答を、「解決して欲しい問題を書く、何を使って、どのような手順で(手順1 手順2 、、)、プログラミング記述して欲しいかを書く」という流れで繰り返すことができます。但し、即座に正しい解法になることはまずありません。出てきたエラーをそのまま伝えて、訂正を依頼する、それを、5〜6回繰り返して、辿り着く感じです。隘路に入ったためスタートに戻ることも、ままあります。

3 マウスの左を3回クリック

動画の中で登場する、マウスの左3回クリック、トリプルクリックは、このブログをご覧の方はご存知のことと思いますが、紹介します。

<マウスの左を3回クリック>

4 2023年12月にDropboxリンクの構造が変更。個々のコンテンツ単位で制限管理ができる仕組みへ移行。

DropboxリンクのURLですが、以前は”https://……..?”まででした。2023年12月にrlkey=以降が追加になっています。トラッキング追跡のためか何らかの異常回避、情報収集のためでしょうか。ファイル単位でアクセス制限ができるようになるのかも知れません。いずれにしても、何らかの安全対策だと思います。 自宅サーバーは、サーバー単位か、そこまで細かく出来ていないので、Dropboxは一歩も二歩も進んでいます。

Dropboxヘルプセンターにrlkeyを導入すること及び利用方法(レンダリングの強制 )の説明があります。この中で、ブラウザで直接画像を表示するには、つまりWordPressなどでリンク表示する場合は、raw=1を使ってリダイレクトをさせて使用するように指示が書かれています。まだ移行が完了したとはしていないので、今後とも何らかの仕様の変更があるかも知れません。ウオッチする必要があります。

5 Dropboxリンクを使うならファイル名は英数字で作るのが基本。

Dropboxリンクは、ファイル名を変えても、フォルダを移動しても、変わりません。”https://ランダムな文字列/ファイル名?rlkey=ランダムな文字列“となっています。このファイル名のところですが、日本語の部分が削除されます。ですから、ファイル名は、英数字だけでユニークな文字列をまず書いて、私は年月日プラス連番がいいと思いますが、そこに少しだけ短く日本語を加える書き方がよさそうです。

6 ダウンロードを要求される問題。

Dropboxリンクの末尾をraw=1に置き換えたURLを、WordPressの投稿中の文字列にリンクして再生しようとすると、ダウンロードを要求される場合があります。Dropboxはクラウドストレージが本業であって、データを受け渡すのが本業。だから、動画や画像も、ビジネス上のファイルのやり取りと同様に、利用者が一度自分のフォルダへダウンロードして、その後で、そのファイルを再生する。それが基本だろうと思います。しかしながら私のように、個人のWeb配信に使う場合は、ダウンロードを要求されるなら、それは不便過ぎて利用できないです。そこで、そのような個人的な小規模の発信者に対して、ランダム生成した非常に長いURLアドレスへリダイレクトするなら利用を可能にする、アクセスが集中するようなら視聴制限を加える、そうした条件の下で利用を許可しているということになります。

ともかく、間違いないのは、Dropbox動画ごとに、それを貼り付けた独立ページ(固定ページ)を自分で作ることです。そしてその独立ページをWordPressの文字列にリンク。そうすればWindows/Macほかでもダウンロードを要求されないでしょう。

7 動的トグル

小さな工夫の紹介ですが、上のスクリプトのところで、「字幕一覧のデータの投稿内引き込みを追加した….」と記述しましたが、これの具体例が、以下のトグルです。

Dropbox - File Deleted - Simplify your life

上の3つの動画の下部に挿入した字幕一覧のトグルと同じものです。このtxtファイルは、Dropboxの中にあります。上に掲載のfunction.phpをコピペしたあと、

[dynamic_external_html url=""]

上をカスタムhtmlに記述して、url=””のところに当記事で説明した方法で変更したDropboxリンクを挿入します。Dropboxにあるこのtxtファイルを変更すると、全てのこの字幕一覧の表示が変更されます。当たり前といえばそうなのですが、なかなか便利です。動的トグルと呼んでおきます。

8 直接リンクには3つのサーバーがあるが、不安定であり、モニタリング要。

Dropboxから画像を直接リンクする方法は、正直、不安定です。以下に、同じ画像を、DropboxのURLをwww.dropbox.com(変更なし)の場合、dl.dropbox.comの場合、dl.dropboxusercontent.comの場合、を並べます。数日様子を見ていますが、www.dropbox.com(変更なし)がほぼ常に表示されています。これの特徴は、別のトークンURLに書き換えられて表示されるという2段階になっています。状況をウオッチしていきます。
2024.5.5時点で、www.dropbox.com raw=1は表示不可、dl.dropbox.com raw=1は表示可能となっています。

https://dl.dropbox.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&raw=1
https://dl.dropboxusercontent.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&raw=1
https://www.dropbox.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&raw=1