• 0
jfeuchter

Cant get Categories/all

Question

Hello people,

 

Im working with MELI.php trying to get all the categories from Mexicos MercadoLibre store. But I cant seem to get an answer using the next code: 

$params = array();

$result = $meli->get('/sites/MLM/categories/all');	

echo '<pre>';
echo print_r($result);
echo '</pre>';

I do get a successful call, but no information is shown:

Array
(
    [body] => 
    [httpCode] => 200
)
1

Any ideas why this might be happening? Apparently I cant even call this url on any postman type program either. Any ideas? :P

 

also I had a question. To make a post of one or several products to my ML store, do I have to use a ID of a specific category, or does the post accept a ID of a general category as well ?

 

-----------------------------------------------------------------------------------------------

 

Estoy trabajando con el sdk de Pphp meli.php intentando obtener TODAS las categorias de Mexico MercadoLibre. Pero al parecer no obtengo ninguna respuesta. respuesta usando el codigo que esta arriba. 

 

Me llega la respuesta de arriba. 

 

Alguna idea por que no este obteniendo la respuesta de las categorias esperada? Tampoco he podido obtener respuesta del url usando postman. Alguien tiene alguna idea de como obtener todas las categorias de MercadoLibre mexico?

 

Tambien tenia una duda. para hacer el post de uno o varios productos. Este mismo tiene que tener el id de la categorias mas especifica? o puede ser un ID de una categoria General ?

Share this post


Link to post
Share on other sites

14 answers to this question

Recommended Posts

  • 0

estás tratando de bajarlo desde el browser? desde la consola? o desde la linea de comandos?
 

 curl 'https://api.mercadolibre.com/sites/MLM/categories/all?withAttributes=true' > catMLM.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 22.6M  100 22.6M    0     0   178k      0  0:02:09  0:02:09 --:--:--  185k

Luego descomprimí el archivo catMLM.gz en  catMLM.json y listo tuve mi file! 

 

Algo mas ten en cuenta que estás bajando un file en gzip, tu Content-Type es application/gzip no json

Share this post


Link to post
Share on other sites
  • 0

Não! Você achou este "all" onde? em que documentação?

 

Não existe a lista completa e também acho que deveria ser disponibilizada. O Google Shopping disponibiliza porque é mais fácil para os programadores e para termos a possibilidade de fazermos uma de-para.

 

Tentei fazer um foreach recursivo para listar todas, porém meu provedor não aguenta e retorna erro 503.

 

Um dia eu faço isto com calma.

 

Boa sorte,

Rodrigo

Share this post


Link to post
Share on other sites
  • 0

I think what you are speaking is Portuguese. Sorry but i could only understand the main idea of what you said hehe. I do speak Spanish as well. For what I could understand of your answer was where I got the documentation for that from? I hope it was a question. I got it from here:

 

http://developers.mercadolibre.com/category-dump/

 

Also, as for the idea of getting the list with a recursive foreach. I do actually have that done right now. But there are too many categories and the execution time is way too long. I think its cause of the many calls to curl Im making through MELI.php. Here is the code I used:

/**
 * Get categories method
 *
 * @return json
 */
	public function getSuggestionsml() {
		$this->autoRender = false;

		$meli = new MeliComponent('secret', 'key', $_SESSION['ML_access_token'], $_SESSION['ML_refresh_token']);

		$params = array();
                //Here I get only the category which Im most intrested which is bebes
		$result = $meli->get('/categories/MLM1384');

		$arrayresult = [];

		foreach ($result['body']->children_categories as $key => $value) {

			$arraycategory = [];

			$arraycategory = $this->getChildrenml($value->id, $result['body']->name.">".$value->name, $meli);		

			array_push($arrayresult, $arraycategory);
		}

		echo '<pre>';
		echo print_r($arrayresult);
		echo '</pre>';

	}

/**
 * Recursive function to get children categories
 *
 * @return array
 */
	public function getChildrenml($idValue, $categoryString, $meli) {
		$this->autoRender = false;

		$result = $meli->get('/categories/'.$idValue);

		if (!empty($result['body']->children_categories)) {

			$arraycategory = [];

			foreach ($result['body']->children_categories as $key => $value) {	

				array_push($arraycategory, $this->getChildrenml($value->id, $categoryString.'>'.$value->name, $meli));

			}

			return $arraycategory;

		} else {

			$arrayreturn['name'] = $categoryString;
			$arrayreturn['id'] = $idValue;

			return $arrayreturn;

		}

	}

This code does work but it takes up to 1 o 2 minutes to finish the call. Its waaay to long. I set up in the .httaccess the time limit up to 300 seconds to be able to complete this call.  Any ideas on how to improve my code hehehe?

 

NOTICE the code only brings back the last possible child for every category. Also the final answer it brings back, is embeded  in many arrays. This is cause I use the array_push() to get all the categories. I havent been able to figure out how to solve this hehehe. 

 

----------------------------------------------------------------------------------------------------

Creo que estas hablando en protugues? hehehe Perdon pero solo pude entender la idea general de lo que pusiste. Yo hablo español e ingles nada mas :P. Por lo que pude entender de tu respuesta, pienso que preguntas por la documentación? Espero que era la duda jajaja La obtuve de aqui:

 

http://developers.mercadolibre.com/category-dump/

 

Sobre la idea de obtener las categorias con un foreach recursivo. De hecho yo hice ese codigo para obtenerlos. Pero hay demasiadas categorias lo que hace el tiempo de execucion extremadamente largo. Creo que esto es por las llamadas CURL que realiza MELI.php para obtener las categorias hijas de cada categoria en las llamadas recursivas. Arriba esta el codigo que use:

 

Este codigo tarda mas de 1 o 2 minutos para terminar. Lo cual es extremadamente largo. Tube que cambiar en el .httaccess el tiempo limite a 300 para que esta llamada se pudiese completar. Tienes alguna idea de como mejorar este codigo? 

 

NOTA: El codigo que escribi nada mas trae el ultimo hijo de cada categoria. También la respuesta final que trae el codigo es un arreglo dentro de otro dentro de otro jajaja esto si no lo he podido solucionar. Se que tienes que ver con el array_push() pero no lo he podido cambiar por que lo necesito para obtener todas las categorias. Aun no soluciono el hecho que me responda en un solo array la llamada. D:

Share this post


Link to post
Share on other sites
  • 0
I told you that there is a list and to get it should use a recursive method.

Well, that you did, and fell into the same problem as me.

I think if you search at different times will be able to return without having timeout problem. This means that if you do the research first and then call the function again in an iframe referring to the previous result, or sending the variable shaped src believe not burst time.

 

in doubt use the translate google

Share this post


Link to post
Share on other sites
  • 0

el dump de categorias devuelve un archivo comprimido /sites/MLM/categories/all    debes bajar el contenido y guardarlo en un archivo .gzip.json luego descomprime el archivo y listo! ahi lo tienes :-)

Hola Leandro,

 

Ultiammente he intentado bajar el gzip desde ese url pero no esta funcionando. Me aparece un error de timeout que es el siguiente: 

504 Gateway Time-out

The gateway did not receive a timely response from the upstream server or application. Sorry for the inconvenience.
Please report this message and include the following information to us.
Thank you very much!

URL:	http://api.mercadolibre.com:8080/sites/MLM/categories/all?withAttributes=true
Server:	e-00014141
Date:	2017/01/31 14:11:04
Powered by Tengine/2.1.2

Podrias mencionarme por favor si hay alguna otra manera para bajar toda la lista de categorias de MLM? o si tienen un ETA para reparar este endpoint? 

 

Gracias

 

Saludos!

Share this post


Link to post
Share on other sites
  • 0

Estimados están haciendo mal la llamada, aqui les paso como se hace por curl desde la terminal:

 

curl -O https://api.mercadolibre.com/sites/MLM/categories/all?withAttributes=true> catMLM.gz

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

 

100 22.9M  100 22.9M    0     0   185k      0  0:02:06  0:02:06 --:--:--  184k

Share this post


Link to post
Share on other sites
  • 0

Hola Leandro,

 

Ultiammente he intentado bajar el gzip desde ese url pero no esta funcionando. Me aparece un error de timeout que es el siguiente: 

504 Gateway Time-out

The gateway did not receive a timely response from the upstream server or application. Sorry for the inconvenience.
Please report this message and include the following information to us.
Thank you very much!

URL:	http://api.mercadolibre.com:8080/sites/MLM/categories/all?withAttributes=true
Server:	e-00014141
Date:	2017/01/31 14:11:04
Powered by Tengine/2.1.2

Podrias mencionarme por favor si hay alguna otra manera para bajar toda la lista de categorias de MLM? o si tienen un ETA para reparar este endpoint? 

 

Gracias

 

Saludos!

 

no puedes utilizar http://api.mercadolibre.com:8080/

debes usar https://api.mercadolibre.com

Share this post


Link to post
Share on other sites
  • 0

no puedes utilizar http://api.mercadolibre.com:8080/

debes usar https://api.mercadolibre.com

 

Ya habia intentando con ese url también. Aqui esta la respuesta: 

// 20170217095127
// https://api.mercadolibre.com/sites/MLM/categories/all

{
  "request_id": "1e167065-7a67-458b-b48c-bda3643e573e",
  "statusCode": 504,
  "upstream_status": "504",
  "request_time": "60.001",
  "upstream_response_time": "60.001",
  "nginx": "e-00013db4",
  "proxy_host": ""
}

Me dio un timeout como quiera. Alguna sugerencia? 

Share this post


Link to post
Share on other sites
  • 0

estás tratando de bajarlo desde el browser? desde la consola? o desde la linea de comandos?

 

 curl 'https://api.mercadolibre.com/sites/MLM/categories/all?withAttributes=true' > catMLM.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 22.6M  100 22.6M    0     0   178k      0  0:02:09  0:02:09 --:--:--  185k

Luego descomprimí el archivo catMLM.gz en  catMLM.json y listo tuve mi file! 

 

Algo mas ten en cuenta que estás bajando un file en gzip, tu Content-Type es application/gzip no json

 

 

Hola Leandro,

 

Oye habra manera de obtener nada mas la lista de menus y submenus de la categoria de bebes? 

 

Saludos! :D 

Share this post


Link to post
Share on other sites
  • 0

la única forma es recursivamente por api 

 

https://api.mercadolibre.com/sites/MLM 

{
"id": "MLM1384",
"name": "Bebés"

}
,

https://api.mercadolibre.com/categories/MLM1384

"children_categories": [
{
"id": "MLM5360",
"name": "Alimentación para Bebés",
"total_items_in_this_category": 12383

}
,
{
"id": "MLM1387",
"name": "Autoasientos",
"total_items_in_this_category": 3161

}
,
{
"id": "MLM5702",
"name": "Baño ",
"total_items_in_this_category": 3301

}
,
{
"id": "MLM1386",
"name": "Carriolas para Bebés",
"total_items_in_this_category": 5791

}
,
{
"id": "MLM1392",
"name": "Juegos y Juguetes ",
"total_items_in_this_category": 11254

}
,
{
"id": "MLM185368",
"name": "Pañales y Pañaleras",
"total_items_in_this_category": 3175

}
,
{
"id": "MLM185376",
"name": "Portabebés",
"total_items_in_this_category": 1578

}
,
{
"id": "MLM5362",
"name": "Recámara de Bebés",
"total_items_in_this_category": 9273

}
,
{
"id": "MLM1396",
"name": "Ropa y Calzado para Bebés",
"total_items_in_this_category": 15131

}
,
{
"id": "MLM1385",
"name": "Seguridad",
"total_items_in_this_category": 2704

}
,
{
"id": "MLM1889",
"name": "Otros",
"total_items_in_this_category": 6046

}

]
,.... etc etc

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...