Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

eBay API - How to get large item pictures?

Tags:

php

ebay-api

How do I get a large item image using the eBay API? The API call below returns a thumbnail image when I use galleryURL. I tried replacing it with PictureURLLarge, but that did not return a URL.

(The line I am referring to is 16th from the bottom: $pic = $item->galleryURL;)

// API request variables
       $endpoint = 'http://svcs.ebay.com/services/search/FindingService/v1';  // URL to call
       $version = '1.11.0';  // API version supported by your application
       $appid = 'XXXXX';  // Replace with your own AppID
       $globalid = 'EBAY-US';  // Global ID of the eBay site you want to search (e.g., EBAY-DE)
       $query = "soft thin (shirt, tshirt, t-shirt)";  // Supply your own query
       $safequery = urlencode($query);  // Make the query URL-friendly
       $i = '0';  // Initialize the item filter index to 0

       // Create a PHP array of the item filters you want to use in your request
       $filterarray =
         array(
           array(
           'name' => 'MaxPrice',
           'value' => '1500',
           'paramName' => 'Currency',
           'paramValue' => 'USD'),
           array(
           'name' => 'FreeShippingOnly',
           'value' => 'false',
           'paramName' => '',
           'paramValue' => ''),
           array(
           'name' => 'ListingType',
           'value' => array('AuctionWithBIN','FixedPrice','StoreInventory'),
           'paramName' => '',
           'paramValue' => ''),
         );

       // Generates an indexed URL snippet from the array of item filters
       function buildURLArray ($filterarray) {
         global $urlfilter;
         global $i;
         // Iterate through each filter in the array
         foreach($filterarray as $itemfilter) {
           // Iterate through each key in the filter
           foreach ($itemfilter as $key =>$value) {
             if(is_array($value)) {
               foreach($value as $j => $content) { // Index the key for each value
                 $urlfilter .= "&itemFilter($i).$key($j)=$content";
               }
             }
             else {
               if($value != "") {
                 $urlfilter .= "&itemFilter($i).$key=$value";
               }
             }
           }
           $i++;
         }
         return "$urlfilter";
       } // End of buildURLArray function

       // Build the indexed item filter URL snippet
       buildURLArray($filterarray);

       // Construct the findItemsAdvanced HTTP GET call 
       $apicall = "$endpoint?";
       $apicall .= "OPERATION-NAME=findItemsAdvanced";
       $apicall .= "&SERVICE-VERSION=$version";
       $apicall .= "&SECURITY-APPNAME=$appid";
       $apicall .= "&GLOBAL-ID=$globalid";
       $apicall .= "&descriptionSearch=true";
       $apicall .= "&categoryId=110";
       $apicall .= "&keywords=$safequery";
       $apicall .= "&paginationInput.entriesPerPage=100";
       $apicall .= "$urlfilter";

       // Load the call and capture the document returned by eBay API
       $resp = simplexml_load_file($apicall);

       // Check to see if the request was successful, else print an error
       if ($resp->ack == "Success") {
         $results = '';
         // If the response was loaded, parse it and build links  
         foreach($resp->searchResult->item as $item) {
           $pic    = $item->galleryURL;
           $link   = $item->viewItemURL;
           $title  = $item->title;
           $ship = (float) $item->shippingInfo->shippingServiceCost;
           $price = (float) $item->sellingStatus->currentPrice;
           $sell = ($ship + $price);

           // For each SearchResultItem node, build a link and append it to $results
           $results .= "<a href=\"$link\" title=\"$title\" target=\"_blank\"><div class=\"shirt-block\"><img src=\"$pic\" width=\"200\" height=\"200\"><br /><br /><span class=\"cost\">$$sell</span></div></a>";
         }
       }
       // If the response does not indicate 'Success,' print an error
       else {
         $results  = "<h3>Oops! The request was not successful. Make sure you are using a valid ";
         $results .= "AppID for the Production environment.</h3>";
       }
like image 261
Carson Avatar asked May 20 '12 01:05

Carson


People also ask

How do I increase my eBay API limit?

If you need higher call limits, you can complete our Application Growth Check, to verify that your application is adhering to eBay's API License Agreement, and that you've made the most efficient use of the APIs you've implemented.

Is API allowed on eBay?

eBay offers developers a wide range of RESTful and Traditional APIs. For new development, eBay strongly encourages the use of our RESTful APIs.

Is eBay API free?

Yes, eBay API is open and free, but the access to the developer account is granted only after approval, and to certain kinds of APIs – after submitting a production application process.


1 Answers

Did you try the most recent method provided in the eBay Forum?

I can help to explain and guide you.

That member suggests to include $apicall .= "&outputSelector=$outputSelector"; in your construct of the findItemsAdvanced request.

At that point I would check the XML File returned to see if it's included via Firebug (click the NET tab, then XHR below). In Chrome, just enable Developer Tools and click the NETWORK tab to see returned XML File. Click file to expand and you will see contents without whitespace.

Because the XML file is not going to be pretty, copy that content then paste it HERE to beautify it for readability.

Sample XML file HERE that has both pictureURLLarge and pictureURLSuperSize shown.

Once you verify that the URL for large image has been included in your XML file, second step is to then use it in your markup like so:

$pic = $item->pictureURLLarge;

or

$pic = $item->pictureURLSuperSize;

Sorry I do not have my own eBay AppID to test and their API Playground link is broken but can assist further is anything is unclear.

To be sure, the first step is to obtain the Large Image request and the second step is to simply use the image.

like image 120
arttronics Avatar answered Oct 03 '22 18:10

arttronics