عن المشروع

# CasCap.GooglePhotosCli واجهة سطر أوامر غير رسمية لصور جوجل، موزعة كأداة عالمية لـ .NET تُسمى `googlephotos`، تُستخدم لتحميل الوسائط وتنظيم الألبومات في حساب صور جوجل. ## مهم: قامت جوجل بتغيير واجهات برمجة تطبيقات الصور في 31 مارس 2025 قامت جوجل بتقليص كبير للصلاحيات التي يمكن لأي تطبيق تابع لجهة خارجية الحصول عليها فيما يتعلق بمكتبة صور جوجل الخاصة بالمستخدم. هذه الأداة، والمكتبة الأساسية [CasCap.Api.GooglePhotos](https://github.com/f2calv/CasCap.Api.GooglePhotos) التي تعتمد عليها، مقيدة بهذه التغييرات: - يمكن لواجهة برمجة تطبيقات المكتبة رؤية **الألبومات والوسائط التي ينشئها عميل OAuth الخاص بهذه الأداة فقط**. كل ما هو موجود بالفعل في حسابك غير مرئي لها. - لم يعد من الممكن قراءة المكتبة بالكامل، وبالتالي لم يعد من الممكن اكتشاف التكرارات على مستوى المكتبة بالكامل أو إجراء نسخ احتياطي كامل للمكتبة. - تم سحب عمليات مشاركة واجهة برمجة تطبيقات المكتبة والألبومات المشتركة بالكامل. - لا يمكن الوصول إلى الوسائط الموجودة للمستخدم إلا من خلال واجهة برمجة تطبيقات Picker، والتي تتطلب من المستخدم تحديد العناصر بشكل تفاعلي، في جلسة واحدة في كل مرة. قام الإصدار 1.0 بإزالة الأوامر التي كانت تعتمد على الوصول إلى المكتبة بالكامل، بدلاً من تركها تعيد نتائج جزئية مضللة. راجع [تحديث واجهة برمجة تطبيقات جوجل](https://developers.google.com/photos/support/updates). ### تم إزالته في الإصدار 1.0 | الأمر | السبب | | --- | --- | | `mediaitems duplicates` | يتطلب اكتشاف التكرارات قراءة المكتبة بالكامل. | | `sync`، `albums sync` | لم يعد هناك أي بيانات وصفية على مستوى المكتبة للاحتفاظ بها في الذاكرة المؤقتة. | | المطالبة التفاعلية بالاعتمادات | يتم الآن الحصول على الاعتمادات من التكوين؛ راجع [التكوين](#التكوين). | ## التثبيت يتم توزيع الأداة كأداة عالمية لـ [.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. افتح **واجهات برمجة التطبيقات والخدمات > المكتبة** وقم بتمكين **واجهة برمجة تطبيقات مكتبة صور جوجل**. 3. قم بتكوين شاشة موافقة OAuth وأنشئ معرف عميل OAuth من نوع **تطبيق سطح المكتب**. 4. دوّن معرف العميل وكلمة السر الخاصة بالعميل؛ يتم توفيرهما من خلال التكوين أدناه. تتوفر إرشادات الإعداد الكاملة في [وثائق المكتبة](https://github.com/f2calv/CasCap.Api.GooglePhotos#google-cloud-setup). ## التكوين تربط الأداة القسم `CasCap:GooglePhotosOptions` من، بترتيب تصاعدي للأولوية، ملف `appsettings.json` المرفق، وملف `appsettings.json` في الدليل الحالي، وأسرار مستخدم .NET، والمتغيرات البيئية. بما أن الأداة العالمية تُثبت في متجر للقراءة فقط، فإن أسرار المستخدم أو المتغيرات البيئية هي الخيار العملي: ```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 # تحميل شجرة مجلدات، مع إنشاء ألبوم واحد لكل مجلد فرعي 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 ``` يحل حل التصحيح `CasCap.Api.GooglePhotos` من خلال مرجع مشروع محلي، لذا فهو يتوقع أن يتم استنساخ هذا المستودع بجانب هذا المستودع. يستخدم حل الإصدار حزمة NuGet المنشورة. ## التعليقات والمشاكل يرجى رفع أي شيء على [صفحة المشاكل على GitHub](https://github.com/f2calv/CasCap.GooglePhotosCli/issues). ## الترخيص CasCap.GooglePhotosCli هو حقوق النشر © 2020 [@f2calv](https://github.com/f2calv) بموجب [رخصة MIT](LICENSE).