2023年12月某日より、アクションカメラの「GoPro HERO12 Black Creator Edition」が我が家の装備に加わった。遊び甲斐がたっぷりありそうなこの撮影機材を家族全員が楽に存分に活用できるようにGoProサブスクリプションを契約し、GoProの充電中に、GoPro内に保存したメディアファイル (撮影した動画など) が容量無制限の専用クラウドストレージ「GoProクラウド」へ自動的にアップロードされるように設定した。たとえば4K動画を数分間撮影するとどうやらSDカード容量を数GBは消費するので、頻繁にメディアファイルをクラウドへ逃がせるようにしておくことは必然的かもしれない。
GoPro公式ストア限定 GoPro HERO12 Black クリエーターエディション + 認定SDカード 【国内正規品】
GoPro(ゴープロ)
KIOXIA(キオクシア) 旧東芝メモリ microSDXCカード 256GB 高耐久 ドライブレコーダー対応 UHS-I U3 V30 Class10 最大読出速度100MB/s 国内サポート正規品 メーカー保証2年 KLMHA256G
KIOXIA
一方、クラウドからのメディアファイルのダウンロードに関しては、GoProクラウドのメディアライブラリー https://plus.gopro.com/media-library/ には「一度にダウンロードできるのは25ファイルまで」という制限事項があったり、まず第一にGUI操作を前提とした作りとなっていてCLI派には使い勝手がいまいち。ダウンロードをバッチ処理したい自分としては色々悩ましいものがある。
そこで、GoProクラウドのダウンロード機能をCLIで扱えるツールを探してみたところ次のものを発見し、メディアファイルの一括ダウンロードが実際に行えることが分かったのでメモを残します。
上記のgpcdの公式ページを参照して手順を進める。
$ export GPCD_VERSION=$(curl -s "https://api.github.com/repos/mvisonneau/gpcd/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
$ echo ${GPCD_VERSION}
$ wget https://github.com/mvisonneau/gpcd/releases/download/${GPCD_VERSION}/gpcd_${GPCD_VERSION}_linux_amd64.deb
$ sudo dpkg -i gpcd_${GPCD_VERSION}_linux_amd64.deb
## インストールしたgpcdにpathが通っていることを確認
$ which gpcd
$ brew install mvisonneau/tap/gpcd
## インストールしたgpcdにpathが通っていることを確認
$ which gpcd
gpcdに認証情報をどのように渡すのか、公式ページには具体的な方法の記述はなさそう。私なりにやってみてうまくいった方法を記録する。
media-library/
の行を選択し、右タブで [Headers] を選択し、[Request Headers] グループの中にある、key「Cookie:」に対応しているvalue文字列 (2000文字ぐらい) をコピーするgp_access_token=XXXXX...;
のXXXXX…部分 (1200文字ぐらい) を抽出する$ export GPCD_BEARER_TOKEN=XXXXX... # XXXXX...は抽出した内容へ置き換える
$ gpcd list
$ gpcd list
LRwgeNRiRe9J3 | 2024-01-07 00:27:10 +0000 UTC | GX010132.MP4 - Video (2160p)
wTvJ3VmqhgJJj | 2024-01-06 12:21:02 +0000 UTC | GX010131.MP4 - Video (2160p)
znKsYadg9nnpg | 2024-01-06 11:37:32 +0000 UTC | GX010130.MP4 - Video (2160p)
(以下省略)
--from
と--to
オプションを併用して用いると、たとえば次のように、日本時間 (+09:00) の2024-01-04に記録したメディアファイルのみを選択して、listもしくはdownloadが可能だ$ export TMP_DATE=2024-01-04
$ gpcd --from "${TMP_DATE}T00:00:00+09:00" --to "${TMP_DATE}T23:59:59+09:00" list # 一覧表示の場合
$ gpcd --from "${TMP_DATE}T00:00:00+09:00" --to "${TMP_DATE}T23:59:59+09:00" download # ダウンロードの場合
gpcdのヘルプは次の通りとなっている。一つのアイデアとしては、上記Step-2の--from
と--to
に--local-path
を組み合わせることで、日毎のフォルダに分けて、GoProメディアファイルを自動保存していくようなバッチ処理も楽に実現できそうだ。
$ gpcd
NAME:
gpcd - download bulk medias from GoPro Cloud
USAGE:
gpcd [global options] command [command options] [arguments...]
VERSION:
0.0.1
COMMANDS:
list list available medias
download download medias
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--api-endpoint value Go Pro Cloud API endpoint (default: "https://api.gopro.com/media/") [$GPCD_API_ENDPOINT]
--local-path value where the medias should be downloaded (default: "./medias") [$GPCD_LOCAL_PATH]
--bearer-token value Used to authenticate over your account [$GPCD_BEARER_TOKEN]
--user-agent value (default: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0") [$GPCD_USER_AGENT]
--from value filter for medias captured after this date
--to value filter for medias captured before this date
--max-concurrent-downloads value (default: 8)
--help, -h show help (default: false)
--version, -v print the version (default: false)
gpcdでダウンロードする対象に「Livestream」が含まれている場合、ダウンロードURLが見つからないためか、次のようなエラーメッセージを表示してgpcd (v0.0.1) は終了してしまう。複数のメディアファイルをダウンロードしている最中であっても、その段階で終了する。Livestreamは無視して次のダウンロードに進んでくれる処理がベストなのだが、さてどうしようか。
JPdFwunuAnyNM | 2023-12-27 10:54:42 +0000 UTC | - Livestream ()
2024/01/08 20:27:46 unable to find a downloable URL for this media
GoProを使いこなすための、とても凝っているツールを紹介していると思われる次のリンクも発見した。ただし私の環境では stack install
の途中でひとつエラーが発生し、不慣れなHaskellがらみで解決方法は分からなかったため、このツールの実行までは今回試せず。