Программно выполняемые расширенные поисковые запросы Ebay (Java)

На веб-сайте E-Bay вы можете найти, например, браслеты с основным цветом серебра (см. Скриншот ниже).

Скриншот

Можно ли выполнить такой запрос (найти новейшие браслеты с основным цветом серебра) программно (через eBay Search API)? Если да - как?

Я посмотрел на findItemsAdvanced, но не нашел там ссылки на цветной поиск.

3 ответа

Решение

Уточнение поиска с помощью Finding API выполняется через Aspect Filters, которые определены в документации как:

Аспекты - это хорошо известные стандартизированные характеристики предмета. Например, "Размер экрана", "Тип процессора" и "Скорость процессора" могут быть аспектами ноутбуков. Аспекты могут различаться для разных видов предметов. Например, аспекты портативных компьютеров отличаются от аспектов женских платьев (аспекты для женских платьев могут включать "стиль рукава", "длину платья" и "размер").

Выполнение поиска состоит из двух этапов.

  1. Определите, какие аспекты доступны для категории, которую вы ищете.
  2. Выберите, какие аспекты вы будете использовать, и включите их в качестве фильтров в свой поисковый запрос.

В следующих примерах используется Finding Kit, который eBay предоставляет как часть своего Java SDK.

Первый пример показывает, как получить доступные аспекты. Это достигается с помощью операции getHistograms. В этом примере мы будем использовать категорию Ювелирные изделия и часы> Модные украшения> Кольца (67681), которые можно найти на сайте eBay в США.

import java.util.List; 
import com.ebay.services.client.ClientConfig; 
import com.ebay.services.client.FindingServiceClientFactory; 
import com.ebay.services.finding.*; 

public class GetHistograms { 
    public static void main(String[] args) { 
        try { 
            ClientConfig config = new ClientConfig(); 
            config.setApplicationId("<YOUR EBAY APP ID>"); 

            FindingServicePortType serviceClient = FindingServiceClientFactory.getServiceClient(config); 

            GetHistogramsRequest request = new GetHistogramsRequest(); 

            request.setCategoryId("67681");

            GetHistogramsResponse result = serviceClient.getHistograms(request); 

            AspectHistogramContainer aspectHistogramContainer = result.getAspectHistogramContainer();
            List<Aspect> aspects = aspectHistogramContainer.getAspect();
            for(Aspect aspect : aspects) {
                System.out.println("* " + aspect.getName() + " *");
                List<AspectValueHistogram> values = aspect.getValueHistogram();
                for(AspectValueHistogram value : values) {
                    System.out.println(value.getValueName());
                }
            }
        } catch (Exception ex) { 

        } 
    } 
}   

Каждая категория может иметь несколько аспектов, которые состоят из имени, такого как Цвет, и нескольких значений, таких как Красный, Белый, Синий. Пример вывода, произведенного этим кодом, показан ниже.

  • Чистота металла
  • 10k
  • 14k
  • 18k
  • Главный камень
  • Нет камня
  • морское ушко
  • Агат
  • Основной цвет
  • вода
  • черный
  • синий

Имена и значения, возвращаемые из getHistograms, теперь можно использовать в качестве фильтров в операции findItemsAdvanced. Для второго примера мы будем использовать аспекты бренда и основного цвета. Этот пример также использует ту же категорию, что и первая.

import java.util.List; 
import com.ebay.services.client.ClientConfig; 
import com.ebay.services.client.FindingServiceClientFactory; 
import com.ebay.services.finding.*; 

public class FindItem { 
    public static void main(String[] args) { 
        try { 
            ClientConfig config = new ClientConfig(); 
            config.setApplicationId("<YOUR EBAY APP ID>"); 

            FindingServicePortType serviceClient = FindingServiceClientFactory.getServiceClient(config); 

            FindItemsAdvancedRequest request = new FindItemsAdvancedRequest(); 

            request.getCategoryId().add("67681");

            AspectFilter aspectFilter = new AspectFilter();
            aspectFilter.setAspectName("Brand");
            aspectFilter.getAspectValueName().add("Paula Abdul");
            aspectFilter.getAspectValueName().add("Tiffany");
            aspectFilter.getAspectValueName().add("Tommy Hilfiger");      
            request.getAspectFilter().add(aspectFilter);

            aspectFilter = new AspectFilter();
            aspectFilter.setAspectName("Main Color");
            aspectFilter.getAspectValueName().add("Gold");
            aspectFilter.getAspectValueName().add("Silver");
            request.getAspectFilter().add(aspectFilter);

            PaginationInput pi = new PaginationInput(); 
            pi.setEntriesPerPage(2); request.setPaginationInput(pi); 

            FindItemsAdvancedResponse result = serviceClient.findItemsAdvanced(request); 

            System.out.println("Found " + result.getSearchResult().getCount() + " items." ); 
            List<SearchItem> items = result.getSearchResult().getItem(); 

            for(SearchItem item : items) { 
                System.out.println(item.getTitle()); 
            } 
        } catch (Exception ex) { 

        } 
    } 
}

Вы, вероятно, хотите использовать AspectFilters. вход для этого можно найти в предыдущем запросе (как указано в документации. см. aspectHistogrammContainer)

VariationType, кажется, в состоянии сделать это.

Другие вопросы по тегам