【Mac】Dropboxリンクに一致するフルパスを見つける方法

低画質・字幕位置選択はこちら

字幕一覧(クリック)

(1)〜Dropboxリンクに一致するフルパスの検索〜
(2)アプリ「dropboxリンクに一致するフルパス検索.app」を起動します。
(3)Dropboxの共有リンクを入力します。
(4)前もって用意した、Dropboxリンクのサンプルを使います。
(5)ペーストします。
https://www.dropbox.com/scl/fi/7l9*************tqn50/130606_.jpg?rlkey=8i2wf85**************cxw&raw=1
(6)この例では、ファイル名から日本語を除いた部分が「130606_.jpg」となるフルパスを検索します。
(7)一致したファイルパス:
/Volumes/NO3_SSD/Dropbox/dropbox_1/pmedia/130606_刺身は大丈夫か.jpg
(8)なぞって右クリック→サービス→Finderに表示
(9)目的のファイルがハイライトされています。
(10)画像は「130606_刺身は大丈夫か.jpg」
(11)ここは、ジャカルタの郊外、 
(12)韓国の焼肉屋の、
(13)刺身の盛り合わせ。
(14)常夏の国で、刺身なんか大丈夫か。
(15)と心配になりますが、腹痛になったことはなかったです。
(16)すみません。どうでもいい話。
(17)以上です。

課題:

Dropboxリンクを使って画像や動画をWordPressなどのブログに貼り付けることはできますが、意外とやっている人は少ないです。その理由はいくつかあると思いますが、一番大きな理由は、Dropboxリンクの文字列を見たときに、そのファイルが自分のPCのどこにあるのか全くわからないからです。

つまり、後になって貼り付けた画像や動画を修正したい時、ローカルにあるファイルがすぐに見つからないという壁にぶつかってしまうのです。

ポイント解説:

その対処ですが、3つ考えられます。

1つ目は、ローカルで常に記録することです。

つまり、Dropboxリンクを取得するときに、そこに紐づくファイルパス(フルパスで)を記録しておくようにします。さらに、その後でファイルの名前を変えたり、フォルダを変更したりすることがあります。したがって、変更前のファイルパスと変更後のファイルパスをペアで記録しておくようにします。

2つ目は、Dropbox APIを利用する方法です。

Dropbox APIを使うと、Dropboxリンク及びローカルにあるDropboxフォルダ以下のパスがペアで取得できます。この情報を使って照合します。

3つ目は、正確さは欠けますが、推定による方法です。

そこまで丁寧な方法ではなくて、ざっくりと推測する、候補を複数ピックアップする、それだけでもかなり有用です。

APIを使わずに、

「すでにMac上にあるDropboxフォルダ内の実ファイルと照合する」だけでも、かなり役に立ちます。

今回は、一番、シンプルな3つ目の方法を紹介します。

手順:
[考え方]
Dropbox APIは使わず、すでにMac上にあるDropboxフォルダ内の実ファイルと照合する方法です。
Dropboxリンクは、”***/********?rlkey=*******&raw=1″における/と?に挟まれた赤字の部分に、ファイル名から日本語文字列を削除した部分が残されています。ローカルの対象フォルダの中のファイル名の日本語文字列を削除した部分と一致するものを抽出する方法です。

AppleScriptのアプリで、以下のような手順を行うようにします。
(1)Dropbox共有リンクの入力を受け付ける
(2)そのURLから、共有リンクに埋め込まれたファイル名(dropboxStyleName)を抽出する
(3)Macのローカルディスク(Dropboxと同期されているフォルダ)内のファイルを find コマンドで検索し、
(4)ファイル名を変換(日本語文字を – に)して、dropboxStyleName と一致するかどうかを照合する
(5)一致したファイルの ローカルパス をリストアップして表示する
以上
スクリプト:
AppleScript
dropboxリンクに一致するフルパス検索.app
下欄のスクリプトをコピペしてください。
青字の部分は、自分の条件に置き換えてください。
— ▼ 対象フォルダ、2つある場合です(サブフォルダも含めて検索)
set folder1 to “/Volumes/NO3_SSD/Dropbox/********/********
set folder2 to “/Volumes/NO3_SSD/Dropbox/********/********


repeat
— ▼ Dropboxリンクの入力
display dialog “Dropboxの共有リンクを入力してください(キャンセルで終了):” default answer “” buttons {“キャンセル”, “OK”} default button “OK”
set dropboxURL to text returned of result

— ▼ Dropboxリンクからファイル名を抽出
set dropboxStyleName to do shell script “
echo ” & quoted form of dropboxURL & ” |
sed -E ‘s|.*/([^/?]+).*|\\1|’ |
tr -d ‘\\r\\n ‘”

— ▼ ファイル名確認ダイアログを表示
display dialog “ファイル名から日本語を除いた部分が「” & dropboxStyleName & “」となるフルパスを検索します。” buttons {“OK”} default button “OK”

— ▼ Shellスクリプトで一致ファイルを検索
set shellScript to “
find ” & quoted form of folder1 & ” ” & quoted form of folder2 & ” -type f | while read f; do
  base=$(basename \”$f\”)
  converted=$(echo \”$base\” | sed -E ‘
    s/[一-龯ぁ-んァ-ンー々〆〤]+/-/g;
    s/-+/-/g;
    s/-([.][^.]+)$/\\1/;
    s/^-(.*)$/\\1/’)
  if [ \”$converted\” = ” & quoted form of dropboxStyleName & ” ]; then
    echo \”$f\”
  fi
done”

try
set matchResult to do shell script shellScript
on error
set matchResult to “”
end try

if matchResult is not “” then
set resultList to paragraphs of matchResult
set the clipboard to matchResult

if (count of resultList) > 1 then
display dialog “一致するファイルパスが複数存在します。” buttons {“OK”} default button “OK”
end if

— ▼ 結果表示と次の選択
set userChoice to button returned of (display dialog “一致したファイルパス:” & return & return & matchResult buttons {“処理を続ける”, “終了”} default button “処理を続ける”)
if userChoice is “終了” then exit repeat
else
set userChoice to button returned of (display dialog “一致するファイルは見つかりませんでした。” buttons {“処理を続ける”, “終了”} default button “処理を続ける”)
if userChoice is “終了” then exit repeat
end if
end repeat
結果:

ファイル名に、日本語を多用している場合は、複数の候補が表示されるようになっています。しかし、ファイル名には日付や連番、バージョンなどの英数字を含めるように気を配れば、複数の候補がある場合は、非常に少ないでしょう。したがって、今回の紹介の方法は、実用的であると思います。

以上