लाइब्रेरी के कॉन्टेंट, एल्बम, और मीडिया आइटम की सूची बनाना

अनुमति के ज़रूरी दायरे

Google Photos Library API में, मीडिया आइटम और एल्बम ऐक्सेस करने के लिए कई स्कोप शामिल होते हैं. अलग-अलग कॉल से लौटाए गए मीडिया आइटम, स्कोप के हिसाब से अलग-अलग होते हैं डेवलपर ने अनुरोध किए हैं.

photoslibrary.readonly स्कोप, इसमें मौजूद सभी मीडिया आइटम को ऐक्सेस करने की अनुमति देता है उपयोगकर्ता की लाइब्रेरी में सेव किया जा सकता है. photoslibrary.readonly.appcreateddata स्कोप ऐक्सेस करने की अनुमति देता है सिर्फ़ उन मीडिया आइटम के लिए जिन्हें ऐप्लिकेशन से बनाया गया है. ज़्यादा जानकारी के लिए, यह देखें अनुमति के दायरे.

खास जानकारी

इस एपीआई का एक अहम इस्तेमाल यह है कि आप उन मीडिया आइटम की सूची बनाएं जिनका बैक अप उपयोगकर्ता ने लिया है उसे Google Photos में सेव करें. किसी खास एल्बम में या उपयोगकर्ता के पूरे आइटम के आइटम लाइब्रेरी (Google Photos ऐप्लिकेशन का डिफ़ॉल्ट व्यू) की सूची बनाई जा सकती है.

फ़ोटो चुनने के लिए फ़िल्टर का इस्तेमाल किया जा सकता है का इस्तेमाल करें, जो आइटम लिस्ट करते समय किसी तय तारीख, कॉन्टेंट कैटगरी या मीडिया टाइप से मेल खाते हों उपयोगकर्ता की लाइब्रेरी से निकाला जा सकता है. से आइटम लिस्ट करते समय, यह सुविधा काम नहीं करती एल्बम.

लाइब्रेरी और एल्बम के कॉन्टेंट की सूची बनाने से, मीडिया आइटम की सूची मिलती है. ऐसे प्रॉडक्ट को बेहतर बनाना जो किसी एल्बम का हिस्सा हों शामिल नहीं हैं. मीडिया आइटम किसी फ़ोटो, वीडियो या अन्य मीडिया के बारे में जानकारी देते हैं. ऐप्लिकेशन mediaItem में आइटम का लिंक होता है, जिसमें आइटम का लिंक होता है Google Photos, और दूसरे काम का मेटाडेटा. ज़्यादा जानकारी के लिए, यह देखें मीडिया आइटम ऐक्सेस करना और mediaItems.

लिस्टिंग एल्बम

आप इसका उपयोग करके उपयोगकर्ता के एल्बम की सूची पुनर्प्राप्त कर सकते हैं albums.list.

आरामJavaPHP

अनुरोध का एक सैंपल यहां दिया गया है:

GET https://photoslibrary.googleapis.com/v1/albums

अनुरोध करने पर यह नतीजा मिलता है:

{
 
"albums": [
   
{
     
"id": "album-id",
     
"title": "album-title",
     
"productUrl": "album-product-url",
     
"coverPhotoBaseUrl": "album-cover-base-url_do-not-use-directly",
     
"coverPhotoMediaItemId": "album-cover-media-item-id",
     
"isWriteable": "whether-you-can-write-to-this-album",
     
"mediaItemsCount": "number-of-media-items-in-album"
   
},
   
...
 
],
 
"nextPageToken": "token-for-pagination"
}
try {
 
// Make a request to list all albums in the user's library
 
// Iterate over all the albums in this list
 
// Pagination is handled automatically
 
ListAlbumsPagedResponse response = photosLibraryClient.listAlbums();

 
for (Album album : response.iterateAll()) {
   
// Get some properties of an album
   
String id = album.getId();
   
String title = album.getTitle();
   
String productUrl = album.getProductUrl();
   
String coverPhotoBaseUrl = album.getCoverPhotoBaseUrl();
   
// The cover photo media item id field may be empty
   
String coverPhotoMediaItemId = album.getCoverPhotoMediaItemId();
   
boolean isWritable = album.getIsWriteable();
   
long mediaItemsCount = album.getMediaItemsCount();
 
}

} catch (ApiException e) {
 
// Handle error
}
try {
   
// Make a request to list all albums in the user's library
   
// Iterate over all the albums in this list
   
// Pagination is handled automatically
    $response
= $photosLibraryClient->listAlbums();
   
foreach ($response->iterateAllElements() as $album) {
       
// Get some properties of an album
        $albumId
= $album->getId();
        $title
= $album->getTitle();
        $productUrl
= $album->getProductUrl();
        $coverPhotoBaseUrl
= $album->getCoverPhotoBaseUrl();
       
// The cover photo media item id field may be empty
        $coverPhotoMediaItemId
= $album->getCoverPhotoMediaItemId();
        $isWriteable
= $album->getIsWriteable();
        $totalMediaItems
= $album->getTotalMediaItems();
   
}
} catch (\Google\ApiCore\ApiException $e) {
   
// Handle error
}

लौटाए गए हर एल्बम में एक आईडी होता है, जिसका इस्तेमाल जैसा कि एल्बम के कॉन्टेंट की सूची में बताया गया है. यह भी में टाइटल और उसमें मौजूद मीडिया आइटम की संख्या शामिल होनी चाहिए.

productUrl Google Photos में उस एल्बम पर ले जाता है जिसे जिन्हें उपयोगकर्ता ने खोला है.

coverPhotoMediaItemId में मीडिया आइटम शामिल है आईडी जो इस एल्बम की कवर फ़ोटो का प्रतिनिधित्व करता है. इस कवर इमेज को ऐक्सेस करने के लिए, इसका इस्तेमाल करें coverPhotoBaseUrl. आपको सीधे तौर पर coverPhotoBaseUrl का इस्तेमाल नहीं करना चाहिए अतिरिक्त बना रहा है पैरामीटर के तौर पर सेट किया गया है.

ऐसे एल्बम जिन्हें उपयोगकर्ता के खाते में बनाया गया हो या उपयोगकर्ता के खाते में जोड़ा गया हो खाते और आपके ऐप्लिकेशन ने जो खाता शेयर किया है उसमें shareInfo की अन्य प्रॉपर्टी शामिल है. ज़्यादा जानकारी के लिए, मीडिया शेयर करना लेख पढ़ें.

एल्बम में isWriteable फ़्लैग भी हो सकता है. इससे पता चलता है कि आपके पास मीडिया बनाने का अधिकार है या नहीं आइटम चुनें. अगर इसके जवाब नहीं दिए जाते हैं, तो यह फ़्लैग डिफ़ॉल्ट रूप से false को दिखाता है. हां आपके ऐप्लिकेशन को दिए गए ऐक्सेस पर निर्भर करता है. इसमें ये चीज़ें शामिल हैं:

  • एल्बम किसने बनाया था.
  • क्या इसे शेयर किया गया है या नहीं.
  • उपयोगकर्ता किस दायरे में आता है ने अनुमोदित कर दिया है.

अगर इनमें से कोई भी शर्त बदलती है, तो यह फ़्लैग बदल सकता है. ज़्यादा जानकारी के लिए, यह देखें एल्बम बनाना. कॉन्टेंट बनाने रिस्पॉन्स में nextPageToken भी शामिल है. ज़्यादा जानकारी के लिए, यह देखें पेज पर नंबर डालना.

खाली एल्बम के लिए प्रतिक्रिया उसमें, mediaItemsCount और coverPhotoMediaItemId को डिफ़ॉल्ट रूप से 0 पर सेट किया जाता है और उन्हें REST में शामिल नहीं किया जाता है जवाब. यह भी ध्यान रखें कि coverPhotoBaseUrl एक डिफ़ॉल्ट प्लेसहोल्डर पर ले जाता है इमेज.

लिस्टिंग लाइब्रेरी का कॉन्टेंट

उपयोगकर्ता की Google Photos लाइब्रेरी से सभी मीडिया आइटम को सूची में जोड़ा जा सकता है. इसमें संग्रहित और मिटाए गए आइटम शामिल नहीं हैं. मीडिया आइटम को उनके आधार पर लिस्ट किया जा सकता है सामग्री, तारीख, और दूसरी प्रॉपर्टी के लिए लागू करें फ़िल्टर. अगर उपयोगकर्ता ने आइटम जो उनके Google Photos के शेयर करना टैब में मौजूद है लाइब्रेरी है, तो वह आइटम इस सूची में शामिल नहीं किया गया है.

मीडिया आइटम को वापस पाने के लिए, इस पर कॉल करें mediaItems.list.

आरामJavaPHP

अनुरोध का एक सैंपल यहां दिया गया है:

GET https://photoslibrary.googleapis.com/v1/mediaItems
Content-type: application/json
Authorization: Bearer oauth2-token
{
 
"pageSize": "100",
}

जीईटी अनुरोध से यह रिस्पॉन्स मिलता है:

{
 
"mediaItems": [
   
...
 
],
 
"nextPageToken": "token-for-pagination"
}
try {
 
// Make a request to list all media items in the user's library
 
// Iterate over all the retrieved media items
 
// Pagination is handled automatically
 
ListMediaItemsPagedResponse response = photosLibraryClient.listMediaItems();
 
for (MediaItem item : response.iterateAll()) {
   
// Get some properties of a media item
   
String id = item.getId();
   
String description = item.getDescription();
   
String mimeType = item.getMimeType();
   
String productUrl = item.getProductUrl();
   
String filename = item.getFilename();
 
}
} catch (ApiException e) {
 
// Handle error
}
try {
   
// Make a request to list all media items in the user's library
   
// Iterate over all the retrieved media items
   
// Pagination is handled automatically
    $response
= $photosLibraryClient->listMediaItems();
   
foreach ($response->iterateAllElements() as $item) {
       
// Get some properties of a media item
       
/* @var $item \Google\Photos\Library\V1\MediaItem */
        $id
= $item->getId();
        $description
= $item->getDescription();
        $mimeType
= $item->getMimeType();
        $productUrl
= $item->getProductUrl();
        $filename
= $item->getFilename();
   
}
} catch (\Google\ApiCore\ApiException $e) {
   
// Handle error
}

जवाब में मीडिया आइटम की सूची होती है. इसमें, सबसे नए से लेकर सबसे नए के क्रम में लगाया जाता है. ज़्यादा जानकारी के लिए, यह देखें mediaItems. यह भी इसमें nextPageToken है, जिसके बारे में ज़्यादा जानकारी यहां दी गई है पेज पर नंबर डालना.

लिस्टिंग एल्बम का कॉन्टेंट

किसी एल्बम के सभी मीडिया आइटम को सूची में जोड़ने के लिए, albumId फ़ील्ड को अपने खोज अनुरोध. albumId के बारे में ज़्यादा जानकारी के लिए, लिस्टिंग देखें एल्बम और शेयर किए गए एल्बम की सूची बनाना. अगर आपने albumId अमान्य है, तो Bad Request गड़बड़ी मिलती है. अगर आईडी मान्य है, लेकिन प्रमाणित उपयोगकर्ता के लिए एल्बम मौजूद नहीं है, तो Not Found गड़बड़ी है वापस किया गया. गड़बड़ी ठीक करने के बारे में ज़्यादा जानकारी के लिए,परफ़ॉर्मेंस सलाह और बेहतरीन तरीके शामिल करें.

आरामJavaPHP

अनुरोध का एक सैंपल यहां दिया गया है:

POST https://photoslibrary.googleapis.com/v1/mediaItems:search
Content-type: application/json
Authorization: Bearer oauth2-token
{
 
"pageSize": "100",
 
"albumId": "album-id"
}

पीओएसटी अनुरोध से यह रिस्पॉन्स मिलता है:

{
 
"mediaItems": [
   
...
 
],
 
"nextPageToken": "token-for-pagination"
}
try {
 
// Make a request to list all media items in an album
 
// Provide the ID of the album as a parameter in the searchMediaItems call
 
// Iterate over all the retrieved media items
 
SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(albumId);

 
for (MediaItem item : response.iterateAll()) {
   
// ...
 
}

} catch (ApiException e) {
 
// Handle error
}
try {
   
// Make a request to list all media items in an album
   
// Provide the ID of the album as a parameter in the searchMediaItems call
   
// Iterate over all the retrieved media items
    $response
= $photosLibraryClient->searchMediaItems(['albumId' => $albumId]);
   
foreach ($response->iterateAllElements() as $item) {
       
// ...
   
}
} catch (\Google\ApiCore\ApiException $e) {
   
// Handle error
}

इस रिस्पॉन्स में एक nextPageToken और मीडिया आइटम की सूची शामिल होती है. कब नापसंद करें लाइब्रेरी के कॉन्टेंट की सूची बनाने के लिए, मीडिया आइटम एल्बम. ज़्यादा जानकारी के लिए, यह देखें mediaItems और पेज पर नंबर डालना. उपयोगकर्ता इसमें ऑर्डर में बदलाव कर सकता है: Google Photos का इंटरफ़ेस.

अगर albumId को सेट किया गया है, तो एल्बम के कॉन्टेंट की सूची बनाते समय फ़िल्टर लागू नहीं किया जा सकता. ऐसा करने पर Bad Request गड़बड़ी दिखेगी.

शेयर किए गए एल्बम की सूची बनाना

आप उन सभी एल्बम की सूची पुनर्प्राप्त कर सकते हैं जिन्हें उपयोगकर्ता ने शेयर किया है या जिन्हें किसी उपयोगकर्ता के साथ शेयर किया गया. यह YouTube के 'शेयर करना' टैब की तरह है, जो Google Photos ऐप्लिकेशन.

वे शेयर किए गए एल्बम जिन्हें उपयोगकर्ता ने अपनी Google Photos लाइब्रेरी में जोड़ा है लिस्टिंग एल्बम कॉल में भी लौटाए जाते हैं. बनाएं लाइब्रेरी API के ज़रिए शेयर किए गए एल्बम को सूचीबद्ध करने के लिए कॉल करें:

आरामJavaPHP

अनुरोध का एक सैंपल यहां दिया गया है:

GET https://photoslibrary.googleapis.com/v1/sharedAlbums

अनुरोध करने पर यह नतीजा मिलता है:

{
 
"sharedAlbums": [...]
 
"nextPageToken": "token-for-pagination"
}
try {
 
// Make a request to list all albums that have been shared by the user
 
// Iterate over all the albums in this list
 
// Pagination is handled automatically
 
ListSharedAlbumsPagedResponse response = photosLibraryClient.listSharedAlbums();

 
for (Album album : response.iterateAll()) {
   
// ..
 
}

} catch (ApiException e) {
 
// Handle error
}
try {
   
// Make a request to list all albums that have been shared by the user
   
// Iterate over all the albums in this list
   
// Pagination is handled automatically
    $response
= $photosLibraryClient->listSharedAlbums();
   
foreach ($response->iterateAllElements() as $album) {
       
// ...
   
}
} catch (\Google\ApiCore\ApiException $e) {
   
// Handle error
}

sharedAlbums में एल्बम की एक सूची शामिल है. ज़्यादा जानकारी के लिए, यह देखें एल्बम की सूची. इस जवाब में एक nextPageToken भी शामिल है. ज़्यादा जानकारी के लिए, पेज पर नंबर डालना देखें.

आपके ऐप्लिकेशन ने जो एल्बम बनाए और शेयर किए हैं उनमें एक और shareInfo शामिल होता है प्रॉपर्टी. ज़्यादा जानकारी के लिए, शेयर करें मीडिया.

लिस्टिंग ऐप्लिकेशन से बनाए गए एल्बम

आप उन एल्बम की सूची बना सकते हैं जिन्हें आपके ऐप्लिकेशन ने इस ऐप्लिकेशन से बनाया है इन कॉल में excludeNonAppCreatedData को true पर सेट किया गया:

आरामJavaPHP

यहां उपयोगकर्ता के एल्बम से सभी एल्बम को सूचीबद्ध करने के लिए एक GET अनुरोध दिया गया है सिर्फ़ आपके ऐप्लिकेशन से बनाई गई Google Photos लाइब्रेरी:

GET https://photoslibrary.googleapis.com/v1/albums?excludeNonAppCreatedData=true
Content-type: application/json
Authorization: Bearer oauth2-token

यहां उपयोगकर्ता के सिर्फ़ आपके ऐप्लिकेशन से बनाई गई Google Photos लाइब्रेरी:

GET https://photoslibrary.googleapis.com/v1/sharedAlbums?excludeNonAppCreatedData=true
Content-type: application/json
Authorization: Bearer oauth2-token
try {
 
// Make a request to list all albums that have been created by your app
 
boolean excludeNonAppCreatedData = true;

 
// Iterate over all the albums in this list
 
// Pagination is handled automatically
 
ListAlbumsPagedResponse response = photosLibraryClient.listAlbums(excludeNonAppCreatedData);

 
for (Album album : response.iterateAll()) {
   
// ..
 
}

} catch (ApiException e) {
 
// Handle error
}

try {
 
// Make a request to list all shared albums that have been created by your app
 
boolean excludeNonAppCreatedData = true;

 
// Iterate over all the albums in this list
 
// Pagination is handled automatically
 
ListSharedAlbumsPagedResponse response =
      photosLibraryClient
.listSharedAlbums(excludeNonAppCreatedData);

 
for (Album album : response.iterateAll()) {
   
// ..
 
}

} catch (ApiException e) {
 
// Handle error
}
try {
   
// Make a request to list all albums that have been created by your app
    $response
= $photosLibraryClient->listAlbums(['excludeNonAppCreatedData' => true]);

   
// Iterate over all the albums in this list
   
// Pagination is handled automatically
   
foreach ($response->iterateAllElements() as $album) {
       
// ...
   
}
} catch (\Google\ApiCore\ApiException $e) {
   
// Handle error
}

try {
   
// Make a request to list all shared albums that have been created by your app
    $response
= $photosLibraryClient->listSharedAlbums(['excludeNonAppCreatedData' => true]);

   
// Iterate over all the albums in this list
   
// Pagination is handled automatically
   
foreach ($response->iterateAllElements() as $album) {
       
// ...
   
}
} catch (\Google\ApiCore\ApiException $e) {
   
// Handle error
}

REST के लिए पेज नंबर

परफ़ॉर्मेंस को बेहतर बनाने के लिए, बहुत सारे नतीजे देने वाले तरीके (जैसे कि लिस्ट मेथड) रिस्पॉन्स को पेज पर नंबर कर सकता है. प्रत्येक कीवर्ड में परिणामों की अधिकतम संख्या यह पेज, pageSize पैरामीटर से दिखाया जाता है.

mediaItems:search और mediaItems:list पर किए जाने वाले कॉल के लिए, डिफ़ॉल्ट पेज साइज़ यह है 25 आइटम. हम इस पेज आकार का सुझाव देते हैं, क्योंकि यह रिस्पॉन्स का साइज़ और फ़िल रेट. मीडिया आइटम के लिए पेज का ज़्यादा से ज़्यादा साइज़ खोज और सूची के अनुरोध में 100 आइटम शामिल हैं.

एल्बम की सूची बनाते समय डिफ़ॉल्ट और सुझाया गया पेज साइज़ 20 एल्बम होता है. इसमें ज़्यादा से ज़्यादा 50 एल्बम.

जब उपलब्ध नतीजों की संख्या, पेज के साइज़ से ज़्यादा होती है, तो रिस्पॉन्स इसमें एक nextPageToken शामिल होता है. इससे आपके ऐप्लिकेशन को पता चलता है कि सर्वर से ज़्यादा नतीजे फ़ेच किए जा सकते हैं.

उदाहरण

आपको पैरामीटर के अगले अनुरोधों में nextPageToken को जोड़ना होगा pageToken, जैसा कि इस उदाहरण में दिखाया गया है. pageToken को एक साथ तय करें उसके मुख्य भाग में, कार्रवाई के लिए ज़रूरी दूसरे पैरामीटर के साथ अनुरोध या एक क्वेरी पैरामीटर के रूप में.

अनुरोध #1

{
 
"pageSize": "5",
 
"filters": { }
}

जवाब #1

{
 
"mediaItem": [ ],
 
"nextPageToken": "next-page-token"
}

अनुरोध #2

{
 
"pageSize": "5",
 
"filters": { },
 
"pageToken": "page-token"
}

जवाब #2

{
 
"mediaItem": [ ],
 
"nextPageToken": "next-page-token"
}

इस पैटर्न को तब तक जारी रखें, जब तक कि nextPageToken ऑब्जेक्ट हट न जाएं.

nextPageToken सिर्फ़ उसी अनुरोध के लिए मान्य है. अगर कोई पैरामीटर बदला गया है, पहले उपयोग किया गया nextPageToken का उपयोग उसी में नहीं किया जाना चाहिए अनुरोध.