फ़ोटो लाइब्रेरी या एल्बम के कॉन्टेंट की सूची देखने के लिए कॉल करने के बाद, आपके ऐप्लिकेशन को मीडिया आइटम के आईडी सेव करने चाहिए, न कि मीडिया आइटम को सेव करना चाहिए. ऐसा इसलिए है, क्योंकि मीडिया आइटम का कॉन्टेंट बदल सकता है और कुछ समय बाद, जवाब में शामिल यूआरएल की समयसीमा खत्म हो जाती है. मीडिया आइटम आईडी, उपयोगकर्ता की लाइब्रेरी में मौजूद फ़ोटो या वीडियो जैसे मीडिया आइटम की खास तौर पर पहचान करता है.
ध्यान दें कि आपके ऐप्लिकेशन को उपयोगकर्ता की फ़ोटो या वीडियो को लंबे समय तक कैश मेमोरी में सेव नहीं करना चाहिए. हालांकि, इस्तेमाल के उदाहरण के आधार पर, मीडिया आइटम का आईडी ज़रूरत के मुताबिक सेव या कैश मेमोरी में सेव किया जा सकता है. आपको यह भी ध्यान रखना चाहिए कि उपयोगकर्ता के डेटा को ऐक्सेस करने के लिए, निजता से जुड़ी जवाबदेही का पालन करना ज़रूरी है.
अनुमति के लिए ज़रूरी स्कोप
मीडिया आइटम ऐक्सेस करने के लिए, आपके ऐप्लिकेशन को यहां दिए गए अनुमति के दायरे में से कम से कम किसी एक का अनुरोध करना होगा. जवाब में मिले मीडिया आइटम का ऐक्सेस, आपके अनुरोध किए गए स्कोप पर निर्भर करता है.
photoslibrary.readonly
, उपयोगकर्ता की लाइब्रेरी में मौजूद सभी मीडिया आइटम को ऐक्सेस करने की अनुमति देता हैphotoslibrary.readonly.appcreateddata
सिर्फ़ उन मीडिया आइटम को ऐक्सेस करने की अनुमति देता है जिन्हें ऐप्लिकेशन ने बनाया है
मीडिया आइटम
mediaItem
, मीडिया के बारे में जानकारी देता है. जैसे, Google Photos लाइब्रेरी में अपलोड की गई फ़ोटो या वीडियो. यह एक टॉप-लेवल ऑब्जेक्ट है और इसके मीडिया टाइप के आधार पर, इसकी प्रॉपर्टी अलग-अलग हो सकती हैं.
यहां दी गई टेबल में mediaItem
प्रॉपर्टी की सूची दी गई है:
प्रॉपर्टी | |
---|---|
id |
स्थायी और स्थायी आईडी, जिसका इस्तेमाल ऑब्जेक्ट की पहचान करने के लिए किया जाता है. |
description |
मीडिया आइटम का ब्यौरा, जैसा कि Google Photos में दिखता है. |
baseUrl |
इसका इस्तेमाल, रॉ बाइट को ऐक्सेस करने के लिए किया जाता है. ज़्यादा जानकारी के लिए, बेस यूआरएल देखें. |
productUrl |
Google Photos में मौजूद इमेज का लिंक. इस लिंक को डेवलपर नहीं खोल सकता. इसे सिर्फ़ उपयोगकर्ता खोल सकता है. यूआरएल, लाइब्रेरी में मौजूद किसी मीडिया आइटम पर ले जाते हैं. अगर यूआरएल किसी एल्बम खोज से मिला था, तो वह एल्बम में मौजूद आइटम पर ले जाता है. |
mimeType |
मीडिया आइटम किस तरह का है, ताकि मीडिया के टाइप को आसानी से पहचानने में मदद मिल सके (उदाहरण के लिए: image/jpg ). |
filename |
Google Photos ऐप्लिकेशन में उपयोगकर्ता को दिखाए गए मीडिया आइटम का फ़ाइल नाम (आइटम की जानकारी वाले सेक्शन में). |
mediaMetadata |
यह इस बात पर निर्भर करता है कि मीडिया किस तरह का है, जैसे कि photo
या video .
पेलोड को कम करने के लिए, फ़ील्ड मास्क का इस्तेमाल किया जा सकता है.
|
contributorInfo |
इस फ़ील्ड में डेटा सिर्फ़ तब अपने-आप भरता है, जब मीडिया आइटम इस ऐप्लिकेशन के बनाए गए किसी शेयर किए गए एल्बम
में हो और उपयोगकर्ता ने
इसमें उस योगदान देने वाले व्यक्ति के बारे में जानकारी होती है जिसने यह मीडिया आइटम जोड़ा है. ज़्यादा जानकारी के लिए, मीडिया शेयर करना लेख पढ़ें. |
मीडिया आइटम पाना
मीडिया आइटम वापस पाने के लिए, mediaItemId
का इस्तेमाल करके mediaItems.get को कॉल करें. इस अनुरोध से एक मीडिया आइटम मिलता है.
mediaItem
में आईडी, ब्यौरा, और यूआरएल जैसी प्रॉपर्टी होती हैं. photo
या video
में मौजूद अतिरिक्त जानकारी, फ़ाइल में मौजूद मेटाडेटा पर आधारित होती है. ऐसा हो सकता है कि सभी प्रॉपर्टी मौजूद न हों. ContributorInfo
में, शेयर किए गए एल्बम में मौजूद आइटम का मेटाडेटा होता है. यह फ़ील्ड सिर्फ़ तब शामिल किया जाता है, जब शेयर किए गए किसी ऐसे एल्बम का कॉन्टेंट दिखाया जा रहा हो जिसमें उपयोगकर्ता ने photoslibrary.sharing
अनुमति का दायरा दिया हो.
अगर मीडिया आइटम कोई वीडियो है, तो वीडियो फ़ाइल को पहले प्रोसेस करना होगा. mediaItem
में mediaMetadata
के अंदर एक status
फ़ील्ड होता है, जिसमें वीडियो फ़ाइल की प्रोसेसिंग की स्थिति के बारे में बताया जाता है. नई अपलोड की गई फ़ाइल, PROCESSING
वैल्यू के साथ videoProcessingStatus
दिखाती है. इसके बाद, इसे READY
के तौर पर इस्तेमाल किया जा सकता है. वीडियो मीडिया आइटम का baseUrl
तब तक उपलब्ध नहीं होता, जब तक वीडियो को प्रोसेस नहीं किया जाता.
यहां एक जीईटी अनुरोध दिया गया है:
GET https://photoslibrary.googleapis.com/v1/mediaItems/media-item-id Content-type: application/json Authorization: Beareroauth2-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 "
}
}
फ़ोटो प्रॉपर्टी में, फ़ोटो आइटम का मेटाडेटा होता है.
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
}
फ़ोटो प्रॉपर्टी में, फ़ोटो आइटम का मेटाडेटा होता है.
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
}
एक से ज़्यादा मीडिया आइटम पाना
आइडेंटिफ़ायर के हिसाब से एक से ज़्यादा मीडिया आइटम वापस पाने के लिए, mediaItemId
का इस्तेमाल करके mediaItems.batchGet
को कॉल करें.
अनुरोध में दिए गए मीडिया आइटम आइडेंटिफ़ायर के क्रम में, अनुरोध से MediaItemResults
की सूची मिलती है. हर नतीजे में एक MediaItem
या कोई गड़बड़ी होने पर एक Status
शामिल होता है.
एक बार में ज़्यादा से ज़्यादा 50 मीडिया आइटम का अनुरोध किया जा सकता है. मीडिया आइटम की सूची में डुप्लीकेट आइडेंटिफ़ायर नहीं होने चाहिए. साथ ही, यह सूची खाली नहीं होनी चाहिए.
यहां एक 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: Beareroauth2-token
जीईटी अनुरोध से यह रिस्पॉन्स मिलता है:
{
"mediaItemResults": [
{
"mediaItem": {
"id": "media-item-id ",
...
}
},
{
"mediaItem": {
"id": "another-media-item-id ",
...
}
},
{
"status": {
"code": 3,
"message": "Invalid media item ID."
}
}
]
}
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
}
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
}
बेस यूआरएल
Google Photos Library API में मौजूद बेस यूआरएल की मदद से, मीडिया आइटम के बाइट ऐक्सेस किए जा सकते हैं. अलग-अलग बेस यूआरएल का इस्तेमाल करके, आपका ऐप्लिकेशन मीडिया आइटम डाउनलोड कर सकता है या अपने ऐप्लिकेशन में मीडिया आइटम दिखा सकता है. बेस यूआरएल ऐसी स्ट्रिंग होती हैं जिन्हें एल्बम की सूची बनाने या मीडिया आइटम ऐक्सेस करने पर, रिस्पॉन्स में शामिल किया जाता है. ये 60 मिनट के लिए मान्य होते हैं. साथ ही, इनका इस्तेमाल सीधे तौर पर नहीं किया जा सकता. इसके लिए, इनमें अतिरिक्त पैरामीटर जोड़ने की ज़रूरत होती है.
अलग-अलग बेस यूआरएल ये हैं:
baseUrl
: सीधे तौर पर फ़ोटो या वीडियो का थंबनेल ऐक्सेस करें या वीडियो के बाइट डाउनलोड करें.coverPhotoBaseUrl
: एल्बम की कवर फ़ोटो को सीधे ऐक्सेस करें.profilePictureBaseUrl
:mediaItem
के मालिक की प्रोफ़ाइल फ़ोटो को सीधे ऐक्सेस करें.
इमेज के बेस यूआरएल
यहां उन विकल्पों की सूची दी गई है जिनका इस्तेमाल इमेज के बेस यूआरएल के साथ किया जा सकता है:
पैरामीटर | |
---|---|
w , h |
जानकारी चौड़ाई, किसी इमेज मीडिया आइटम को ऐक्सेस करने के लिए, आपको वे डाइमेंशन बताने होंगे जिन्हें आपको अपने ऐप्लिकेशन में दिखाना है. जैसे, किसी वीडियो के लिए फ़ोटो या थंबनेल. ऐसा इसलिए करना होगा, ताकि आसपेक्ट रेशियो को बनाए रखते हुए, इमेज को इन डाइमेंशन में स्केल किया जा सके. ऐसा करने के लिए, बेस यूआरएल को ज़रूरी डाइमेंशन के साथ जोड़ें, जैसा कि उदाहरणों में दिखाया गया है. उदाहरण:
यहां एक ऐसे मीडिया आइटम को दिखाने का उदाहरण दिया गया है जिसकी चौड़ाई 2048 पिक्सल से ज़्यादा और उसकी लंबाई 1024 पिक्सल से ज़्यादा न हो: https://lh3.googleusercontent.com/p/AF....VnnY=w2048-h1024 |
c |
जानकारी फ़ोटो का काटा गया हिस्सा, अगर आपको इमेज को अपनी तय की गई चौड़ाई और लंबाई के डाइमेंशन में काटना है, तो ज़रूरी साइज़ (पिक्सल में), [1, 16383] की रेंज में होना चाहिए. अगर इमेज की चौड़ाई या ऊंचाई, अनुरोध किए गए साइज़ से ज़्यादा है, तो इमेज को आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) बनाए रखते हुए, छोटा और काटा जाता है. उदाहरण:
इस उदाहरण में, ऐप्लिकेशन ऐसा मीडिया आइटम दिखाता है जो बिल्कुल 256 पिक्सल चौड़ा और 256 पिक्सल ऊंचा होता है. जैसे, कोई थंबनेल: https://lh3.googleusercontent.com/p/AF....VnnY=w256-h256-c |
d |
जानकारी डाउनलोड, अगर आपको जगह की जानकारी वाले मेटाडेटा को छोड़कर, इमेज का सारा Exif मेटाडेटा बनाए रखते हुए उसे डाउनलोड करना है, तो बेस यूआरएल को उदाहरण:
इस उदाहरण में, ऐप्लिकेशन जगह की जानकारी वाले मेटाडेटा को छोड़कर, सभी मेटाडेटा के साथ इमेज डाउनलोड करता है: https://lh3.googleusercontent.com/p/Az....XabC=d |
वीडियो के बेस यूआरएल
यहां उन विकल्पों की सूची दी गई है जिनका इस्तेमाल वीडियो के बेस यूआरएल के साथ किया जा सकता है:
पैरामीटर | |
---|---|
dv |
जानकारी किसी वीडियो dv पैरामीटर, ओरिजनल वीडियो के अच्छी क्वालिटी वाले ट्रांसकोड किए गए वर्शन का अनुरोध करता है. यह पैरामीटर, w और h पैरामीटर के साथ काम नहीं करता. वीडियो डाउनलोड करने के लिए बेस यूआरएल से, बिट भेजने में कुछ सेकंड लग सकते हैं. इस पैरामीटर का इस्तेमाल करने से पहले, देख लें कि मीडिया आइटम का
उदाहरण:
नीचे दिए गए उदाहरण में, वीडियो के बाइट डाउनलोड करने का तरीका बताया गया है: https://lh3.googleusercontent.com/p/AF....BsdZ=dv |
w , h , c , और
d |
जानकारी वीडियो का थंबनेल ऐक्सेस करने के लिए, इमेज के बेस यूआरएल के पैरामीटर में से किसी एक का इस्तेमाल करें. डिफ़ॉल्ट रूप से, सभी वीडियो थंबनेल में 'प्लेबैक' बटन का ओवरले शामिल होता है. इस ओवरले को हटाने के लिए, -no पैरामीटर देखें. उदाहरण: उदाहरणों के लिए, इमेज के बेस यूआरएल की टेबल देखें. |
no |
जानकारी थंबनेल ओवरले हटाएं, अगर आपको प्लेबैक बटन के ओवरले के बिना वीडियो का थंबनेल वापस पाना है, तो बेस यूआरएल को no पैरामीटर के साथ जोड़ें. no पैरामीटर का इस्तेमाल, कम से कम एक इमेज के बेस यूआरएल पैरामीटर के साथ करना ज़रूरी है. उदाहरण:
नीचे दिए गए उदाहरण में, वीडियो का एक थंबनेल दिखाया गया है, जिसकी चौड़ाई 1280 पिक्सल और ऊंचाई 720 पिक्सल है. साथ ही, इसमें वीडियो चलाने के बटन का ओवरले नहीं है: https://lh3.googleusercontent.com/p/AF....VnnY=w1280-h720-no |
मोशन फ़ोटो के बेस यूआरएल
मोशन फ़ोटो में फ़ोटो और वीडियो, दोनों एलिमेंट होते हैं. मोशन फ़ोटो baseUrl
के अनुरोधों के लिए, इमेज बेस यूआरएल या वीडियो बेस यूआरएल में से किसी एक के पैरामीटर का इस्तेमाल किया जा सकता है.
पैरामीटर | |
---|---|
dv |
जानकारी किसी मोशन फ़ोटो मीडिया आइटम के वीडियो एलिमेंट को वापस पाने के लिए, |
w , h , c , और
d |
जानकारी मोशन फ़ोटो मीडिया आइटम का फ़ोटो एलिमेंट पाने के लिए, इमेज के बेस यूआरएल के फ़ॉर्मैट का इस्तेमाल करें. |