প্রকল্প সম্পর্কে
# CasCap.GooglePhotosCli
Google Photos এর একটি অনানুষ্ঠানিক কমান্ড লাইন ইন্টারফেস, `googlephotos` নামক .NET গ্লোবাল টুল হিসেবে বিতরিত, যা Google Photos অ্যাকাউন্টে মিডিয়া আপলোড এবং অ্যালবাম সংগঠিত করতে ব্যবহৃত হয়।
## গুরুত্বপূর্ণ: Google ৩১ মার্চ ২০২৫ তারিখে Photos API পরিবর্তন করেছে
Google যেকোনো তৃতীয়-পক্ষের অ্যাপ্লিকেশন ব্যবহারকারীর Google Photos লাইব্রেরি দিয়ে যা করতে পারে তা মৌলিকভাবে কমাতে চলেছে। এই টুল এবং এর নিচে থাকা [CasCap.Api.GooglePhotos](https://github.com/f2calv/CasCap.Api.GooglePhotos) লাইব্রেরি সেই পরিবর্তন দ্বারা সীমাবদ্ধ:
- Library API শুধুমাত্র **এই টুলের নিজস্ব OAuth ক্লায়েন্ট দ্বারা তৈরি** অ্যালবাম এবং মিডিয়া আইটেম দেখতে পারে। আপনার অ্যাকাউন্টে ইতিমধ্যে থাকা সবকিছু এর জন্য অদৃশ্য।
- পুরো লাইব্রেরি পড়া এবং ফলস্বরূপ পুরো-লাইব্রেরি ডুপ্লিকেট সনাক্তকরণ ও ব্যাকআপ আর সম্ভব নয়।
- লাইব্রেরি API শেয়ারিং এবং শেয়ার্ড-অ্যালবাম অপারেশন সম্পূর্ণ বন্ধ করে দেওয়া হয়েছে।
- বিদ্যমান ব্যবহারকারীর মিডিয়া কেবল Picker API এর মাধ্যমে পৌঁছানো যায়, যা ব্যবহারকারীকে ইন্টারেক্টিভভাবে আইটেম নির্বাচন করতে হবে, প্রতি সেশনে একবার করে।
Version 1.0 এ পুরো-লাইব্রেরি অ্যাক্সেসের ওপর নির্ভরশীল কমান্ডগুলো সরানো হয়েছে। দেখুন [Google's API update](https://developers.google.com/photos/support/updates)।
### Version 1.0 এ বাদ দেওয়া হয়েছে
| কমান্ড | কারণ |
| --- | --- |
| `mediaitems duplicates` | ডুপ্লিকেট সনাক্তকরণের জন্য পুরো লাইব্রেরি পড়া প্রয়োজন। |
| `sync`, `albums sync` | লাইব্রেরি-ব্যাপী মেটাডেটা ক্যাশ করার কোনো অবশিষ্ট নেই। |
| ইন্টারেক্টিভ ক্রেডেনশিয়াল prompted | ক্রেডেনশিয়াল এখন কনফিগারেশন থেকে আসে; দেখুন [Configuration](#configuration)। |
## ইনস্টলেশন
টুলটি একটি [.NET global tool](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 console](https://console.cloud.google.com/) তে একটি প্রজেক্ট তৈরি করুন।
2. **APIs & Services > Library** খুলুন এবং **Google Photos Library API** সক্রিয় করুন।
3. OAuth consent screen কনফিগার করুন এবং একটি **OAuth client ID** তৈরি করুন Desktop app ধরনের।
4. Client ID এবং client secret নোট করুন; তারা নিচের কনফিগারেশনের মাধ্যমে সরবরাহ করা হবে।
সম্পূর্ণ সেটআপ নির্দেশিকা [লাইব্রেরি ডকুমেন্টেশনে](https://github.com/f2calv/CasCap.Api.GooglePhotos#google-cloud-setup) পাওয়া যায়।
## কনফিগারেশন
টুলটি `CasCap:GooglePhotosOptions` সেকশন বাঁধানো করে, যা ক্রমবর্ধমান অগ্রাধিকারে নিম্নলিখিত উৎস থেকে আসে: শিপড `appsettings.json`, কারেন্ট ওয়ার্কিং ডিরেক্টরিতে `appsettings.json`, .NET User Secrets, এবং পরিবেশ ভেরিয়েবল।
যেহেতু একটি global tool একটি রিড-অনলি স্টোরে ইনস্টল করে, তাই User Secrets অথবা পরিবেশ ভেরিয়েবল ব্যবহার করা প্রায়োগিক:
```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"
]
}
}
}
```
| Scope | প্রয়োজন |
| --- | --- |
| `AppendOnly` | `mediaitems upload`, `albums add` |
| `ReadOnlyAppCreatedData` | `albums list`, `albums download`, `mediaitems list` |
| `EditAppCreatedData` | আপলোড করা মিডিয়া আইটেম অ্যালবামে যুক্ত করতে |
কখনোই ক্লায়েন্ট সিক্রেট কমিট করবেন না। OAuth গ্র্যান্ট নিজেই `%APPDATA%/googlephotos/auth` (অথবা প্ল্যাটফর্মের সমতুল্য) তে `Google.Apis.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 আপলোড করুন, একটি নামযুক্ত অ্যালবামে, prompt ছাড়াই
googlephotos mediaitems upload -s ./photos --pattern *.jpg -t "holiday 2026" -y
# একটি ফোল্ডার গাছ আপলোড করুন, উপ-ফোল্ডার প্রতি একটি করে অ্যালবাম তৈরি করে
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 page](https://github.com/f2calv/CasCap.GooglePhotosCli/issues) তে যেকোনো কিছু উঠিয়ে ধরুন।
## লাইসেন্স
CasCap.GooglePhotosCli এর কপিরাইট © 2020 [@f2calv](https://github.com/f2calv) এর [MIT license](LICENSE) অধীনে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.