লাইব্রেরি বিষয়বস্তু, অ্যালবাম, এবং মিডিয়া আইটেম তালিকা

প্রয়োজনীয় অনুমোদনের সুযোগ

Google Photos Library API-এ মিডিয়া আইটেম এবং অ্যালবাম অ্যাক্সেস করতে ব্যবহৃত একাধিক স্কোপ রয়েছে। বিভিন্ন কল থেকে প্রত্যাবর্তিত মিডিয়া আইটেমগুলি ভিন্ন যেগুলির উপর ভিত্তি করে বিকাশকারীর দ্বারা অনুরোধ করা হয়েছে৷

photoslibrary.readonly স্কোপ ব্যবহারকারীর লাইব্রেরির সমস্ত মিডিয়া আইটেম অ্যাক্সেসের অনুমতি দেয়৷ photoslibrary.readonly.appcreateddata স্কোপ শুধুমাত্র অ্যাপ দ্বারা তৈরি মিডিয়া আইটেমগুলিতে অ্যাক্সেসের অনুমতি দেয়৷ আরও তথ্যের জন্য, অনুমোদনের সুযোগগুলি দেখুন।

ওভারভিউ

API-এর একটি গুরুত্বপূর্ণ ব্যবহার হল মিডিয়া আইটেমগুলির তালিকা করা যা ব্যবহারকারী Google Photos-এ ব্যাক আপ করেছেন। একটি নির্দিষ্ট অ্যালবামের আইটেম বা ব্যবহারকারীর সম্পূর্ণ লাইব্রেরি থেকে (Google Photos অ্যাপে ডিফল্ট ভিউ) তালিকাভুক্ত করা যেতে পারে।

আপনি ব্যবহারকারীর লাইব্রেরি থেকে আইটেম তালিকাভুক্ত করার সময় একটি নির্দিষ্ট তারিখ, বিষয়বস্তু বিভাগ বা মিডিয়া প্রকারের সাথে মেলে এমন ফটো নির্বাচন করতে ফিল্টার ব্যবহার করতে পারেন। আপনি যখন অ্যালবাম থেকে আইটেম তালিকাভুক্ত করেন তখন এই বৈশিষ্ট্যটি সমর্থিত নয়৷

লাইব্রেরি এবং অ্যালবামের বিষয়বস্তু তালিকাভুক্ত করা মিডিয়া আইটেমগুলির একটি তালিকা প্রদান করে। একটি অ্যালবামের অংশ সমৃদ্ধকরণ অন্তর্ভুক্ত করা হয় না। মিডিয়া আইটেম একটি ফটো, ভিডিও, বা অন্যান্য মিডিয়া বর্ণনা করে। একটি mediaItem আইটেমের সরাসরি লিঙ্ক, Google ফটোতে আইটেমের একটি লিঙ্ক এবং অন্যান্য প্রাসঙ্গিক মেটাডেটা অন্তর্ভুক্ত করে। আরও তথ্যের জন্য, মিডিয়া আইটেম এবং mediaItems অ্যাক্সেস করুন দেখুন।

লিস্টিং অ্যালবাম

আপনি albums.list ব্যবহার করে ব্যবহারকারীর অ্যালবামের একটি তালিকা পুনরুদ্ধার করতে পারেন।

বিশ্রাম

এখানে একটি নমুনা অনুরোধ:

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 ফটোতে অ্যালবামের দিকে নির্দেশ করে যা ব্যবহারকারীর দ্বারা খোলা হতে পারে।

coverPhotoMediaItemId মিডিয়া আইটেম আইডি রয়েছে যা এই অ্যালবামের কভার ফটোকে উপস্থাপন করে৷ এই কভার চিত্রটি অ্যাক্সেস করতে, coverPhotoBaseUrl ব্যবহার করুন। অতিরিক্ত প্যারামিটার উল্লেখ না করে সরাসরি coverPhotoBaseUrl ব্যবহার করা উচিত নয়।

যে অ্যালবামগুলি ব্যবহারকারীর অ্যাকাউন্টে তৈরি করা হয়েছে বা ব্যবহারকারীর অ্যাকাউন্টে যোগ করা হয়েছে এবং যেগুলি আপনার অ্যাপ শেয়ার করেছে তাতে একটি অতিরিক্ত shareInfo প্রপার্টি অন্তর্ভুক্ত রয়েছে। আরও বিস্তারিত জানার জন্য, শেয়ার মিডিয়া দেখুন।

আপনি অ্যালবামে মিডিয়া আইটেম তৈরি করতে পারেন কিনা তা নির্দেশ করার জন্য অ্যালবামে একটি isWriteable পতাকাও থাকতে পারে। এই পতাকাটি ডিফল্ট হিসাবে false হয়ে যায় যদি এটি ফেরত না দেওয়া হয়। এটি নিম্নলিখিতগুলি সহ আপনার আবেদনে প্রদত্ত অ্যাক্সেসের উপর নির্ভরশীল:

  • যিনি অ্যালবামটি তৈরি করেছেন।
  • যদি শেয়ার করা হয় বা না হয়।
  • ব্যবহারকারী অনুমোদন করেছে কি সুযোগ .

এই মানদণ্ডের যে কোনো পরিবর্তন হলে এই পতাকা পরিবর্তন হতে পারে। আরও বিস্তারিত জানার জন্য, অ্যালবাম তৈরি করুন দেখুন। প্রতিক্রিয়াটিতে একটি nextPageToken ও রয়েছে। আরও তথ্যের জন্য, পেজিনেশন দেখুন।

খালি অ্যালবামের প্রতিক্রিয়া এতে পরিবর্তিত হয়, mediaItemsCount এবং coverPhotoMediaItemId ডিফল্টরূপে 0 এ সেট করা থাকে এবং REST প্রতিক্রিয়া থেকে বাদ দেওয়া হয়। এছাড়াও লক্ষ্য করুন যে coverPhotoBaseUrl একটি ডিফল্ট স্থানধারক চিত্রকে নির্দেশ করে।

লাইব্রেরি বিষয়বস্তু তালিকা

আপনি ব্যবহারকারীর Google ফটো লাইব্রেরি থেকে সমস্ত মিডিয়া আইটেম তালিকাভুক্ত করতে পারেন৷ এটি সংরক্ষণাগারভুক্ত এবং মুছে ফেলা আইটেমগুলি বাদ দেয়। আপনি ফিল্টার প্রয়োগ করে মিডিয়া আইটেমগুলি তাদের বিষয়বস্তু, তারিখ এবং অন্যান্য বৈশিষ্ট্যের উপর ভিত্তি করে তালিকাভুক্ত করতে পারেন। ব্যবহারকারী যদি তাদের লাইব্রেরিতে Google Photos-এর শেয়ারিং ট্যাবে উপলব্ধ কোনো আইটেম যোগ না করে থাকে, তাহলে সেই আইটেমটি এই তালিকায় অন্তর্ভুক্ত করা হয় না।

একটি মিডিয়া আইটেম পুনরুদ্ধার করতে, mediaItems.list কল করুন।

বিশ্রাম

এখানে একটি নমুনা অনুরোধ:

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

GET অনুরোধ নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:

{
  "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 ত্রুটি ফেরত দেওয়া হয়। ত্রুটি পরিচালনা সংক্রান্ত আরও বিশদ বিবরণের জন্য, কর্মক্ষমতা টিপস এবং সর্বোত্তম অনুশীলন দেখুন।

বিশ্রাম

এখানে একটি নমুনা অনুরোধ:

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

POST অনুরোধ নিম্নলিখিত প্রতিক্রিয়া প্রদান করে:

{
  "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 ত্রুটি দেখা দেয়।

শেয়ার করা অ্যালবামের তালিকা করা হচ্ছে

আপনি ব্যবহারকারী শেয়ার করেছেন বা ব্যবহারকারীর সাথে শেয়ার করা হয়েছে এমন সমস্ত অ্যালবামের একটি তালিকা পুনরুদ্ধার করতে পারেন৷ এটি Google Photos অ্যাপের শেয়ারিং ট্যাবের মতো।

শেয়ার করা অ্যালবামগুলি যেগুলি ব্যবহারকারী তাদের Google ফটো লাইব্রেরিতে যোগ করেছে তাও তালিকা অ্যালবাম কলে ফেরত দেওয়া হয়৷ লাইব্রেরি API এর মাধ্যমে শেয়ার করা অ্যালবামগুলি তালিকাভুক্ত করতে নিম্নলিখিত কল করুন:

বিশ্রাম

এখানে একটি নমুনা অনুরোধ:

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 সম্পত্তি অন্তর্ভুক্ত রয়েছে। আরও বিস্তারিত জানার জন্য, শেয়ার মিডিয়া দেখুন।

লিস্টিং অ্যাপ অ্যালবাম তৈরি করেছে

আপনি নিম্নলিখিত কলগুলিতে true সেট করে excludeNonAppCreatedData সহ আপনার অ্যাপ দ্বারা তৈরি করা অ্যালবামগুলির তালিকা করতে পারেন:

বিশ্রাম

শুধুমাত্র আপনার অ্যাপ দ্বারা তৈরি ব্যবহারকারীর Google ফটো লাইব্রেরি থেকে সমস্ত অ্যালবাম তালিকাভুক্ত করার জন্য এখানে একটি GET অনুরোধ রয়েছে:

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

শুধুমাত্র আপনার অ্যাপ দ্বারা তৈরি ব্যবহারকারীর Google ফটো লাইব্রেরি থেকে শেয়ার করা অ্যালবামগুলিকে তালিকাভুক্ত করার জন্য এখানে একটি GET অনুরোধ রয়েছে:

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 অন্তর্ভুক্ত করে, যা আপনার অ্যাপ্লিকেশনকে নির্দেশ করে যে সার্ভার থেকে আরও ফলাফল আনা হবে।

উদাহরণ

নিম্নলিখিত উদাহরণে দেখানো হয়েছে, প্যারামিটার pageToken এ আপনাকে পরবর্তী অনুরোধের সাথে nextPageToken যোগ করতে হবে। অপারেশনের জন্য প্রয়োজনীয় অন্যান্য প্যারামিটারের সাথে 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 একই অনুরোধে ব্যবহার করা উচিত নয়।