ハクソク

世界を動かす技術を、日本語で。

iCloudフォトダウンローダー

概要

  • iCloud Photos DownloaderはコマンドラインでiCloud写真をダウンロードできるツール
  • Linux、Windows、macOSなど複数プラットフォーム対応
  • ボランティアによる開発・メンテナンス、メンテナー募集中
  • Docker、PyPI、AUR、npmなど多様なインストール方法
  • 詳細は公式ドキュメントIssues参照

iCloud Photos Downloader:全体概要

  • iCloud Photos Downloaderは、iCloudに保存された写真をローカルにダウンロードするためのコマンドラインツール
  • ノートPC、デスクトップ、NAS環境で動作
  • GitHub Releaseから実行ファイルを直接ダウンロード可能
  • パッケージマネージャ(Docker、PyPI、AUR、npm)経由でインストール対応
  • ソースコードからのビルド・実行も可能
  • ボランティア開発、常時協力者・メンテナー募集中
  • **週1回(金曜)**の頻度で新バージョンリリースを目指す方針

iCloudアカウントの事前設定

  • AppleサーバーからACCESS_DENIEDエラーを回避するため、以下の設定が必要
    • iCloudデータのWebアクセスを有効化
      • iPhone/iPadの設定:設定 > Apple ID > iCloud > iCloudデータのWebアクセス
    • 高度なデータ保護を無効化
      • iPhone/iPadの設定:設定 > Apple ID > iCloud > 高度なデータ保護

インストールと実行方法

  • 3つの実行方法をサポート
    • GitHub Releaseから実行ファイルをダウンロードして実行
    • パッケージマネージャ(Docker、PyPI、AUR、npm)でインストール・更新
    • ソースからビルド・実行
  • 詳細は公式ドキュメント参照

主な機能

  • 3つの動作モード
    • Copy:新規写真のみダウンロード(デフォルト)
    • Sync:新規写真ダウンロード+iCloudで削除された写真のローカル削除(--auto-deleteオプション)
    • Move:新規写真ダウンロード+iCloud写真の削除(--keep-icloud-recent-daysオプション)
  • Live Photos対応(画像・動画を別ファイルで保存)
  • RAW画像(RAW+JPEG含む)対応
  • 重複写真の自動排除
  • 一括ダウンロード連続監視(--watch-with-intervalオプション)対応
  • 増分ダウンロード最適化(--until-found、--recentオプション)
  • EXIFメタデータ更新(--set-exif-datetimeオプション)
  • その他詳細は**--helpオプション**で確認

実験的機能

  • 新機能はまず実験的モードで提供、安定次第メイン機能に統合

基本的な使い方

  • iCloud写真コレクションをローカルと同期

    • コマンド例:
      icloudpd --directory /data --username my@email.address --watch-with-interval 3600
    • 注意:コマンド名はicloudpd(icloudではない)
    • ヒント:同期ロジックはコマンドラインパラメータで調整可能。icloudpd --helpで全一覧表示
  • セッション認証(2SA/2FA)

    • コマンド例:
      icloudpd --username my@email.address --password my_password --auth-only
    • ヒント:この機能で認証状態の確認・検証も可能

コントリビューション(貢献)

  • iCloud Photos Downloaderへの貢献歓迎
  • contributing guidelines(貢献ガイドライン)を参照の上、参加可能
  • Issuesも随時確認

メンテナー・協力者募集中

  • 本プロジェクトはボランティアによる開発・保守
  • メンテナーや開発協力者を常時募集
  • 興味があれば公式リポジトリIssuesから連絡推奨

Hackerたちの意見

意外だけど、iCloudから全ての写真(400GB)をダウンロードする公式な方法はないんだ。ここに、iCloudの写真を全部ダウンロードするためのオープンソースのコマンドラインツールがあるよ。
意外じゃないと思うけど。Appleはユーザーが離れないように、写真みたいな大事なものを移動しにくくしてるんじゃないかな。
それは違うよ。MacやiPhoneなら、iCloudフォトライブラリのストレージオプションを選べば、システムに最適化させるんじゃなくて、全部ダウンロードできるんだ。iCloudフォトライブラリをオフにすると、やっぱり全部ダウンロードしようとするしね。実際、僕はiCloudフォトライブラリを使わなくなったから、そうやって全部の写真をダウンロードしたんだ。
PCならそうかもね。でもMacのPhotosアプリでは、Cmd+A > ファイル > 未修正のオリジナルをエクスポートすればいいよ。
技術的にはあるよ。EUのユーザーは、Appleが持っている全てのデータを完全にエクスポートできるから、保存されている写真も含まれてる。ここからリクエストできるよ: https://privacy.apple.com/
これいいね。Androidに切り替えたいけど、8年分の写真がネックなんだ。もう嫌だ。
「もし最終的な目的がGoogleフォトに写真を移すことなら、ここを見てみてね。https://support.google.com/photos/answer/10502587?sjid=13067...」
「https://privacy.apple.comに行って、Apple IDでログインして、『データのコピーを転送するリクエスト』を選んで、『iCloudの写真と動画をGoogleフォトに』を選べばいいよ。」
ちょっとしたシェルスクリプトから定期的にこれを実行してるよ。「自動化すべき」なんだけど、時間がないんだ。⟩ cat ~/bin/icloud_download #!/bin/bash mkdir "$(pwd)"/{photos,cookies} 2> /dev/null if [[ -z "${ICLOUD_USERNAME}" ]]; then echo "need env ICLOUD_USERNAME" exit 1 fi if [[ -z "${ICLOUD_PASSWORD}" ]]; then echo "need env ICLOUD_PASSWORD" exit 1 fi podman container run -it --rm --name icloud \ -v $(pwd)/photos:/data \ -v $(pwd)/cookies:/cookies \ -e TZ=America/Boise \ icloudpd/icloudpd:latest \ icloudpd --directory /data \ --cookie-directory /cookies \ --folder-structure {:%Y/%Y-%m-%d} \ --username "${ICLOUD_USERNAME}" \ --password "${ICLOUD_PASSWORD}" \ --size original
> icloudpd/icloudpd:latest 「未確認の最新タグに生のiCloudクレデンシャルを渡すのは、問題が起こるまでは大丈夫だけど、特定のタグやハッシュに固定した方がいいよ。」
この目的にはParachute Backupが大好きだよ。 https://parachuteapps.com/parachute
これ、複数ユーザーに対応してるか知ってる?サイトで見つからないんだけど。
「今日これについて考えてたんだ。AppleがこういうことやiMessageにサードパーティの統合を全然やってないのは、ほんとにイライラする時があるよね。セカンダリのバックアップに加えて、特定のアルバムから親のフォトフレームに自動で写真を同期させたいな。いい自然の写真を撮ったら、Samsungのフレームテレビに同期できたら最高だよね。囲い込みの利点は分かるけど、特に写真やメッセージングに関しては、もう少しオープンにした方がイノベーションが生まれる気がする。」
「Parachute Backupっていうツールを使ってるよ。https://parachuteapps.com/parachute」
「無料じゃないし、macOS以外のプラットフォームには対応してないけど、App StoreのParachute[1]は、ライブラリからの写真やいろんな場所からのファイルをダウンロードするのにすごく便利だよ。」[1]: https://apps.apple.com/us/app/parachute-backup/id6748614170?...
「これが安全に使えるか確認する方法ってあるのかな?プライバシー的に変なことしないかとか。Windows用の同じようなものはある?」
「リンクありがとう!」
誰かADPと連携するか知ってる?数ヶ月前にメールしたけど、誰も返事くれなかった。関連の質問なんだけど、ADPとちゃんと連携するダウンロードソリューションってある?家族のアカウントロックアウトの問題を避けたいんだけど(あ、彼らはエコシステムを変えるつもりはないからね)。
まあまあうまく動くけど、欠点もあるよ。デスクトップ版は信頼性があるけど、macOSがシェアを長時間マウントしておくのが難しいし、リクエストでマウントするのも面倒。スケジューラーも少し変だし。iOS版は、今のところ1TB近くの個別ライブラリの増分バックアップを一晩で終わらせたことがない。再開や一時停止はうまくいくけど、なぜか未変更のオリジナルをエクスポートするのにAAEファイルが含まれないんだよね、デスクトップ版では含まれてるのに。PhotoSyncはほぼ完璧だけど、エクスポートしたものの状態を維持しようとするのが意味不明。写真の復元をサポートしてないのに。
iOSの別の選択肢としてはPhotoSyncがあるよ。いい感じで、写真から引っ張ってきて、ほぼどんなリモートサービスやローカルサーバーにもプッシュできる。NASとB2の両方にバックアップしてる。
なんでAppleは写真をダウンロードし続けるのがこんなに難しいんだろう?参考までに、iPhoneのストレージ設定で「写真を最適化」をタップして、その機能をGoogleを使わずにオフにする方法を考えてみて。トグルを見つけるのがほぼ不可能な上に、検索にも引っかからないように隠されてるし。
> 参考までに、iPhoneのストレージ設定で「写真を最適化」をタップしてみて。いつもあった場所だよ。設定 -> アプリ -> 写真で、「オリジナルをダウンロードして保持」をトグルすればいい。同じ場所がmacOSでも。そんなに魔法みたいなことじゃないよ。「photos icloud」で検索すれば、その設定にたどり着ける。
usbmuxd+ifuseを使って、写真ファイルを直接電話からコピーしてる。リモートサーバーにアップロード/ダウンロードを待つ必要もなく、電話からコンピュータに直接ケーブルでつなげるだけ。オリジナルファイルが手に入るし、コピーじゃなくて移動もできるから、電話の容量を空けられる。
このプロジェクトに感謝!うちの家族は毎年約2TBのメディアを生成してて、しばらくそんな感じだから、合計で約12TBになってる。個人メディアの長い尾だね。月60ドル払う準備はできてないけど、iCloudの思い出や他の写真機能は好き。妥協案はシンプルだよ:- docker-icloudpdを使って、iCloudの写真を時間をかけてローカルストレージにダウンロードしてる。複数アカウントを一つの場所にバックアップするのに、今のところ最も実用的な方法だと思うけど、たまに再認証が必要。- iCloudには過去約2年分のメディアだけを保持して、古いものはローカルにアーカイブした後に削除してる。- 古いアーカイブをブラウジングしたり検索するために、Immichを使ってる。これは素晴らしい自己ホスト型の個人写真クラウド体験で、現代的なアプリの感じがある。ストレージに関しては、5年以上前の写真を探すときは、速いローカルディスクが重要だと感じてる。OWC 4M2のM.2ドライブみたいなものがあれば、体験がスムーズだし、典型的なHDDベースのNASだと、古い思い出をすぐに引っ張り出したいときに遅く感じることがある。 https://github.com/boredazfcuk/docker-icloudpd
Photosには、Immichにはない機能があるの?俺は完全に後者に切り替えたけど、めっちゃ気に入ってるよ(Android使ってるけどね)。