أنت تعرض المستندات القديمة لواجهة برمجة التطبيقات Google Photos Library API.
إضافة معلومات مفصّلة
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تسمح التحسينات لتطبيقك بالتحكم في بنية وطريقة عرض
من الصور داخل ألبوم في "صور Google". تسمح لك بتقديم المستخدم
مع سياق إضافي من خلال التعليقات التوضيحية للنصوص أو المواقع الجغرافية والترتيب/المجموعة
والصور التي تروي قصة معًا.
نطاق التفويض المطلوب
لإضافة إضافات، يجب استخدام أحد النطاقات التالية على الأقل:
photoslibrary.appendonly
photoslibrary.library
photoslibrary.sharing
بالنسبة إلى كل نطاق، تقتصر مكالمة enrichAlbum
على الألبومات التي تم إنشاؤها فقط.
من خلال التطبيق.
عند استخدام نطاق .sharing
، يقتصر enrichAlbum
على الظروف.
حيث يتصرّف مطوّر البرامج نيابةً عن مالك الألبوم المشترَك.
أنواع إثراء البيانات
يدعم تطبيق "صور Google" ثلاثة أنواع من العناصر الإضافية في الألبومات: النصوص
والمواقع الجغرافية والخرائط.
إثراء النص
إثراء النص هو سلسلة نصية عادية يمكن إدراجها لإضافة تعليق
الألبوم.
تحسينات الموقع الجغرافي
إثراء الموقع هو علامة واسم المكان الذي يمكن إدراجه
لإضافة تعليقات توضيحية إلى أحد المواقع
إثراءات الخريطة
إثراء الخريطة هو خريطة ذات أصل ووجهة محددة يمكن
تم إدراجها في الألبوم.
المواضع
لإدراج عناصر الوسائط وإثراءات الألبوم، حدِّد موضع الألبوم.
يكون الموضع اختياريًا لعناصر الوسائط، ولكن يجب تحديده للألبوم
والاستفادة منه.
لا يمكن تحديد موضع الإعلان إلا عندما
إنشاء ملف وسائط
أو إضافة تحسينات. لا يمكن إعادة تنظيم عناصر الوسائط الحالية في ألبوم، لذا
من المهم ضبط موضع العنصر عند إضافته.
بداية الألبوم
يمكن إضافة وسائط/عنصر تحسين إلى بداية الألبوم باعتباره عنصرًا أساسيًا
للمكانة في السوق.
نهاية الألبوم
يمكن إضافة وسائط/عنصر تحسين إلى نهاية الألبوم بشكل مطلق
للمكانة في السوق.
يمكن إضافة وسائط/عنصر تحسيني بالنسبة إلى عنصر وسائط يبدأ بعد
موقعه في الألبوم.
نسبة إلى عنصر التحسين
يمكن إضافة وسائط/عنصر تحسيني بالنسبة إلى عنصر التحسين الذي يبدأ
بعد وضعه في الألبوم.
إضافة تحسينات إلى الألبوم
تتم إضافة الإثراء واحدًا تلو الآخر، ويجب إضافتها إلى موضع في ألبوم.
لإضافة تحسينات إلى ألبوم ما، يمكنك الاتصال
albums.addEnrichment
وفي حال قبول الطلب، سيتم عرض id
للعنصر المفيد الذي يظهر
ويمكن استخدامها لتحديد موضع عناصر الوسائط أو غيرها من الأدوات الإضافية.
راحة
إليك طلب POST:
POST https://photoslibrary.googleapis.com/v1/albums/album-id:addEnrichment
Content-type: application/json
Authorization: Bearer oauth2-token
request-body
يتكون نص الطلب من عنصر المزايا الإضافية وموضعه:
{
"newEnrichmentItem": {
enrichment-to-be-added
},
"albumPosition": {
position-of-enrichment
}
فيما يلي نموذج للرد:
{
"enrichmentItem": {
"id": "enrichment-item-id",
}
}
Java
try {
// Create the enrichment using the NewEnrichmentItemFactory helper
NewEnrichmentItem newEnrichmentItem = NewEnrichmentItemFactory.createTextEnrichment("");
// Set the position of the enrichment within the album
AlbumPosition albumPosition = AlbumPositionFactory.createFirstInAlbum();
// To add an enrichment, specify the album, the enrichment item,
// and the position in the album where the enrichment is to be added
AddEnrichmentToAlbumResponse response = photosLibraryClient
.addEnrichmentToAlbum(albumId, newEnrichmentItem, albumPosition);
// The response contains an EnrichmentItem
// whose ID can be used to position media items or other enrichments
EnrichmentItem enrichmentItem = response.getEnrichmentItem();
String itemId = enrichmentItem.getId();
} catch (ApiException e) {
// Handle error
}
PHP
// Create the enrichment item using the PhotosLibraryResourceFactory helper
$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithText("");
// ...
// Set the position of the enrichment within the album
$position = new AlbumPosition();
// ...
try {
// To add an enrichment, specify the album, the enrichment item,
// and the position in the album where the enrichment is to be added
$response = $photosLibraryClient->addEnrichmentToAlbum($albumId, $newEnrichmentItem, $position);
// The response contains an EnrichmentItem
// whose ID can be used to position media items or other enrichments
$enrichmentItem = $response->getEnrichmentItem();
$itemId = $enrichmentItem->getId();
} catch (\Google\ApiCore\ApiException $e) {
// Handle error
}
الإضافات المتوافقة
إثراء النص
تحتوي إثراء النص على سلسلة نصية واحدة (لا تزيد عن 1000 حرف)، كما
كما هو موضح في المثال التالي:
راحة
{
"text": "Text to be shown"
}
Java
// Use the NewEnrichmentItemFactory helper to create a text enrichment item
NewEnrichmentItem newEnrichmentItem =
NewEnrichmentItemFactory.createTextEnrichment("text to be shown");
PHP
$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithText("text to be shown");
تحسينات الموقع الجغرافي
تتكون إضافات الموقع من اسم موقع عشوائي وخط العرض
خط الطول. وlocationName
هو الحد الأقصى لعدد الأحرف المسموح به وهو 500 حرف.
راحة
{
"location": {
"locationName": "Australia",
"latlng": {
"latitude": "-21.197",
"longitude": "95.821"
}
}
}
Java
// Use the NewEnrichmentItemFactory helper to create a location enrichment
// with the name, latitude, and longitude of the location
NewEnrichmentItem newEnrichmentItem =
NewEnrichmentItemFactory.createLocationEnrichment("Australia", -21.197, 95.821);
PHP
// Create a new location object and set the name, latitude, and longitude of the location
$newLocation = new Location();
$newLocation->setLocationName("Australia");
$newLocation->setLatlng((new LatLng())->setLatitude(-21.197)->setLongitude(95.821));
$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithLocation($newLocation);
إثراءات الخريطة
تعرض إضافات الخرائط موقعَين جغرافيَين يتألّف كل منهما من اسم وخط العرض.
وخط الطول. وعلى غرار تعزيز الموقع، فإن locationName
ضمن
تم تحديد قيمة السمة "المصدر" وdestination
على 500 حرف.
راحة
{
"origin": {
"locationName": "Australia",
"latlng": {
"latitude": "-21.197",
"longitude": "95.821"
}
},
"destination": {
"locationName": "San Francisco",
"latlng": {
"latitude": "37.757",
"longitude": "122.507"
}
}
}
Java
// Use the NewEnrichmentItemFactory helper to create a map enrichment item for
// an origin and a destination location
NewEnrichmentItem newEnrichmentItem = NewEnrichmentItemFactory.createMapEnrichment(
"Australia", -21.197, 95.821, // origin
"San Francisco", 37.757, 122.507 // destination
);
PHP
// Create two new location objects to create a map enrichment item
// for an origin and a destination location
$locationAustralia = new Location();
$locationAustralia->setLocationName("Australia");
$locationAustralia->setLatlng((new LatLng())->setLatitude(-21.197)->setLongitude(95.821));
$locationSanFrancisco = new Location();
$locationSanFrancisco->setLocationName("San Francisco");
$locationSanFrancisco->setLatlng((new LatLng())->setLatitude(37.757)->setLongitude(122.507));
$newEnrichmentItem =
PhotosLibraryResourceFactory::newEnrichmentItemWithMap($locationAustralia, $locationSanFrancisco);
الموضع المتوافق
بداية الألبوم
يشير الموضع FIRST_IN_ALBUM
إلى بداية الألبوم. العناصر التي تم العثور عليها
يتم عرضها هنا للمستخدم أولاً:
راحة
{
"position": "FIRST_IN_ALBUM",
}
Java
AlbumPosition albumPosition = AlbumPositionFactory.createFirstInAlbum();
PHP
$albumPosition = new AlbumPosition();
$albumPosition->setPosition(PositionType::FIRST_IN_ALBUM);
نهاية الألبوم
يشير الموضع LAST_IN_ALBUM
إلى نهاية الألبوم. العناصر المتوفرة هنا
تظهر للمستخدم أخيرًا.
راحة
{
"position": "LAST_IN_ALBUM",
}
Java
AlbumPosition albumPosition = AlbumPositionFactory.createLastInAlbum();
PHP
$albumPosition = new AlbumPosition();
$albumPosition->setPosition(PositionType::LAST_IN_ALBUM);
يشير تحديد الموضع relativeMediaItem
إلى موضع نسبي
ملف وسائط. تتم إضافة العناصر بعد ملف الوسائط المحدّد.
راحة
{
"position": "after-media-item",
"relativeMediaItemId": "media-item-id"
}
Java
AlbumPosition albumPosition = AlbumPositionFactory.createAfterMediaItem(mediaItemId);
PHP
$albumPosition = PhotosLibraryResourceFactory::albumPositionAfterMediaItem($mediaItemId);
نسبة إلى عنصر التحسين
يشير تحديد relativeEnrichmentItemId
إلى موضع نسبي
العنصر الإضافي. تتم إضافة العناصر بعد عنصر التحسين المحدد.
راحة
{
"position": "after-enrichment-item",
"relativeEnrichmentItemId": "enrichment-item-id"
}
Java
AlbumPosition albumPosition = AlbumPositionFactory.createAfterEnrichmentItem(enrichmentItemId);
PHP
$albumPosition = PhotosLibraryResourceFactory::albumPositionAfterEnrichmentItem($enrichmentItemId);
تعديل التحسينات
وفي الوقت الحالي، ليست هناك طريقة لتعديل التحسينات. ومع ذلك، بمجرد إثراء
تم إنشاؤها وإضافتها إلى ألبوم، يمكن للمستخدم تعديل الإثراءات
من خلال تطبيق "صور Google".
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-09-04 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-09-04 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eEnrichments give your application control over the structure and presentation of photos within Google Photos albums by adding context through annotations and ordering.\u003c/p\u003e\n"],["\u003cp\u003eGoogle Photos supports three types of enrichments: text, locations (markers with place names), and maps (showing an origin and destination).\u003c/p\u003e\n"],["\u003cp\u003eWhen adding enrichments, you must specify their position in the album, which can be at the start, end, or relative to an existing media or enrichment item.\u003c/p\u003e\n"],["\u003cp\u003eEnrichments are added individually using the \u003ccode\u003ealbums.addEnrichment\u003c/code\u003e call, requiring specific authorization scopes.\u003c/p\u003e\n"],["\u003cp\u003eAlthough enrichments can't be modified programmatically, users can edit them directly through the Google Photos app.\u003c/p\u003e\n"]]],["Enrichments allow control over photo presentation in Google Photos albums by adding context and organizing images. Three enrichment types are supported: text, location, and map. Adding enrichments requires specific authorization scopes and is restricted to albums the app created. Enrichments are added one at a time via `albums.addEnrichment`, specifying the enrichment item and its position within the album. Positions can be at the start or end of the album, or relative to media or other enrichment items. The enrichment item ID returned can be used to position items.\n"],null,["Enrichments let your application control the structure and presentation of\nphotos within an album in Google Photos. They allow you to present the user\nwith additional context through text or location annotations and order/group\nimages that tell a story together.\n\nRequired authorization scope\n\nTo add enrichments, at least one of the following scopes is required:\n\n- `photoslibrary.appendonly`\n- `photoslibrary.library`\n- `photoslibrary.sharing`\n\nFor each scope, the `enrichAlbum` call is restricted to only the albums created\nby the app.\n\nWhen using the `.sharing` scope, `enrichAlbum` is restricted to circumstances\nwhere the developer is acting on behalf of the owner of the shared album.\n\nEnrichment types\n\nGoogle Photos supports three types of enrichments in albums: text,\nlocations, and maps.\n\nText enrichments\n\nA text enrichment is a plain text string that can be inserted to annotate the\nalbum.\n\nLocation enrichments\n\nA location enrichment is a marker and the name of the place that can be inserted\nto annotate a location.\n\nMap enrichments\n\nA map enrichment is a map with a specified origin and destination that can be\ninserted in the album.\n\nPositions\n\nTo insert media items and album enrichments, specify the position of the album.\nA position is optional for media items, but must be specified for album\nenrichment.\n\nA position can only be specified when\n[creating a media item](/photos/library/guides/upload-media#creating-media-item)\nor adding enrichments. Existing media items in an album can't be reorganized, so\nit's important to set the position of an item when it's being added.\n\nStart of album\n\nA media/enrichment item can be added to the start of the album as absolute\npositioning.\n\nEnd of album\n\nA media/enrichment item can be added to the end of the album as absolute\npositioning.\n\nRelative to media item\n\nA media/enrichment item can be added relative to a media item beginning after\nits position in the album.\n\nRelative to enrichment item\n\nA media/enrichment item can be added relative to an enrichment item beginning\nafter its position in the album.\n\nAdding enrichments to album\n\nEnrichments are added one at a time and must be added to a position in an album.\nTo add enrichments to an album, call\n[`albums.addEnrichment`](/photos/library/legacy/reference/rest/v1/albums/addEnrichment).\n\nIf the request is successful, it returns the `id` of the enrichment item, which\ncan be used to position media items or other enrichments. \n\nREST\n\nHere is a POST request: \n\n```\nPOST https://photoslibrary.googleapis.com/v1/albums/album-id:addEnrichment\nContent-type: application/json\nAuthorization: Bearer oauth2-token\n\u003cvar translate=\"no\"\u003erequest-body\u003c/var\u003e\n```\n\nThe request body consists of the enrichment item and its position: \n\n```restructuredtext\n{\n \"newEnrichmentItem\": {\n enrichment-to-be-added\n },\n \"albumPosition\": {\n position-of-enrichment\n}\n```\n\nHere is a sample response: \n\n```restructuredtext\n{\n \"enrichmentItem\": {\n \"id\": \"enrichment-item-id\",\n }\n}\n```\n\nJava \n\n```java\ntry {\n // Create the enrichment using the NewEnrichmentItemFactory helper\n NewEnrichmentItem newEnrichmentItem = NewEnrichmentItemFactory.createTextEnrichment(\"\");\n\n // Set the position of the enrichment within the album\n AlbumPosition albumPosition = AlbumPositionFactory.createFirstInAlbum();\n\n // To add an enrichment, specify the album, the enrichment item,\n // and the position in the album where the enrichment is to be added\n AddEnrichmentToAlbumResponse response = photosLibraryClient\n .addEnrichmentToAlbum(albumId, newEnrichmentItem, albumPosition);\n // The response contains an EnrichmentItem\n // whose ID can be used to position media items or other enrichments\n EnrichmentItem enrichmentItem = response.getEnrichmentItem();\n String itemId = enrichmentItem.getId();\n} catch (ApiException e) {\n // Handle error\n}\n```\n\nPHP \n\n```php\n// Create the enrichment item using the PhotosLibraryResourceFactory helper\n$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithText(\"\");\n// ...\n// Set the position of the enrichment within the album\n$position = new AlbumPosition();\n// ...\ntry {\n // To add an enrichment, specify the album, the enrichment item,\n // and the position in the album where the enrichment is to be added\n $response = $photosLibraryClient-\u003eaddEnrichmentToAlbum($albumId, $newEnrichmentItem, $position);\n // The response contains an EnrichmentItem\n // whose ID can be used to position media items or other enrichments\n $enrichmentItem = $response-\u003egetEnrichmentItem();\n $itemId = $enrichmentItem-\u003egetId();\n\n} catch (\\Google\\ApiCore\\ApiException $e) {\n // Handle error\n}\n```\n\nSupported enrichments\n\nText enrichments\n\nText enrichments contain a single text string (no more than 1000 characters), as\nshown in the following example: \n\nREST \n\n```restructuredtext\n{\n \"text\": \"Text to be shown\"\n}\n```\n\nJava \n\n```java\n// Use the NewEnrichmentItemFactory helper to create a text enrichment item\nNewEnrichmentItem newEnrichmentItem =\n NewEnrichmentItemFactory.createTextEnrichment(\"text to be shown\");\n```\n\nPHP \n\n```php\n$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithText(\"text to be shown\");\n```\n\nLocation enrichments\n\nLocation enrichments consist of an arbitrary location name and the latitude and\nlongitude position. The `locationName` is limited to 500 characters. \n\nREST \n\n```restructuredtext\n{\n \"location\": {\n \"locationName\": \"Australia\",\n \"latlng\": {\n \"latitude\": \"-21.197\",\n \"longitude\": \"95.821\"\n }\n }\n}\n```\n\nJava \n\n```java\n// Use the NewEnrichmentItemFactory helper to create a location enrichment\n// with the name, latitude, and longitude of the location\nNewEnrichmentItem newEnrichmentItem =\n NewEnrichmentItemFactory.createLocationEnrichment(\"Australia\", -21.197, 95.821);\n```\n\nPHP \n\n```php\n// Create a new location object and set the name, latitude, and longitude of the location\n$newLocation = new Location();\n$newLocation-\u003esetLocationName(\"Australia\");\n$newLocation-\u003esetLatlng((new LatLng())-\u003esetLatitude(-21.197)-\u003esetLongitude(95.821));\n\n$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithLocation($newLocation);\n```\n\nMap enrichments\n\nMap enrichments show two locations, each consisting of a name and the latitude\nand longitude. Similar to the location enrichment, the `locationName` within the\norigin and `destination` is limited to 500 characters. \n\nREST \n\n```restructuredtext\n{\n \"origin\": {\n \"locationName\": \"Australia\",\n \"latlng\": {\n \"latitude\": \"-21.197\",\n \"longitude\": \"95.821\"\n }\n },\n \"destination\": {\n \"locationName\": \"San Francisco\",\n \"latlng\": {\n \"latitude\": \"37.757\",\n \"longitude\": \"122.507\"\n }\n }\n}\n```\n\nJava \n\n```java\n// Use the NewEnrichmentItemFactory helper to create a map enrichment item for\n// an origin and a destination location\nNewEnrichmentItem newEnrichmentItem = NewEnrichmentItemFactory.createMapEnrichment(\n \"Australia\", -21.197, 95.821, // origin\n \"San Francisco\", 37.757, 122.507 // destination\n);\n```\n\nPHP \n\n```php\n// Create two new location objects to create a map enrichment item\n// for an origin and a destination location\n$locationAustralia = new Location();\n$locationAustralia-\u003esetLocationName(\"Australia\");\n$locationAustralia-\u003esetLatlng((new LatLng())-\u003esetLatitude(-21.197)-\u003esetLongitude(95.821));\n\n$locationSanFrancisco = new Location();\n$locationSanFrancisco-\u003esetLocationName(\"San Francisco\");\n$locationSanFrancisco-\u003esetLatlng((new LatLng())-\u003esetLatitude(37.757)-\u003esetLongitude(122.507));\n\n$newEnrichmentItem =\n PhotosLibraryResourceFactory::newEnrichmentItemWithMap($locationAustralia, $locationSanFrancisco);\n```\n\nSupported positioning\n\nStart of album\n\nThe position `FIRST_IN_ALBUM` refers to the start of the album. Items located\nhere are shown to the user first: \n\nREST \n\n```restructuredtext\n{\n \"position\": \"FIRST_IN_ALBUM\",\n}\n```\n\nJava \n\n```java\nAlbumPosition albumPosition = AlbumPositionFactory.createFirstInAlbum();\n```\n\nPHP \n\n```php\n$albumPosition = new AlbumPosition();\n$albumPosition-\u003esetPosition(PositionType::FIRST_IN_ALBUM);\n```\n\nEnd of album\n\nThe position `LAST_IN_ALBUM` refers to the end of the album. Items located here\nare shown to the user last. \n\nREST \n\n```restructuredtext\n{\n \"position\": \"LAST_IN_ALBUM\",\n}\n```\n\nJava \n\n```java\nAlbumPosition albumPosition = AlbumPositionFactory.createLastInAlbum();\n```\n\nPHP \n\n```php\n$albumPosition = new AlbumPosition();\n$albumPosition-\u003esetPosition(PositionType::LAST_IN_ALBUM);\n```\n\nRelative to media item\n\nSpecifying the position `relativeMediaItem` refers to a position relative to a\nmedia item. The items are added after the specified media item. \n\nREST \n\n```restructuredtext\n{\n \"position\": \"after-media-item\",\n \"relativeMediaItemId\": \"media-item-id\"\n}\n```\n\nJava \n\n```java\nAlbumPosition albumPosition = AlbumPositionFactory.createAfterMediaItem(mediaItemId);\n```\n\nPHP \n\n```php\n$albumPosition = PhotosLibraryResourceFactory::albumPositionAfterMediaItem($mediaItemId);\n```\n\nRelative to enrichment item\n\nSpecifying a `relativeEnrichmentItemId` refers to a position relative to an\nenrichment item. The items are added after the specified enrichment item. \n\nREST \n\n```restructuredtext\n{\n \"position\": \"after-enrichment-item\",\n \"relativeEnrichmentItemId\": \"enrichment-item-id\"\n}\n```\n\nJava \n\n```java\nAlbumPosition albumPosition = AlbumPositionFactory.createAfterEnrichmentItem(enrichmentItemId);\n```\n\nPHP \n\n```php\n$albumPosition = PhotosLibraryResourceFactory::albumPositionAfterEnrichmentItem($enrichmentItemId);\n```\n\nModifying enrichments\n\nCurrently, there is no way to modify enrichments. However, once an enrichment\nhas been created and added to an album, the user can modify the enrichments\nthrough the Google Photos app."]]