محدوده مجوز مورد نیاز
Google Photos Library API شامل چندین حوزه است که برای دسترسی به آیتمهای رسانه و آلبومها استفاده میشود. آیتمهای رسانهای که از تماسهای مختلف بازگردانده میشوند، بر اساس درخواستهای توسعهدهنده، متفاوت هستند.
محدوده photoslibrary.readonly
امکان دسترسی به تمام موارد رسانه ای در کتابخانه کاربر را فراهم می کند. محدوده photoslibrary.readonly.appcreateddata
فقط به موارد رسانه ای که توسط برنامه ایجاد شده اند دسترسی داشته باشید. برای اطلاعات بیشتر، به محدوده مجوز مراجعه کنید.
فیلترهای موجود
شما می توانید کتابخانه کاربر را برای انواع خاصی از رسانه ها جستجو کنید. به عنوان مثال، ممکن است فقط مواردی را بخواهید که مربوط به حیوانات هستند، از یک روز خاص، یا ممکن است بخواهید عکسهای رسید را حذف کنید. میتوانید با اعمال فیلترها در فهرست آلبوم یا کتابخانه، موارد خاصی را حذف یا اضافه کنید. پنج فیلتر موجود بر اساس ویژگی های آیتم رسانه وجود دارد:
- دسته بندی محتوا (
includedContentCategories
,excludedContentCategories
) - تاریخ ها و محدوده های تاریخ (
dates
،ranges
) - ویژگی ها (
featureFilter
) - انواع رسانه (
mediaTypeFilter
) - وضعیت بایگانی شده (
includeArchivedMedia
)
اگر albumId
تنظیم شده باشد، نباید از فیلترها در درخواست mediaItems:search
استفاده شود. اگر هنگام تنظیم آلبومId از فیلتر استفاده شود، یک خطای INVALID_ARGUMENT
(400) برگردانده می شود.
نتایج بر اساس زمان ایجاد آیتم رسانه مرتب شده اند. ترتیب مرتب سازی را می توان برای درخواست ها با استفاده از فیلترهای تاریخ تغییر داد .
کمی زمان بگذارید تا رسانههای تازه آپلود شده در جستجوهای شما ظاهر شوند. رسانه بلافاصله در جستجوهای بدون فیلتر ظاهر می شود.
موارد رسانه ای که دارای تاریخ در آینده هستند در جستجوهای فیلتر شده ظاهر نمی شوند. آنها در جستجوهای فیلتر نشده و جستجوهای آلبوم ظاهر می شوند.
اعمال فیلتر
برای اعمال فیلتر، mediaItems.search
را فراخوانی کنید و ویژگی filter
را مشخص کنید.
استراحت
در اینجا یک درخواست POST وجود دارد:
POST https://photoslibrary.googleapis.com/v1/mediaItems:search Content-type: application/json Authorization: Bearer oauth2-token { "pageSize": "100", "filters": { ... } }
درخواست POST پاسخ زیر را برمیگرداند:
{ "mediaItems": [ ... ], "nextPageToken": "token-for-pagination" }
جاوا
try { // Create a new Filter object Filters filters = Filters.newBuilder() // .setContentFilter(...) // .setDateFilter(...) // ... .build(); // Specify the Filter object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters); for (MediaItem item : response.iterateAll()) { // ... } } catch (ApiException e) { // Handle error }
PHP
try { $filtersBuilder = new FiltersBuilder(); // $filtersBuilder->addIncludedCategory(...); // $filtersBuilder->addDate(...); // ... // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] ); foreach ($response->iterateAllElements() as $element) { // ... } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
برای جزئیات، به فهرست محتویات کتابخانه، آلبوم ها و موارد رسانه مراجعه کنید.
دسته بندی محتوا
همه موارد رسانه پردازش شده و برچسبهایی به آنها اختصاص داده میشود. می توانید هر یک از دسته بندی های زیر را شامل و حذف کنید.
ANIMALS | FASHION | LANDMARKS | RECEIPTS | WEDDINGS |
ARTS | FLOWERS | LANDSCAPES | SCREENSHOTS | WHITEBOARDS |
BIRTHDAYS | FOOD | NIGHT | SELFIES | |
CITYSCAPES | GARDENS | PEOPLE | SPORT | |
CRAFTS | HOLIDAYS | PERFORMANCES | TRAVEL | |
DOCUMENTS | HOUSES | PETS | UTILITY |
عکس های کاربردی طیف وسیعی از رسانه ها را پوشش می دهند. این دسته به طور کلی شامل مواردی است که کاربر برای انجام برخی کارها گرفته است و بعید است که پس از تکمیل آن کار بخواهد. این شامل اسناد، رسیدها، اسکرین شات ها، یادداشت های چسبنده، منوها و سایر موارد رسانه ای مشابه است.
دستهها فقط به اندازه برچسبهای مشابه در Google Photos دقیق هستند. در مواقعی، موارد ممکن است به اشتباه برچسب گذاری شوند، بنابراین ما صحت فیلترهای دسته بندی محتوا را تضمین نمی کنیم.
از جمله دسته ها
وقتی چندین دسته را اضافه می کنید، آیتم های رسانه ای که با هر یک از دسته ها مطابقت دارند، گنجانده می شوند. حداکثر 10 دسته می تواند در هر درخواست گنجانده شود. این فیلتر مثال، موارد LANDSCAPES
یا LANDMARKS
را برمیگرداند.
استراحت
{ "filters": { "contentFilter": { "includedContentCategories": [ "LANDSCAPES", "LANDMARKS" ] } } }
جاوا
// Create a content filter that includes landmarks and landscapes ContentFilter contentFilter = ContentFilter.newBuilder() .addIncludedContentCategories(ContentCategory.LANDMARKS) .addIncludedContentCategories(ContentCategory.LANDSCAPES) .build(); // Create a new Filters object Filters filters = Filters.newBuilder() .setContentFilter(contentFilter) .build(); // Specify the Filter object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create a content filter that includes landmarks and landscapes $filtersBuilder = new FiltersBuilder(); $filtersBuilder->addIncludedCategory(ContentCategory::LANDMARKS); $filtersBuilder->addIncludedCategory(ContentCategory::LANDSCAPES); // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
به استثنای دسته ها
فقط موارد رسانه ای که با هیچ یک از دسته بندی های حذف شده مطابقت ندارند نشان داده می شوند. مشابه دستههای گنجانده شده، در هر درخواست میتوان حداکثر 10 دسته را حذف کرد.
این فیلتر مواردی را که PEOPLE
یا SELFIES
نیستند برمیگرداند:
استراحت
{ "filters": { "contentFilter": { "excludedContentCategories": [ "PEOPLE", "SELFIES" ] } } }
جاوا
// Create a content filter that excludes people and selfies ContentFilter contentFilter = ContentFilter.newBuilder() .addExcludedContentCategories(ContentCategory.PEOPLE) .addExcludedContentCategories(ContentCategory.SELFIES) .build(); // Create a new Filters object Filters filters = Filters.newBuilder() .setContentFilter(contentFilter) .build(); // Specify the Filter object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create a content filter that excludes people and selfies $filtersBuilder = new FiltersBuilder(); $filtersBuilder->addExcludedCategory(ContentCategory::PEOPLE); $filtersBuilder->addExcludedCategory(ContentCategory::SELFIES); // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
شامل و حذف چندین دسته
می توانید برخی از دسته ها را بگنجانید و برخی دیگر را حذف کنید. مثال زیر LANDSCAPES
و LANDMARKS
را برمیگرداند، اما موارد رسانهای که حاوی PEOPLE
یا SELFIES
هستند را حذف میکند:
استراحت
{ "filters": { "contentFilter": { "includedContentCategories": [ "LANDSCAPES", "LANDMARKS" ], "excludedContentCategories": [ "PEOPLE", "SELFIES" ] } } }
جاوا
// Create a content filter that excludes people and selfies and includes landmarks and landscapes ContentFilter contentFilter = ContentFilter.newBuilder() .addIncludedContentCategories(ContentCategory.LANDSCAPES) .addIncludedContentCategories(ContentCategory.LANDMARKS) .addExcludedContentCategories(ContentCategory.PEOPLE) .addExcludedContentCategories(ContentCategory.SELFIES) .build(); // Create a new Filters object Filters filters = Filters.newBuilder() .setContentFilter(contentFilter) .build(); // Specify the Filters object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create a content filter that excludes people and selfies and includes landmarks and landscapes $filtersBuilder = new FiltersBuilder(); $filtersBuilder->addIncludedCategory(ContentCategory::LANDMARKS); $filtersBuilder->addIncludedCategory(ContentCategory::LANDSCAPES); $filtersBuilder->addExcludedCategory(ContentCategory::PEOPLE); $filtersBuilder->addExcludedCategory(ContentCategory::SELFIES); // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
تاریخ ها و محدوده تاریخ
فیلترهای تاریخ، تاریخ نتایج برگشتی را به مجموعه ای از روزهای مشخص محدود می کند. دو راه برای تعیین فیلتر تاریخ وجود دارد: تاریخ یا محدوده. تاریخ ها و محدوده ها را می توان با هم استفاده کرد. آیتم های رسانه ای که با هر یک از تاریخ ها یا محدوده های تاریخ مطابقت دارند، برگردانده می شوند. به صورت اختیاری، ترتیب مرتب سازی نتایج را می توان تغییر داد.
خرما
تاریخ شامل یک سال، ماه و روز است. فرمت های زیر قابل قبول است:
- سال
- سال، ماه
- سال، ماه، روز
- ماه، روز
- ماه
جایی که یک جزء از تاریخ خالی است یا روی صفر تنظیم شده است، به عنوان یک علامت عام در نظر گرفته می شود. به عنوان مثال، اگر روز و ماه را تنظیم کنید، اما سال را نه، مواردی را از آن روز و ماه هر سال درخواست می کنید:
استراحت
{ "filters": { "dateFilter": { "dates": [ { "month": 2, "day": 15 } ] } } }
جاوا
// Create a new com.google.type.Date object using a builder // Note that there are different valid combinations as described above Date dayFebruary15 = Date.newBuilder() .setDay(15) .setMonth(2) .build(); // Create a new dateFilter. You can also set multiple dates here DateFilter dateFilter = DateFilter.newBuilder() .addDates(dayFebruary15) .build(); // Create a new Filters object Filters filters = Filters.newBuilder() .setDateFilter(dateFilter) .build(); // Specify the Filters object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create a new Google\Type\Date object with a day and a month // Note that there are different valid combinations as described above $dateFebruary15 = new Date(); $dateFebruary15->setDay(15); $dateFebruary15->setMonth(2); $filtersBuilder = new FiltersBuilder(); // Add the date to the filter. You can also set multiple dates here $filtersBuilder->addDate($dateFebruary15); // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
محدوده تاریخ
محدوده تاریخ انعطاف پذیری بیشتری نسبت به تاریخ ارائه می دهد. برای مثال، بهجای افزودن چندین تاریخ، میتوان از یک محدوده تاریخ برای مشاهده مجموعهای از روزها در یک ماه استفاده کرد.
یک محدوده تاریخ دارای یک startDate
و endDate
است که هر دو باید تنظیم شوند. هر تاریخ در محدوده دارای محدودیتهای قالب مشابهی است که در Dates توضیح داده شده است. تاریخ ها باید فرمت یکسانی داشته باشند: اگر تاریخ شروع یک سال و یک ماه باشد، تاریخ پایان نیز باید یک سال و یک ماه باشد. محدودهها بهطور شامل اعمال میشوند، تاریخهای شروع و پایان در فیلتر اعمالشده گنجانده شدهاند:
استراحت
{ "filters": { "dateFilter": { "ranges": [ { "startDate": { "year": 2014, "month": 6, "day": 12 }, "endDate": { "year": 2014, "month": 7, "day": 13 } } ] } } }
جاوا
// Create new com.google.type.Date objects for two dates Date day2014June12 = Date.newBuilder() .setDay(12) .setMonth(6) .setYear(2014) .build(); Date day2014July13 = Date.newBuilder() .setDay(13) .setMonth(7) .setYear(2014) .build(); // Create a DateRange from these two dates DateRange dateRange = DateRange.newBuilder() .setStartDate(day2014June12) .setEndDate(day2014July13) .build(); // Create a new dateFilter with the date range. You can also set multiple date ranges here DateFilter dateFilter = DateFilter.newBuilder() .addRanges(dateRange) .build(); // Create a new Filters object Filters filters = Filters.newBuilder() .setDateFilter(dateFilter) .build(); // Specify the Filters object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create two new Google\Type\Date objects $date2014June12 = new Date(); $date2014June12->setDay(12); $date2014June12->setMonth(6); $date2014June12->setYear(2014); $date2014July13 = new Date(); $date2014July13->setDay(13); $date2014July13->setMonth(7); $date2014July13->setYear(2014); // Add the two dates as a date range to the filter // You can also set multiple date ranges here $filtersBuilder = new FiltersBuilder(); $filtersBuilder->addDateRange($date2014June12, $date2014July13); // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
ترکیب تاریخ و محدوده تاریخ
می توانید همزمان از چندین تاریخ و چندین محدوده تاریخ استفاده کنید. مواردی که در هر یک از این تاریخ ها قرار می گیرند در نتایج گنجانده شده اند. تاریخها و محدودههای تاریخی جداگانه نیازی به پیروی از یک قالب ندارند، اما تاریخ شروع و پایان محدودههای جداگانه این کار را انجام میدهند:
استراحت
{ "filters": { "dateFilter": { "dates": [ { "year": 2013 }, { "year": 2011, "month": 11 } ], "ranges": [ { "startDate": { "month": 1 }, "endDate": { "month": 3 } }, { "startDate": { "month": 3, "day": 24 }, "endDate": { "month": 5, "day": 2 } } ] } } }
جاوا
// Create a new com.google.type.Date object for the year 2013 Date day2013 = Date.newBuilder() .setYear(2013) .build(); // Create a new com.google.type.Date object for November 2011 Date day2011November = Date.newBuilder() .setMonth(11) .setYear(2011) .build(); // Create a date range for January to March DateRange dateRangeJanuaryToMarch = DateRange.newBuilder() .setStartDate(Date.newBuilder().setMonth(1).build()) .setEndDate(Date.newBuilder().setMonth(3).build()) .build(); // Create a date range for March 24 to May 2 DateRange dateRangeMarch24toMay2 = DateRange.newBuilder() .setStartDate(Date.newBuilder().setMonth(3).setDay(24).build()) .setEndDate(Date.newBuilder().setMonth(5).setDay(2).build()) .build(); // Create a new dateFilter with the dates and date ranges DateFilter dateFilter = DateFilter.newBuilder() .addDates(day2013) .addDates(day2011November) .addRanges(dateRangeJanuaryToMarch) .addRanges(dateRangeMarch24toMay2) .build(); // Create a new Filters object Filters filters = Filters.newBuilder() .setDateFilter(dateFilter) .build(); // Specify the Filter object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create a new Google\Type\Date object for the year 2013 $date2013 = new Date(); $date2013->setYear(2013); // Create a new Google\Type\Date object for November 2011 $dateNovember2011 = new Date(); $dateNovember2011->setMonth(11); $dateNovember2011->setYear(2011); $filtersBuilder = new FiltersBuilder(); // Create a date range for January to March $filtersBuilder->addDateRange((new Date())->setMonth(1), (new Date())->setMonth(3)); // Create a date range for March 24 to May 2 $filtersBuilder->addDateRange((new Date())->setMonth(3)->setDay(24), (new Date())->setMonth(5)->setDay(2)); $filtersBuilder->addDate($date2013); $filtersBuilder->addDate($dateNovember2011); // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
ویژگی های آیتم رسانه
فیلترهای ویژگی، نتایج را به مواردی محدود میکند که دارای ویژگیهای خاصی هستند، برای مثال مواردی که در برنامه Google Photos به عنوان موارد دلخواه علامتگذاری شدهاند.
موارد دلخواه
ویژگی FAVORITES
را در FeatureFilter
قرار دهید تا فقط موارد رسانه ای را که توسط کاربر به عنوان موارد دلخواه علامت گذاری شده اند برگردانید:
استراحت
{ "filters" : { "featureFilter": { "includedFeatures": [ "FAVORITES" ] } } }
جاوا
// Create a new FeatureFilter for favorite media items FeatureFilter featureFilter = FeatureFilter.newBuilder() .addIncludedFeatures(Feature.FAVORITES) .build(); // Create a new Filters object Filters filters = Filters.newBuilder() .setFeatureFilter(featureFilter) .build(); // Specify the Filters object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create a new FeatureFilter for favorite media items $filtersBuilder = new FiltersBuilder(); $filtersBuilder->addIncludedFeature(Feature::FAVORITES); // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
انواع رسانه ها
میتوانید نتایج را به نوع رسانه محدود کنید: عکس یا ویدیو .
عکس
یک PHOTO
می تواند یکی از چندین فرمت تصویر باشد:
BMP | JPG |
GIF | PNG |
HEIC | TIFF |
ICO | WEBP |
همچنین شامل انواع عکسهای خاص مانند عکسهای زنده iOS، عکسهای متحرک، پانوراما، عکسهای کروی و عکسهای VR است.
ویدئو
یک VIDEO
می تواند فرمت های ویدئویی مختلفی داشته باشد:
3GP | MMV |
3G2 | وزارت دفاع |
ASF | MOV |
AVI | MP4 |
DIVX | MPG |
M2T | MTS |
M2TS | TOD |
M4V | WMV |
MKV |
VIDEO
همچنین شامل فرمتهای ویدیویی خاص مانند موارد زیر است: ویدیوهای VR، ویدیوهای حرکت آهسته، و انیمیشنهای ایجاد شده در برنامه Google Photos.
نمونه فیلترهای زیر توسط PHOTO
:
استراحت
{ "filters": { "mediaTypeFilter": { "mediaTypes": [ "PHOTO" ] } } }
جاوا
// Create a new MediaTypeFilter for Photo media items MediaTypeFilter mediaType = MediaTypeFilter.newBuilder() .addMediaTypes(MediaType.PHOTO) .build(); // Create a new Filters object Filters filters = Filters.newBuilder() .setMediaTypeFilter(mediaType) .build(); // Specify the Filters object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create a new MediaTypeFilter for Photo media items $filtersBuilder = new FiltersBuilder(); $filtersBuilder->setMediaType(MediaType::PHOTO); // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
فیلترهای چند رسانه ای را نمی توان با هم ترکیب کرد.
دادههای ایجاد شده غیربرنامه را حذف کنید
برای حذف موارد رسانهای که توسط برنامه شما ایجاد نشدهاند، میتوانید فیلتر excludeNonAppCreatedData
را مانند مثال زیر تنظیم کنید:
استراحت
{ "filters": { "excludeNonAppCreatedData": true } }
جاوا
// Create a new Filters object that excludes media not created by your app Filters filters = Filters.newBuilder() .setExcludeNonAppCreatedData(true) .build(); // Specify the Filters object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create a new Filters object that excludes media not created by your app $filtersBuilder = new FiltersBuilder(); $filtersBuilder->setExcludeNonAppCreatedData(true); // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
توجه داشته باشید که اگر از محدوده .readonly.appcreateddata
استفاده می کنید، این فیلتر نادیده گرفته می شود.
حالت بایگانی شده
کاربران شما ممکن است برخی از عکس های خود را بایگانی کرده باشند. بهطور پیشفرض، عکسهای بایگانیشده در جستجوها برگردانده نمیشوند. برای گنجاندن موارد بایگانی شده، می توانید مانند مثال زیر یک پرچم در فیلتر تنظیم کنید:
استراحت
{ "filters": { "includeArchivedMedia": true } }
جاوا
// Create a new Filters object that includes archived media Filters filters = Filters.newBuilder() .setIncludeArchivedMedia(true) .build(); // Specify the Filters object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create a new Filters object that includes archived media $filtersBuilder = new FiltersBuilder(); $filtersBuilder->setIncludeArchivedMedia(true); // Make a search call with the options set in the filters builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
ترکیب فیلترها
انواع مختلفی از فیلترها را می توان ترکیب کرد. فقط مواردی که با تمام ویژگی های درخواستی مطابقت داشته باشند برگردانده می شوند.
هنگام ترکیب فیلترها، محدودیتهای قالببندی برای هر نوع فیلتر مانند زمانی است که آنها به صورت جداگانه استفاده میشوند. در مثال زیر، فقط عکس هایی که به عنوان SPORT
دسته بندی شده اند و مربوط به سال 2014 یا 2010 هستند، برگردانده می شوند:
استراحت
{ "filters": { "contentFilter": { "includedContentCategories": [ "SPORT" ] }, "dateFilter": { "dates": [ { "year": 2014 }, { "year": 2010 } ] }, "mediaTypeFilter": { "mediaTypes": [ "PHOTO" ] } } }
جاوا
// Create a new ContentFilter that only includes SPORT items ContentFilter contentFilter = ContentFilter.newBuilder() .addIncludedContentCategories(ContentCategory.SPORT) .build(); // Create a new media type filter that only includes PHOTO media items MediaTypeFilter mediaTypeFilter = MediaTypeFilter.newBuilder() .addMediaTypes(MediaType.PHOTO) .build(); // Create a new DateFilter that only includes items from 2010 or 2014 Date year2014 = Date.newBuilder().setYear(2014).build(); Date year2010 = Date.newBuilder().setYear(2010).build(); DateFilter dateFilter = DateFilter.newBuilder() .addDates(year2010) .addDates(year2014) .build(); // Create a new Filters object combining these filters Filters filters = Filters.newBuilder() .setDateFilter(dateFilter) .setMediaTypeFilter(mediaTypeFilter) .setContentFilter(contentFilter) .build(); // Specify the Filter object in the searchMediaItems call SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters);
PHP
// Create a new ContentFilter $filtersBuilder = new FiltersBuilder(); // Only include SPORT items $filtersBuilder->addIncludedCategory(ContentCategory::SPORT); // Only include PHOTO media items $filtersBuilder->setMediaType(MediaType::PHOTO); // Only include items from 2010 or 2014 $year2014 = new Date(); $year2014->setYear(2014); $year2010 = new Date(); $year2010->setYear(2010); $filtersBuilder->addDateRange($year2010, $year2014); // Make a search call with the options set in the filters builder // Filters have been combined in the filter builder $response = $photosLibraryClient->searchMediaItems( ['filters' => $filtersBuilder->build()] );
مرتب سازی نتایج
فقط پرس و جوهایی که از فیلترهای تاریخ استفاده می کنند را می توان مرتب کرد.
اگر گزینه مرتب سازی را مشخص نکنید، نتایج شما به ترتیب نزولی مرتب می شوند (ابتدا جدیدترین).
این جدول گزینه های پشتیبانی شده برای پارامتر orderBy
را نشان می دهد:
orderBy پارامتر | |
---|---|
MediaMetadata.creation_time desc | موارد رسانه را به ترتیب نزولی برمی گرداند (ابتدا جدیدترین موارد) |
MediaMetadata.creation_time | آیتم های رسانه را به ترتیب صعودی برمی گرداند (ابتدا قدیمی ترین موارد) |
مثال زیر همه موارد رسانهای را از سال 2017 برمیگرداند و قدیمیترین و آخرین آخرین مورد را نشان میدهد.
استراحت
{ "filters": { "dateFilter": { "dates": [ { "year": 2017 } ] } }, "orderBy": "MediaMetadata.creation_time" }
جاوا
// Create a new dateFilter for the year 2017. DateFilter dateFilter = DateFilter.newBuilder() .addDates(Date.newBuilder().setYear(2017)) .build(); // Create a new Filters object Filters filters = Filters.newBuilder() .setDateFilter(dateFilter) .build(); // Sort results by oldest item first. final OrderBy newestFirstOrder = OrderBy.MEDIAMETADATA_CREATION_TIME; // Specify the filter and sort order in the searchMediaItems call. SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(filters, newestFirstOrder);
PHP
// Create a new dateFilter for the year 2017. $filtersBuilder = new FiltersBuilder(); $filtersBuilder->addDate((new Date())->setYear(2017)); // Make a search call with the options set in the filters builder and sort // the results by oldest item first. $response = $photosLibraryClient->searchMediaItems( [ 'filters' => $filtersBuilder->build(), 'orderBy' => OrderBy::MEDIAMETADATA_CREATION_TIME ] );