Phạm vi uỷ quyền bắt buộc
API Thư viện Google Photos chứa nhiều phạm vi dùng để truy cập vào các mục nội dung đa phương tiện và album. Các mục nội dung đa phương tiện được trả về qua nhiều lệnh gọi sẽ khác nhau tuỳ theo phạm vi đã được nhà phát triển yêu cầu.
Phạm vi photoslibrary.readonly
cho phép truy cập vào tất cả các mục nội dung đa phương tiện trong
thư viện của người dùng. Phạm vi photoslibrary.readonly.appcreateddata
cho phép truy cập
chỉ với các mục nội dung đa phương tiện do ứng dụng tạo. Để biết thêm thông tin, hãy xem
Phạm vi uỷ quyền.
Các bộ lọc có sẵn
Bạn có thể tìm các loại nội dung nghe nhìn cụ thể trong thư viện của người dùng. Ví dụ: bạn có thể chỉ muốn những mặt hàng có hình động vật cho một ngày nhất định, hoặc bạn có thể muốn để loại trừ ảnh chụp biên nhận. Bạn có thể loại trừ hoặc bao gồm các mục cụ thể bằng cách áp dụng bộ lọc cho danh sách album hoặc thư viện. Có năm lựa chọn dựa trên thuộc tính mục nội dung đa phương tiện:
- Danh mục nội dung (
includedContentCategories
,excludedContentCategories
) - Ngày và phạm vi ngày (
dates
,ranges
) - Tính năng (
featureFilter
) - Loại nội dung nghe nhìn (
mediaTypeFilter
) - Trạng thái được lưu trữ (
includeArchivedMedia
)
Bạn không nên sử dụng bộ lọc trong yêu cầu mediaItems:search
nếu albumId
đang
thiết lập. Nếu bạn dùng bộ lọc khi đặt albumId, thì sẽ xảy ra lỗi INVALID_ARGUMENT
(400) được trả về.
Kết quả được sắp xếp theo thời gian tạo mục nội dung đa phương tiện. Chiến lược phát hành đĩa đơn có thể sửa đổi thứ tự sắp xếp cho các truy vấn dùng bộ lọc ngày.
Hãy chờ một thời gian để nội dung nghe nhìn mới tải lên xuất hiện trong nội dung tìm kiếm của bạn. Nội dung nghe nhìn xuất hiện ngay lập tức trong các tìm kiếm chưa được lọc.
Các mục nội dung đa phương tiện có ngày trong tương lai sẽ không xuất hiện trong các kết quả tìm kiếm đã lọc. Chúng xuất hiện trong các tìm kiếm và tìm kiếm album chưa được lọc.
Áp dụng bộ lọc
Để áp dụng bộ lọc, hãy gọi
mediaItems.search
và
chỉ định thuộc tính filter
.
Kiến trúc chuyển trạng thái đại diện (REST)
Dưới đây là yêu cầu POST:
POST https://photoslibrary.googleapis.com/v1/mediaItems:search Content-type: application/json Authorization: Bearer oauth2-token { "pageSize": "100", "filters": { ... } }
Yêu cầu POST trả về phản hồi sau:
{ "mediaItems": [ ... ], "nextPageToken": "token-for-pagination" }
Java
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 }
Để biết thông tin chi tiết, hãy xem Liệt kê nội dung, album và mục nội dung nghe nhìn trong thư viện.
Loại nội dung
Tất cả các mục nội dung đa phương tiện đều được xử lý và gán nhãn. Bạn có thể bao gồm và loại trừ bất kỳ danh mục nào sau đây.
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 |
Ảnh tiện ích bao gồm đa dạng nội dung nghe nhìn. Danh mục này thường bao gồm mục mà người dùng đã chụp để thực hiện tác vụ nào đó và không có khả năng muốn thực hiện công việc đó đã hoàn tất. Ứng dụng bao gồm tài liệu, biên nhận, ảnh chụp màn hình, quảng cáo cố định ghi chú, trình đơn và các mục nội dung nghe nhìn tương tự khác.
Các danh mục này chỉ chính xác ở mức độ chính xác của các nhãn tương đương trong Google Photos. Đôi khi, các mặt hàng có thể bị gắn nhãn sai, vì vậy, chúng tôi không đảm bảo tính chính xác của các bộ lọc danh mục nội dung.
Bao gồm các danh mục
Khi bạn bao gồm nhiều danh mục, mục nội dung đa phương tiện khớp với bất kỳ
danh mục được đưa vào. Bạn có thể thêm tối đa 10 danh mục cho mỗi yêu cầu.
Bộ lọc ví dụ này trả về các mục bất kỳ là LANDSCAPES
hoặc LANDMARKS
.
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters": { "contentFilter": { "includedContentCategories": [ "LANDSCAPES", "LANDMARKS" ] } } }
Java
// 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()] );
Loại trừ danh mục
Chỉ những mục nội dung đa phương tiện không khớp với bất kỳ danh mục nào đã bị loại trừ mới xuất hiện. Tương tự như các danh mục đã đưa vào, bạn có thể loại trừ tối đa 10 danh mục theo yêu cầu.
Bộ lọc này trả về bất kỳ mục nào không phải là PEOPLE
hoặc SELFIES
:
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters": { "contentFilter": { "excludedContentCategories": [ "PEOPLE", "SELFIES" ] } } }
Java
// 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()] );
Bao gồm và loại trừ nhiều danh mục
Bạn có thể bao gồm một số danh mục và loại trừ các danh mục khác. Ví dụ sau đây
trả về LANDSCAPES
và LANDMARKS
nhưng xoá mọi mục nội dung đa phương tiện có chứa
PEOPLE
hoặc SELFIES
:
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters": { "contentFilter": { "includedContentCategories": [ "LANDSCAPES", "LANDMARKS" ], "excludedContentCategories": [ "PEOPLE", "SELFIES" ] } } }
Java
// 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()] );
Ngày và phạm vi ngày
Bộ lọc ngày hạn chế ngày của kết quả được trả về ở một nhóm ngày. Có hai cách để chỉ định bộ lọc ngày: ngày hoặc phạm vi. Ngày và dải ô có thể được sử dụng cùng nhau. Mục nội dung đa phương tiện khớp với một ngày hoặc ngày bất kỳ dải ô được trả về. Thứ tự sắp xếp kết quả (không bắt buộc) chỉnh sửa được.
Ngày
Ngày chứa năm, tháng và ngày. Chúng tôi chấp nhận các định dạng sau:
- Năm
- Năm, tháng
- Năm, tháng, ngày
- Tháng, ngày
- Tháng
Khi một thành phần của ngày trống hoặc được đặt thành 0, thì thành phần đó được coi là một ký tự đại diện. Ví dụ: nếu bạn đặt ngày và tháng nhưng không đặt năm, yêu cầu mục từ ngày và tháng đó của năm bất kỳ:
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters": { "dateFilter": { "dates": [ { "month": 2, "day": 15 } ] } } }
Java
// 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()] );
Phạm vi ngày
Phạm vi ngày linh hoạt hơn so với ngày. Ví dụ: thay vì thêm nhiều ngày, phạm vi ngày có thể được dùng để xem một nhóm ngày trong một tháng.
Phạm vi ngày có startDate
và endDate
, cả hai đều phải được đặt. Một
ngày trong phạm vi có cùng giới hạn định dạng như được mô tả trong
Ngày. Ngày phải có cùng định dạng: nếu ngày bắt đầu là
năm và tháng, thì ngày kết thúc cũng phải là năm và tháng. Các phạm vi là
áp dụng toàn diện, ngày bắt đầu và ngày kết thúc đều có trong bộ lọc được áp dụng:
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters": { "dateFilter": { "ranges": [ { "startDate": { "year": 2014, "month": 6, "day": 12 }, "endDate": { "year": 2014, "month": 7, "day": 13 } } ] } } }
Java
// 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()] );
Kết hợp ngày và phạm vi ngày
Bạn có thể sử dụng nhiều ngày và nhiều phạm vi ngày cùng một lúc. Các mặt hàng thuộc bất kỳ ngày nào trong số các ngày này đều được đưa vào kết quả. Phân cách ngày và phạm vi ngày không cần phải theo cùng một định dạng, nhưng ngày bắt đầu và ngày kết thúc của dải ô riêng lẻ làm:
Kiến trúc chuyển trạng thái đại diện (REST)
{ "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 } } ] } } }
Java
// 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()] );
Tính năng của mục nội dung đa phương tiện
Bộ lọc tính năng giới hạn kết quả ở những mục có những tính năng cụ thể, cho ví dụ được đánh dấu là ảnh yêu thích trong ứng dụng Google Photos.
Yêu thích
Bao gồm
FAVORITES
mục
tính năng trong
FeatureFilter
để chỉ trả về các mục nội dung đa phương tiện đã được người dùng đánh dấu là yêu thích:
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters" : { "featureFilter": { "includedFeatures": [ "FAVORITES" ] } } }
Java
// 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()] );
Loại nội dung nghe nhìn
Bạn có thể giới hạn kết quả theo loại nội dung nghe nhìn: ảnh hoặc video.
Ảnh
PHOTO
có thể ở bất kỳ định dạng hình ảnh nào:
BMP | JPG |
GIF | PNG |
HEIC | TIFF |
ICO | WEBP |
Ứng dụng này cũng bao gồm các loại ảnh đặc biệt như ảnh trực tiếp trên iOS, ảnh chuyển động, ảnh toàn cảnh, ảnh toàn cảnh 360 độ và ảnh VR.
Video
VIDEO
có thể là nhiều định dạng video:
3GP | MMV |
3G2 | Sửa đổi |
ASF | MOV |
AVI | MP4 |
DIVX | MPG |
M2T | MTS |
Hàm M2TS | TOD |
M4V | WMV |
MKV |
VIDEO
cũng bao gồm các định dạng video đặc biệt như sau: video thực tế ảo,
video chuyển động chậm và ảnh động được tạo trong Google Photos
.
Ví dụ sau đây lọc theo PHOTO
:
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters": { "mediaTypeFilter": { "mediaTypes": [ "PHOTO" ] } } }
Java
// 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()] );
Bạn không thể kết hợp nhiều bộ lọc loại nội dung nghe nhìn.
Loại trừ dữ liệu không phải do ứng dụng tạo
Để loại trừ các mục nội dung nghe nhìn mà ứng dụng của bạn chưa tạo, bạn có thể đặt
bộ lọc excludeNonAppCreatedData
như trong ví dụ sau:
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters": { "excludeNonAppCreatedData": true } }
Java
// 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()] );
Xin lưu ý rằng nếu bạn đang sử dụng
.readonly.appcreateddata
thì bộ lọc này sẽ bị bỏ qua.
Trạng thái đã lưu trữ
Người dùng của bạn có thể đã lưu trữ một số ảnh của họ. Theo mặc định, ảnh đã lưu trữ sẽ không được trả về trong các kết quả tìm kiếm. Để bao gồm các mục đã lưu trữ, bạn có thể đặt cờ trong như trong ví dụ sau đây:
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters": { "includeArchivedMedia": true } }
Java
// 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()] );
Kết hợp các bộ lọc
Bạn có thể kết hợp các loại bộ lọc khác nhau. Chỉ những mục phù hợp với tất cả tính năng đã yêu cầu được trả về.
Khi bạn kết hợp các bộ lọc, giới hạn định dạng đối với mỗi loại bộ lọc là
giống như khi chúng được sử dụng riêng lẻ. Trong ví dụ sau, chỉ ảnh
đã được phân loại là SPORT
và từ năm 2014 hoặc 2010 được
trả về:
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters": { "contentFilter": { "includedContentCategories": [ "SPORT" ] }, "dateFilter": { "dates": [ { "year": 2014 }, { "year": 2010 } ] }, "mediaTypeFilter": { "mediaTypes": [ "PHOTO" ] } } }
Java
// 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()] );
Sắp xếp kết quả
Chỉ có thể sắp xếp những truy vấn bằng bộ lọc ngày.
Nếu bạn không chỉ định tùy chọn sắp xếp, thì kết quả của bạn sẽ được sắp xếp trong thứ tự giảm dần (mới nhất xếp trước).
Bảng này cho thấy các tuỳ chọn được hỗ trợ cho tham số orderBy
:
Tham số orderBy |
|
---|---|
MediaMetadata.creation_time desc |
Trả về các mục nội dung đa phương tiện theo thứ tự giảm dần (các mục mới nhất xếp trước) |
MediaMetadata.creation_time |
Trả về các mục nội dung đa phương tiện theo thứ tự tăng dần (các mục cũ nhất xếp trước) |
Ví dụ sau đây trả về tất cả các mục nội dung đa phương tiện từ năm 2017, cho thấy mục cũ nhất đầu tiên và mới nhất cuối cùng.
Kiến trúc chuyển trạng thái đại diện (REST)
{ "filters": { "dateFilter": { "dates": [ { "year": 2017 } ] } }, "orderBy": "MediaMetadata.creation_time" }
Java
// 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 ] );