Como programar con mercadosocios

27 septiembre, 2011

(Esta guia es para personas con conocimientos basicos de algun lenguaje orientado a la web)

En articulos anteriores, he mencionado una manera de ganar dinero con internet la cual consiste en unas herramientas de mercadolibre las cuales se llaman mercadosocios, la cosa es que lo se porque tengo compañeras directos que ganan dinero de esta manera, y dado que he empezado a recomendar este tipo de negocios, yo mismo me puse en la tarea de desarrollar sitios con esa herramienta, y en la ultima semana cree este sitio Articulosblackberry.comcomo pueden observar es una pagina que solo esta relacionada con articulos, equipos, y telefonos blackberry, que estan muy de moda en venezuela, mexico, argentina, colombia y chile.

Pero volviendo al tema, me puse a buscar informacion de como programar en mercadosocios y me encuentre con un gran problema y la gran desepcion de que es nula o casi nula la informacion que ellos te proporcionan, y si bucas en google la informacion es tambien un poco nula.

Por lo tanto voy a explicar un poco como programar con la herramienta XML que ellos proporcionan.

Ahora que es XML? creo que en wikipedia seria el mejor sitio para buscar esta informacion link, pero explicandolo de manera sencilla es una archivo de texto, con etiquetas para cada campo, como por ejemplo:

<?xml version=”1.0″ encoding=”UTF-8″ ?> <!DOCTYPE Edit_Mensaje SYSTEM “Edit_Mensaje.dtd”>

 

<Asunto> Este es mi documento con una estructura muy sencilla no contiene atributos ni entidades…

 

</Asunto>

 

Ahora como tratar esta informacion, que fue una pregunta que me hacia unos años atras, y te la voy a decir, tienes que saber PHP o ASP o JAVA EE o cualquier lenguaje orientado a desarrollo web, aunque los muy frescos de mercadolibre lo mencionan casi como no obligatorio saber esto o si no sabes nada de nada leyendote la pagina de PHP puff rapidamente aprendes, pues señores para programar con esto tienen que tener por lo menos conocimientos basicos de cualquier lenguaje orientado a la red, si no sabes nada olvidate de utilizar XML y utiliza los banner que ellos te proporcionas de copia y pega.

Ahora entrando en la materia real de la interfaz XML de mercadolibre

Ellos te proporcionan unas 2 “guias” o refencia de comandos que puedes realizar como por ejemplo

http://www.mercadolibre.com.ar/jm/categsXml?as_site_id=MLA

Si ustedes colocan en su navegador ese link les aparecera, una pagina XML

Explicando el link, el cual hace conseguir todas las categorias de los mercadolibre segun su pais.

—-http://www.mercadolibre.com.ar/jm/categsXml— es la base para hacer cualquier consulta XML, solo en este caso particular es fijo, pero para los demas que vamos a ver mas adelante lo entenderas y lo que te va a variar es el .com.ar que ya depende de cada pais

.com.ar si es Argentina

.com.ve si es Venezuela

.com.mx  si es Mexico

.cl   si es Chile

.com.co  si es Colombia 

etc..

as_site_id es la etiqueta para decirle a cual pais quieres obtener la categoria.

Para obtener todas las categorias de mercadolibre de venezuela

http://www.mercadolibre.com.ar/jm/categsXml?as_site_id=MLV

Mercadolibre de mexico

http://www.mercadolibre.com.ar/jm/categsXml?as_site_id=MLM

Mercadolibre de chile

http://www.mercadolibre.com.ar/jm/categsXml?as_site_id=MLC

Como pueden observar siempre para obtener las categorias de cada pais tienen que colocar .com.ar, algo extraño pero lamentablemente asi funciona.

Ahora como tratar esta informacion, pues yo cree un script en PHP recursivo que me encontrara todas las categorias en la cual si encontraba la palabra Blackberry me imprimiera la categoria padre a la cual esta pertence.

<?php
$xml = simplexml_load_file('http://www.mercadolibre.com.ar/jm/categsXml?as_site_id=MLC');
$vector=$xml;
echo "cantidad de padres: ".count($vector->categories->category);
for ($i=0;$i<count($vector->categories->category) ;$i++) {
    echo "categoria superior ".$vector->categories[$i]["name"];
    recursiva($vector->categories[$i]);
}
function recursiva($vector){
   for ($j=0;$j<count($vector) ;$j++) {
   if(count($vector->category[$j])>1){
          if(categoria($vector->category[$j])){
          echo ",'".$vector["name"]."'),";
     }
        recursiva($vector->category[$j]);
    }else{
     if(categoria($vector->category[$j])){
          echo ",'".$vector["name"]."'),";
     }

}

}
}
function categoria($busqueda){
           if(preg_match("/blackberry/i",$busqueda["name"])){
           echo "<br>array('".$busqueda["id"]."'";
           return true;
       } else{
           return false;
       }
}

?>

explicando este codigo linea por linea

$xml = simplexml_load_file(‘http://www.mercadolibre.com.ar/jm/categsXml?as_site_id=MLC’);

leo desde la pagina de mercadolibre el archivo XML que me va a generar y lo guardo en la variable $xml

$vector=$xml;

Simplemente despues la llame $vector (si es until yo se)

echo "cantidad de padres: ".count($vector->categories->category);

Es una prueba para saber si realmente leyo el XML y cuantos padres tiene el cual normalmente te debera decir que solamente 4 o 2

for ($i=0;$i<count($vector->categories->category) ;$i++) {
    echo "categoria superior ".$vector->categories[$i]["name"];
    recursiva($vector->categories[$i]);
}

creo un ciclo que me entre a todos a la etiqueta categories->category las cuales contienen los nombre de las categorias, simplemente imprimo cual es mi categoria a la cual estoy entrando por curiosidad y llamo por cada categoria general a una funcion recursiva.

 

function recursiva($vector){
   for ($j=0;$j<count($vector) ;$j++) {
   if(count($vector->category[$j])>1){
          if(categoria($vector->category[$j])){
          echo ",'".$vector["name"]."'),";
     }
        recursiva($vector->category[$j]);
    }else{
     if(categoria($vector->category[$j])){
          echo ",'".$vector["name"]."'),";
     }

}

para cada categoria general crea otro ciclo que me cuenta la cantidad de sub categorias que tiene esa categoria, pregunto si esa categoria es mayor a 1 probablemente es que tenga otras subcategorias por lo tanto entro para realizar la misma funcion recursiva, realizo un if preguntando si la palabra Blackberry si encuentra en justamente la categoria que estoy tratando, si es el caso me imprime la variable “name” que seria el nombre y como veran mas adelante imprime la variable “id” tambien la cual se encuentra en la funcion Categoria y si la primera pregunta es falsa significa que no tiene mas subcategorias por lo tanto realizo la misma pregunta para saber si esa subcategoria que no mas subcategorias tambien mantiene la palabra clave Blackberry.

function categoria($busqueda){
           if(preg_match("/blackberry/i",$busqueda["name"])){
           echo "<br>array('".$busqueda["id"]."'";
           return true;
       } else{
           return false;
       }
}

esta es simplemente la funcion de busqueda que dado una etiqueta tomada de un archivo XML te busca si consigue en en el campo “name” la palabra blackberry si es el caso que la encuentra imprime

"<br>array('".$busqueda["id"]."'"

tal vez algo complicado, pero como pueden ver en unas lineas de codigo consigo obtener todas las categorias padres que contienen subcategorias con la palabra blackberry,

probando en codigo tendrian una salida de este estilo

cantidad de padres: 26categoria superior
array(‘65712′,’Celulares y Telefonía’),
array(‘94667′,’iPad y Tablets’),
array(‘94662′,’iPad y Tablets’),
array(‘70368′,’Baterías’),
array(‘86810′,’Cable de Datos’),
array(‘70348′,’Carcasas’),
array(‘70488′,’Cargadores’),
array(‘37183′,’Holders y Fundas’),

continuare en estos dias a continuar a desarrollar este especie de tutorial.

Si prueban el codigo les recomiendo que cargen el archivo XML de mercadolibre en su computadora y cambien la direccion

$xml = simplexml_load_file('http://www.mercadolibre.com.ar/jm/categsXml?as_site_id=MLC');

por algo estilo

$xml = simplexml_load_file('archivo.xml');

dado que la lectura del archivo directo desde mercadolibre puede ser algo pesado, tardar mucho tiempo y arrojar por lo tanto errores por tiempo de lectura que no fueron tratados en este articulo