بعد إجراء مكالمات على إدراج محتوى مكتبة الصور أو الألبومات بدلاً من تخزين عناصر الوسائط التي تم إرجاعها، يجب على التطبيق تخزين معرّفات الوسائط. ويرجع هذا إلى أن محتوى عناصر الوسائط تتغير بعد فترة معيّنة، وتنتهي صلاحية عناوين URL المضمّنة في الردّ. تشير رسالة الأشكال البيانية يحدد معرّف عنصر الوسائط ملف وسائط بشكل فريد، مثل صورة أو فيديو داخل مكتبة المستخدم.
يُرجى العِلم أنّه يجب ألا يخزِّن تطبيقك صورة أو فيديو المستخدم لفترات طويلة، ولكن استنادًا إلى حالة الاستخدام، يمكنك تخزين أو تخزين مؤقت رقم تعريف عنصر الوسائط لمدة مطلوب. يجب أن تعلم أيضًا أن الوصول إلى مستخدم البيانات للخصوصية والالتزامات.
نطاقات التفويض المطلوبة
للوصول إلى عناصر الوسائط، يجب أن يطلب تطبيقك واحدًا على الأقل من نطاقات التفويض التالية. يعتمد الوصول إلى عناصر الوسائط التي يتم عرضها في الردّ على النطاقات التي طلبها.
- تسمح
photoslibrary.readonly
بالوصول إلى جميع عناصر الوسائط في مكتبة المستخدم - لا يسمح
photoslibrary.readonly.appcreateddata
بالوصول إلا إلى ملفات الوسائط التي تم إنشاؤها من خلال التطبيق
عناصر الوسائط
حاسمة
mediaItem
هو تمثيل للوسائط مثل صورة أو فيديو تم تحميله إليه
مكتبة صور Google. هذا هو كائن من المستوى الأعلى ويمكن لخصائصه أن
حسب نوع الوسائط الأساسي.
يسرد الجدول التالي سمات mediaItem
:
أماكن إقامة | |
---|---|
id |
معرّف دائم وثابت يتم استخدامه لتحديد الكائن. |
description |
وصف عنصر الوسائط كما يظهر بالداخل صور Google. |
baseUrl |
يُستخدم للوصول إلى وحدات البايت الأولية. لمزيد من المعلومات، يُرجى الاطّلاع على عناوين URL الأساسية. |
productUrl |
رابط للصورة داخل "صور Google". لا يمكن للمطوِّر فتح هذا الرابط، بل يمكن للمستخدم فقط فتحه. تشير عناوين URL إلى عنصر وسائط في المكتبة. وإذا تم استرداد عنوان URL من بحث عن ألبوم، سيتم ويشير إلى العنصر داخل الألبوم. |
mimeType |
نوع عنصر الوسائط للمساعدة في تحديد نوع الوسائط بسهولة
(على سبيل المثال: image/jpg ). |
filename |
اسم ملف عنصر الوسائط الذي يظهر للمستخدم في تطبيق "صور Google" (ضمن قسم معلومات العنصر). |
mediaMetadata |
يختلف بناءً على النوع الأساسي للوسائط، مثل photo
أو video
لخفض الحمولة، يمكن استخدام أقنعة الحقل.
|
contributorInfo |
تتم تعبئة هذا الحقل فقط إذا كان عنصر الوسائط في ألبوم مشترَك
التي أنشأها هذا التطبيق ومنح المستخدم
نطاق واحد ( يحتوي على معلومات عن المساهم الذي أضاف عنصر الوسائط هذا. لمزيد من التفاصيل، يمكنك الاطّلاع على مشاركة الوسائط. |
الحصول على ملف وسائط
لاسترداد ملف وسائط، يمكنك إجراء مكالمة
mediaItems.get باستخدام
mediaItemId
يعرض الطلب عنصر وسائط واحدًا.
يحتوي mediaItem
على سمات، مثل رقم التعريف والوصف وعنوان URL. تشير رسالة الأشكال البيانية
أي معلومات إضافية ضمن photo
أو video
تستند إلى البيانات الوصفية في
الملف. قد لا تكون جميع المواقع متوفرة. يحتوي ContributorInfo
على بيانات وصفية
للعناصر التي تشكل جزءًا من ألبوم مشترك. لا يتم تضمين هذا الحقل إلا عند
عرض محتوى álbum
مشترَك منحه المستخدم photoslibrary.sharing
نطاق التفويض.
إذا كان عنصر الوسائط فيديو، يجب معالجة ملف الفيديو أولاً. تشير رسالة الأشكال البيانية
يحتوي mediaItem
على حقل status
داخل mediaMetadata
يصف
حالة معالجة ملف الفيديو. يعرض الملف الذي تم تحميله حديثًا الرمز
videoProcessingStatus
بالقيمة PROCESSING
أولاً، قبل أن يتم READY
لاستخدامه. baseUrl
لن تكون إحدى عناصر وسائط الفيديو متاحة إلى أن تتم معالجة الفيديو.
راحة
في ما يلي طلب GET:
GET https://photoslibrary.googleapis.com/v1/mediaItems/media-item-id Content-type: application/json Authorization: Bearer oauth2-token
يظهر الردّ على عنصر وسائط الصورة على النحو التالي. الصورة على بيانات وصفية لعناصر الصور.
{ "id": "media-item-id", "description": "item-description", "productUrl": "url-to-open-in-google-photos", "baseUrl": "base-url_do-not-use-directly", "mimeType": "mime-type-of-media", "filename": "item-filename", "mediaMetadata": { "width": "media-item-width", "height": "media-item-height", "creationTime": "media-item-creation-time", "photo": { "cameraMake": "make-of-the-camera", "cameraModel": "model-of-the-camera", "focalLength": "focal-length-of-the-camera-lens", "apertureFNumber": "aperture-f-number-of-the-camera-lens", "isoEquivalent": "iso-of-the-camera", "exposureTime": "exposure-time-of-the-camera-aperture" } }, "contributorInfo": { "profilePictureBaseUrl": "profile-picture-base-url_do-not-use-directly", "displayName": "name-of-user" } }
يظهر الردّ على عنصر وسائط فيديو على النحو التالي. الفيديو على بيانات وصفية لعناصر الفيديو.
{ "id": "media-item-id", "description": "item-description", "productUrl": "url-to-open-in-google-photos", "baseUrl": "base-url_do-not-use-directly", "mimeType": "mime-type-of-media", "filename": "item-filename", "mediaMetadata": { "width": "media-item-width", "height": "media-item-height", "creationTime": "media-item-creation-time", "video": { "cameraMake": "make-of-the-camera", "cameraModel": "model-of-the-camera", "fps": "frame-rate-of-the-video", "status": "READY" }, }, "contributorInfo": { "profilePictureBaseUrl": "profile-picture-base-url_do-not-use-directly", "displayName": "name-of-user" } }
Java
يحتوي عنصر الصورة على بيانات وصفية لعناصر الصور.
try { // Get a media item using its ID String mediaItemId = "..."; MediaItem item = photosLibraryClient.getMediaItem(mediaItemId); // Get some properties from the retrieved media item String id = item.getId(); String description = item.getDescription(); String baseUrl = item.getBaseUrl(); String productUrl = item.getProductUrl(); // ... if (item.hasMediaMetadata()) { // The media item contains additional metadata, such as the height and width MediaMetadata metadata = item.getMediaMetadata(); long height = metadata.getHeight(); long width = metadata.getWidth(); Timestamp creationTime = metadata.getCreationTime(); // ... if (metadata.hasPhoto()) { // This media item is a photo and has additional photo metadata Photo photoMetadata = metadata.getPhoto(); String cameraMake = photoMetadata.getCameraMake(); String cameraModel = photoMetadata.getCameraModel(); float aperture = photoMetadata.getApertureFNumber(); int isoEquivalent = photoMetadata.getIsoEquivalent(); // ... } } if (item.hasContributorInfo()) { // A user has contributed this media item to a shared album ContributorInfo contributorInfo = item.getContributorInfo(); String profilePictureBaseUrl = contributorInfo.getProfilePictureBaseUrl(); String displayName = contributorInfo.getDisplayName(); } } catch (ApiException e) { // Handle error }
تحتوي خاصية الفيديو على بيانات وصفية لعناصر الفيديو.
try { // Get a media item using its ID String mediaItemId = "..."; MediaItem item = photosLibraryClient.getMediaItem(mediaItemId); // Get some properties from the retrieved media item String id = item.getId(); String description = item.getDescription(); String baseUrl = item.getBaseUrl(); String productUrl = item.getProductUrl(); // ... if (item.hasMediaMetadata()) { // The media item contains additional metadata, such as the height and width MediaMetadata metadata = item.getMediaMetadata(); long height = metadata.getHeight(); long width = metadata.getWidth(); Timestamp creationTime = metadata.getCreationTime(); // ... if (metadata.hasVideo()) { // This media item is a video and has additional video metadata Video videoMetadata = metadata.getVideo(); VideoProcessingStatus status = videoMetadata.getStatus(); if (status.equals(VideoProcessingStatus.READY)) { // This video media item has been processed String cameraMake = videoMetadata.getCameraMake(); String cameraModel = videoMetadata.getCameraModel(); double fps = videoMetadata.getFps(); // ... } } } if (item.hasContributorInfo()) { // A user has contributed this media item to a shared album ContributorInfo contributorInfo = item.getContributorInfo(); String profilePictureBaseUrl = contributorInfo.getProfilePictureBaseUrl(); String displayName = contributorInfo.getDisplayName(); } } catch (ApiException e) { // Handle error }
PHP
يحتوي عنصر الصورة على بيانات وصفية لعناصر الصور.
try { // Get a media item using its ID $mediaItemId = "..."; $item = $photosLibraryClient->getMediaItem($mediaItemId); // Get some properties from the retrieved media item $id = $item->getId(); $description = $item->getDescription(); $baseUrl = $item->getBaseUrl(); $productUrl = $item->getProductUrl(); // ... $metadata = $item->getMediaMetadata(); if (!is_null($metadata)) { // The media item contains additional metadata, such as the height and width $height = $metadata->getHeight(); $width = $metadata->getWidth(); $creationTime = $metadata->getCreationTime(); // ... $photoMetadata = $metadata->getPhoto(); if (!is_null($photoMetadata)) { // This media item is a photo and has additional photo metadata $cameraMake = $photoMetadata->getCameraMake(); $cameraModel = $photoMetadata->getCameraModel(); $aperture = $photoMetadata->getApertureFNumber(); $isoEquivalent = $photoMetadata->getIsoEquivalent(); // ... } } $contributorInfo = $item->getContributorInfo(); if (!is_null($contributorInfo)) { // A user has contributed this media item to a shared album $profilePictureBaseUrl = $contributorInfo->getProfilePictureBaseUrl(); $displayName = $contributorInfo->getDisplayName(); } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
يحتوي موقع الفيديو على بيانات وصفية لعناصر الفيديو.
try { // Get a media item using its ID $mediaItemId = "..."; $item = $photosLibraryClient->getMediaItem($mediaItemId); // Get some properties from the retrieved media item $id = $item->getId(); $description = $item->getDescription(); $baseUrl = $item->getBaseUrl(); $productUrl = $item->getProductUrl(); // ... $metadata = $item->getMediaMetadata(); if (!is_null($metadata)) { // The media item contains additional metadata, such as the height and width $height = $metadata->getHeight(); $width = $metadata->getWidth(); $creationTime = $metadata->getCreationTime(); // ... $videoMetadata = $metadata->getVideo(); if (!is_null($videoMetadata)) { // This media item is a video and has additional video metadata if (VideoProcessingStatus::READY == $videoMetadata->getStatus()) { // This video media item has been processed $cameraMake = $videoMetadata->getCameraMake(); $cameraModel = $videoMetadata->getCameraModel(); $fps = $videoMetadata->getFps(); // ... } } } $contributorInfo = $item->getContributorInfo(); if (!is_null($contributorInfo)) { // A user has contributed this media item to a shared album $profilePictureBaseUrl = $contributorInfo->getProfilePictureBaseUrl(); $displayName = $contributorInfo->getDisplayName(); } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
الحصول على ملفات وسائط متعددة
لاسترداد عناصر وسائط متعددة حسب معرّفاتها، يمكنك استدعاء mediaItems.batchGet
باستخدام mediaItemId
.
يعرض الطلب قائمة بملفّات MediaItemResults
بترتيب معرّفات عناصر الوسائط المقدَّمة في الطلب. تحتوي كل نتيجة
على MediaItem
أو Status
في حال حدوث خطأ.
الحد الأقصى لعدد عناصر الوسائط التي يمكنك طلبها في مكالمة واحدة هو 50. قائمة يجب ألا تحتوي عناصر الوسائط على معرّفات مكررة، ولا يمكن أن تكون فارغة.
REST
إليك طلب GET يعرض عملية وصول ناجحة وغير ناجحة إلى
ملفات الوسائط. حدِّد كل معرّف لعنصر وسائط على أنّه مَعلمة طلب بحث جديدة
mediaItemIds
كجزء من الطلب:
GET https://photoslibrary.googleapis.com/v1/mediaItems:batchGet?mediaItemIds=media-item-id&mediaItemIds=another-media-item-id&mediaItemIds=incorrect-media-item-id Content-type: application/json Authorization: Bearer oauth2-token
يعرض طلب GET الاستجابة التالية:
{ "mediaItemResults": [ { "mediaItem": { "id": "media-item-id", ... } }, { "mediaItem": { "id": "another-media-item-id", ... } }, { "status": { "code": 3, "message": "Invalid media item ID." } } ] }
Java
try { // List of media item IDs to retrieve List<String> mediaItemIds = Arrays .asList("MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID", "INCORRECT_MEDIA_ITEM_ID"); // Get a list of media items using their IDs BatchGetMediaItemsResponse response = photosLibraryClient .batchGetMediaItems(mediaItemIds); // Loop over each result for (MediaItemResult result : response.getMediaItemResultsList()) { // Each MediaItemresult contains a status and a media item if (result.hasMediaItem()) { // The media item was successfully retrieved, get some properties MediaItem item = result.getMediaItem(); String id = item.getId(); // ... } else { // If the media item is not set, an error occurred and the item could not be loaded // Check the status and handle the error Status status = result.getStatus(); // ... } } } catch (ApiException e) { // Handle error }
PHP
try { // List of media item IDs to retrieve $mediaItemIds = ["MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID", "INCORRECT_MEDIA_ITEM_ID"]; // Get a list of media items using their IDs $response = $photosLibraryClient->batchGetMediaItems($mediaItemIds); // Loop over each result foreach ($response->getMediaItemResults() as $itemResult) { // Each MediaItemresult contains a status and a media item $mediaItem = $itemResult->getMediaItem(); if(!is_null($mediaItem)){ // The media item was successfully retrieved, get some properties $id = $mediaItem->getId(); // ... } else { // If the media item is null, an error occurred and the item could not be loaded } } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
عناوين URL الأساسية
إنّ عناوين URL الأساسية ضمن واجهة برمجة التطبيقات Google Photos Library API تتيح لك الوصول إلى وحدات البايت الخاصة بالوسائط. عناصر. باستخدام عناوين URL الأساسية المختلفة، يمكن لتطبيقك تنزيل عناصر الوسائط أو عرض عناصر الوسائط داخل تطبيقك. عناوين URL الأساسية هي سلاسل يتم تضمينها في الاستجابة عند إدراج الألبومات أو الوصول إلى عناصر الوسائط. وهي مفيدة لمدة 60 دقيقة وتتطلّب مَعلمات إضافية لأنّه لا يمكن استخدامها كما هي.
في ما يلي عناوين URL الأساسية المختلفة:
baseUrl
: الوصول مباشرةً إلى صورة أو صورة مصغّرة لفيديو أو تنزيل وحدات بت الفيديوcoverPhotoBaseUrl
: الوصول إلى صورة غلاف الألبوم مباشرةًprofilePictureBaseUrl
: الوصول مباشرةً إلى صورة الملف الشخصي لمالكmediaItem
عناوين URL الأساسية للصور
في ما يلي قائمة بالخيارات التي يمكنك استخدامها مع عناوين URL الأساسية للصور:
المَعلمة | |
---|---|
w ، h |
الوصف العرض، للوصول إلى عنصر وسائط صورة، مثل صورة أو صورة مصغرة فيديو، يجب عليك تحديد الأبعاد التي تخطط للعرض فيها تطبيقك (حتى يمكن تحجيم الصورة إلى الأبعاد مع الحفاظ على نسبة العرض إلى الارتفاع). للقيام بذلك، اربط عنوان URL الأساسي بالأبعاد المطلوبة كما هو موضّح في الأمثلة. أمثلة: base-url=wmax-width-hmax-height في ما يلي مثال لعرض عنصر وسائط لا يزيد عرضه عن 2048 بكسل ولا يزيد ارتفاعه عن 1024 بكسل: https://lh3.googleusercontent.com/p/AF....VnnY=w2048-h1024 |
c |
الوصف الاقتصاص، مَعلمة إذا كنت تريد اقتصاص الصورة إلى العرض والارتفاع الدقيقين
التي حددتها، أجرِ تسلسلاً لعنوان URL الأساسي مع
معلمة يجب أن يكون الحجم (بالبكسل) ضمن النطاق [1، 16383]. إذا كانت إحدى عرض الصورة أو ارتفاعها يتجاوز الحجم المطلوب يتم تصغير حجم الصورة واقتصاصها (مع الحفاظ على نسبة العرض إلى الارتفاع). أمثلة: base-url=wmax-width-hmax-height-c في هذا المثال، يعرض التطبيق عنصر وسائط 256 بكسل عرضًا و256 بكسل بالضبط، مثل الصورة المصغرة: https://lh3.googleusercontent.com/p/AF....VnnY=w256-h256-c |
d |
الوصف عملية التنزيل، مَعلمة إذا كنت تريد تنزيل الصورة مع الاحتفاظ بجميع البيانات الوصفية في Exif
باستثناء البيانات الوصفية للموقع الجغرافي، يمكنك تسلسل عنوان URL الأساسي مع المَعلمة
أمثلة: base-url=d في هذا المثال، ينزِّل التطبيق صورة تتضمّن كل البيانات الوصفية باستثناء البيانات الوصفية للموقع الجغرافي: https://lh3.googleusercontent.com/p/Az....XabC=d |
عناوين URL الأساسية للفيديوهات
في ما يلي قائمة بالخيارات التي يمكنك استخدامها مع عناوين URL الأساسية للفيديو:
المَعلمة | |
---|---|
dv |
الوصف للوصول إلى وحدات البايت الخاصة بفيديو تطلب المَعلمة dv جودة عالية النسخة التي تم تحويل ترميزها من الفيديو الأصلي. المَعلمة غير متوافقة مع المَعلمتَين w وh يمكن أن تستغرق عناوين URL الأساسية لعمليات تنزيل الفيديوهات بضع ثوانٍ وحدات بايت للعودة. قبل استخدام هذه المعلمة، تحقق من أن عناصر الوسائط
قيمة الحقل " أمثلة: base-url=dv يوضح المثال التالي كيفية تنزيل وحدات البايت من الفيديو: https://lh3.googleusercontent.com/p/AF....BsdZ=dv |
w وh وc و
d |
الوصف وللوصول إلى الصورة المصغّرة للفيديو، استخدِم أيًا من مَعلمات عناوين URL لقاعدة الصورة. بشكل تلقائي، تتضمّن كل الصور المصغّرة للفيديوهات على سطح الفيديو . اطّلِع على المَعلمة -no لإزالة هذا التراكب. أمثلة: راجِع جدول عناوين URL الأساسية للصور للحصول على أمثلة. |
no |
الوصف مَعلمة إذا أردت استرداد الصورة المصغّرة لفيديو بدون التراكب لزر التشغيل، أدخِل تسلسلاً لعنوان URL الأساسي مع العلامة no . يجب استخدام معلمة no مع واحد على الأقل من الـ مَعلمات عناوين URL لقاعدة الصور أمثلة: base-url=wmax-width-hmax-height-no يعرض المثال التالي صورة مصغّرة للفيديو يبلغ عرضها 1280 بكسل وارتفاع 720 بكسل، ولا تتضمّن زر التشغيل على سطح الصفحة: https://lh3.googleusercontent.com/p/AF....VnnY=w1280-h720-no |
عناوين URL الأساسية للصور الحيّة
تحتوي الصور الحيّة على كلٍّ من عناصر الصور والفيديو. يمكنك استخدام معلمات من
إما عناوين URL لقاعدة الصور أو
عناوين URL الأساسية للفيديوهات لطلبات baseUrl
للصور الحيّة.
المَعلمة | |
---|---|
dv |
الوصف لاسترداد عنصر الفيديو لعنصر وسائط صورة حيّة، استخدم
معلَمة |
w وh وc و
d |
الوصف لاسترداد عنصر الصورة لعنصر وسائط صورة حيّة، استخدم تنسيق عناوين URL لقاعدة الصور. |