このプロジェクトについて

# CasCap.GooglePhotosCli Google Photosアカウントへのメディアのアップロードやアルバムの管理を行うための非公式なGoogle Photosコマンドラインインターフェイスであり、`googlephotos`という名前の.NETグローバルツールとして配布されています。 ## 重要: Googleが2025年3月31日にPhotos APIを変更しました Googleは、サードパーティ製アプリケーションがユーザーのGoogle Photosライブラリに対して実行できる機能を大幅に制限しました。このツール、およびその背後にある[CasCap.Api.GooglePhotos](https://github.com/f2calv/CasCap.Api.GooglePhotos)ライブラリはこの変更の影響を受けます。 - Library APIでは、**このツールの独自のOAuthクライアントによって作成されたアルバムとメディアアイテム**しか認識できません。アカウント内にある既存のすべてのアイテムは非表示になります。 - ライブラリ全体の読み取りができなくなるため、ライブラリ全体の重複検出やライブラリ全体のバックアップは実行できなくなります。 - Library APIによる共有および共有アルバムの操作は完全に廃止されました。 - 既存のユーザーメディアにアクセスするにはPicker APIを使用するしかなく、ユーザーが1回につき1セッションずつインタラクティブにアイテムを選択する必要があります。 バージョン1.0では、誤解を招くような部分的な結果を返す機能を残すのではなく、ライブラリ全体へのアクセスに依存していたコマンドが削除されました。[GoogleのAPIアップデート](https://developers.google.com/photos/support/updates)を参照してください。 ### バージョン1.0で削除された機能 | コマンド | 理由 | | --- | --- | | `mediaitems duplicates` | 重複検出にはライブラリ全体を読み取る必要があるため。 | | `sync`, `albums sync` | キャッシュすべきライブラリ全体のメタデータがなくなったため。 | | 対話型の認証情報プロンプト | 認証情報は設定から取得されるようになりました。[設定](#configuration)を参照してください。 | ## インストール このツールは[.NETグローバルツール](https://learn.microsoft.com/dotnet/core/tools/global-tools)として配布されています。 ```powershell dotnet tool update --global googlephotos ``` [.NET 10ランタイム](https://dotnet.microsoft.com/download/dotnet/10.0)が必要です。 ## Google Cloudの設定 1. [Google Cloudコンソール](https://console.cloud.google.com/)でプロジェクトを作成します。 2. **APIとサービス > ライブラリ**を開き、**Google Photos Library API**を有効にします。 3. OAuth同意画面を設定し、**デスクトップアプリ**タイプの**OAuthクライアントID**を作成します。 4. クライアントIDとクライアントシークレットをメモします。これらは後述の設定で指定します。 設定の詳細な手順は[ライブラリのドキュメント](https://github.com/f2calv/CasCap.Api.GooglePhotos#google-cloud-setup)に記載されています。 ## 設定 このツールは、優先度の低い順に、同梱の`appsettings.json`、現在の作業ディレクトリにある`appsettings.json`、.NETユーザーシークレット、および環境変数から`CasCap:GooglePhotosOptions`セクションをバインドします。 グローバルツールは読み取り専用のストアにインストールされるため、ユーザーシークレットまたは環境変数を使用するのが実用的です。 ```powershell $env:CasCap__GooglePhotosOptions__User = "your.email@example.com" $env:CasCap__GooglePhotosOptions__ClientId = "000000000000-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com" $env:CasCap__GooglePhotosOptions__ClientSecret = "your-client-secret" ``` または、ツールを実行する場所の隣に`appsettings.json`を配置します。 ```json { "CasCap": { "GooglePhotosOptions": { "User": "your.email@example.com", "ClientId": "000000000000-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com", "ClientSecret": "your-client-secret", "Scopes": [ "AppendOnly", "ReadOnlyAppCreatedData", "EditAppCreatedData" ] } } } ``` | スコープ | 必要な用途 | | --- | --- | | `AppendOnly` | `mediaitems upload`, `albums add` | | `ReadOnlyAppCreatedData` | `albums list`, `albums download`, `mediaitems list` | | `EditAppCreatedData` | アップロードしたメディアアイテムをアルバムに追加する | クライアントシークレットは絶対にコミットしないでください。OAuthの付与情報は`Google.Apis.Auth`によって`%APPDATA%/googlephotos/auth`(またはプラットフォームの同等パス)にキャッシュされ、`googlephotos logout`でクリアできます。 ## 使用方法 すべてのコマンドにコンテキストに応じたヘルプがあります。 ```powershell googlephotos --help googlephotos albums --help ``` ### アルバム ```powershell # このツールで作成したアルバムの一覧を表示する googlephotos albums list # 別のアルバムとタイトルが重複しているアルバムのみを表示する googlephotos albums list --duplicates # 空のアルバムを作成する googlephotos albums add -t "my album title" # アルバムのメディアアイテムをダウンロードする googlephotos albums download -t "my album title" -o ./download # リサイズ、切り抜き、EXIFを保持したコピーをダウンロードする googlephotos albums download -t "my album title" -o ./download --maxheight 100 --crop --exif --overwrite ``` ### メディアアイテム ```powershell # このツールで作成したメディアアイテムの一覧を表示する googlephotos mediaitems list # フォルダツリーをアップロードする googlephotos mediaitems upload -s ./photos # プロンプトを表示せずに、JPEGのみを指定したアルバムにアップロードする googlephotos mediaitems upload -s ./photos --pattern *.jpg -t "holiday 2026" -y # フォルダツリーをアップロードし、サブフォルダごとに1つのアルバムを作成する googlephotos mediaitems upload -s ./photos --hierarchy ``` ### サインアウト ```powershell googlephotos logout ``` ## 開発 ```powershell dotnet build CasCap.GooglePhotosCli.Debug.slnx dotnet test src/CasCap.GooglePhotosCli.Tests/CasCap.GooglePhotosCli.Tests.csproj ``` Debugソリューションはローカルのプロジェクト参照を介して`CasCap.Api.GooglePhotos`を解決するため、このリポジトリの隣に該当リポジトリがクローンされていることを前提としています。Releaseソリューションは公開されたNuGetパッケージを使用します。 ## フィードバックと問題報告 何かありましたら、[GitHubのissuesページ](https://github.com/f2calv/CasCap.GooglePhotosCli/issues)にお寄せください。 ## ライセンス CasCap.GooglePhotosCli is Copyright © 2020 [@f2calv](https://github.com/f2calv) under the [MIT license](LICENSE).