Lazarus
Other Languages => Spanish => Topic started by: daragor on April 19, 2017, 03:19:29 pm
-
Hola muchachos, he buscado info pero me quede corto, no encuentro al menos con mis limitaciones del ingles. no logro dar con las palabras claves y quizas me puedan ayudar, de paso vamos ampliando este foro en español..
Me gustaria agregar a un sistema que tengo, la opcion de consultar un precio de un producto en algun sitioweb de referencia y mostrar el resultado.. sin tener que entrar a dicho sitio, nada de browser al menos visible.. Entiendo que para estas cosas existen las API de los sitios web que nos dan acceso a los sistemas, pero no conozco nada desde el lado de lazarus, componentes, codigos, etc. podrian guiarme un poco? lo ideal para mi seria consultar de forma trasparente y solo mostrar el/los precio/s sugerido/s (de la web consultada, mercadolibre, ebay lo que sea) de dicho producto.
muchas gracias!
-
... de consultar un precio de un producto en algun sitioweb de referencia y mostrar el resultado.. sin tener que entrar a dicho sitio, nada de browser al menos visible..
Pues para leer el precio, vas a tener que entrar al sitio, es decir realizar un acceso al servidor. Mis preguntas serían:
En los sitios que piensas consultar ¿tienen una URL fija y una posición fija, los elementos que contienen los precios que vas a consultar, o son cambiantes/aleatorias?
Si piensas usar MercadoLibre, debo decir que esas páginas cambian constantemente, y si quieres consultar allí, tendrías que implementar un robot de búsqueda con cierto nivel de inteligencia para ubicar los precios. Hay muchos parámetros que programar allí.
Lo ideal, sería que consultes a un sitio que maneje Web Services, y así se puede realizar la consulta de manera más sencilla.
Saludos.
-
Hola, mira yo aprendí a hacerlo con JavaScript con AngujarJS 1.x
Pero es lo mismo en lazarus, pero nunca lo hice en lazarus, tenes que entrar acá para mercado libre:
http://dev-test.mercadolibre.com/apps/rest-console/#response
Por ejemplo para argentina, tenes que tener un token que es tuyo como desarrollador tenes que tener cuenta en mercado libre. Lo mismo para cualquier API como la de youtube o cualquier api de google también tenes que estar registrado.
https://api.mercadolibre.com/sites/MLA/search?q=ipod (Si entras ahi directo vas a ver HTML, no es lo que buscas vos)
Haces GET con tu token y te devuelve JSON puro, sin HTML
{"site_id":"MLA","query":"ipod","paging":{"total":7837,"offset":0,"limit":50},"results":[{"id":"MLA614098984","site_id":"MLA","title":"Ipod Touch 16 Gb 6ta Generación - Gold","subtitle":null,"seller":{"id":195832229,"power_seller_status":"platinum","car_dealer":false,"real_estate_agency":false,"tags":[]},"price":6399,"currency_id":"ARS","available_quantity":2,"sold_quantity":67,"buying_mode":"buy_it_now","listing_type_id":"gold_special","stop_time":"2035-11-19T07:00:00.000Z","condition":"new","permalink":"http://articulo.mercadolibre.com.ar/MLA-614098984-ipod-touch-16-gb-6ta-generacion-gold-_JM","thumbnail":"http://mla-s1-p.mlstatic.com/463211-MLA20522750405_122015-I.jpg","accepts_mercadopago":true,"installments":null,"address":{"state_id":"AR-C","state_name":"Capital Federal","city_id":"TUxBQlJFQzkyMTVa","city_name":"Recoleta"},"shipping":{"free_shipping":true,"mode":"me2"},"seller_address":{"id":171876304,"comment":"","address_line":"","zip_code":"","country":{"id":"AR","name":"Argentina"},"state":{"id":"AR-C","name":"Capital Federal"},"city":{"id":"TUxBQlJFQzkyMTVa","name":"Recoleta"},"latitude":-34.5947723,"longitude":-58.3959783},"attributes":[],"original_price":null,"category_id":"MLA43718","official_store_id":477,"reviews":{}}, ...
El JSON lo lees en lazarus con el lector de JSON que mas te guste, hay varios pero hay uno que viene con lazarus / fpc.
EDIT! Me equivoque en algo, hay parte de la API que es publica, asi que podes acceder así nomas sin el token si no son datos privados.
Lo podes probar acá
https://resttesttest.com/
En donde dice Method dejas GET y en endpoint pones https://api.mercadolibre.com/sites/MLA/search?q=ipod, despues haces Ajax request y listo te devuelve el json, eso nomas para que veas, lo mismo tenes que hacer en lazarus
-
Usa los componentes JEDI (http://www.delphi-jedi.org/)o Synapse (http://www.ararat.cz/synapse/doku.php/start). Mis favoritos son estos últimos, aunque por desgracia el proyecto parece estar bastante muerto, porque hace años que no actualizan ni dan señales de vida. :( ¡De hecho todavía tienen un encuesta activa acerca de Kylix!
En cualquier caso, con cualquiera de los dos puedes descargarte el documento HTML y luego usar algún parser de XML para buscar los datos que necesites. Si el documento HTML está bien formateado (sigue a rajatabla HTML 4.1, XHTML 1.0 ó HTML 5) no deberías tener muchos problemas. Si por el contrario no sigue correctamente esos formatos (algo que por desgracia hacen casi todas las webs que he visto) tendrás que trabajártelo mucho.
-
Muchachos! es impresionante la ayuda que me dan, ahora voy a hacerme un tiempo para ir probando y analizando una a una sus propuestas y claro que voy a pasar a contar la experiencia con los componentes mencionados y con alguna web específica que vaya a probar... la verdad no soy experto en desarrollo web pero algo de idea tengo como para sumergirme... :-[
-
Voy muy bien con el tema json, para leer datos ... estoy usando las unidades del fpc (... fphttpclient, fpjson, jsonparser). sin instalar nada extra, salvo los .dll de OpenSSL necesarios que son: libeay32.dll y ssleay32.dll, pegados junto al .exe
La URL API de mercadolibre: https://api.mercadolibre.com/sites/MLA/search?q=smatwhatch#json
Y el resultado, en una pantalla de pruebas adjunto
Es simple... pero funciona, se puede trabajar con los datos.
Sigo haciendo pruebas, como por ejemplo usar 2 o más palabras en la busqueda, cosa que por ahora me da error! creo que voy a usar un stringreplace con el espacio x %20
-
Sigo haciendo pruebas, como por ejemplo usar 2 o más palabras en la busqueda, cosa que por ahora me da error! creo que voy a usar un stringreplace con el espacio x %20
Haz una búsqueda con dos palabras en la web para ver cómo genera la URL y saldrás de dudas. Probablemente necesitarás algo más que el espacio, seguro que escondida en alguna librería o paquete hay una funcion para codificar y decodificar el Percent Encoding. Yo hice una función así en 40 líneas, no es nada complicado: http://en.wikipedia.org/wiki/Percent-encoding (http://en.wikipedia.org/wiki/Percent-encoding)
-
Gracias jmm72 por la info. Ya esta solucionado con ese stringreplace para armar la cadena de busqueda.
Les dejo los archivos por si les interesa de manera q el tema quede "con resolución".
https://github.com/blogwebscom/MLConsulta
-
Gracias jmm72 por la info. Ya esta solucionado con ese stringreplace para armar la cadena de busqueda.
Les dejo los archivos por si les interesa de manera q el tema quede "con resolución".
https://github.com/blogwebscom/MLConsulta
Hola amigo, puede volver a compartir el link porfavor, parece que se ha caído, saludos
-
Hola Ericktux! claro busque los codigos y los volvi a subir a git. Lo que si me paso, xq es un proyecto que no lo volvi a usar nunca más, es que lo volvi a compilar en windows 10 y funciona! pero.. al cerrar me da un error de Access Violation en una direccion.. NO se porque..
Lo que hice es actualizar los dll de openssl (libeay32.dll y ssleay32.dll) para 64bits y como me daba un error en el compilador agregue a uses el "opensslsockets" .. tambien he notado un error en algunos precios en la lista, salen la mayoría bien pero algunos parece q no lo trabaja correctamente... en fin
Te dejo el código original que data del 2017 y te dejo los archivos nuevos con los que estuve haciendo pruebas, seria bueno dejarlos funcionando todo ok asi que cualquier novedad te pido que me informes, así actualizamos.
Salu2
-
gracias amigo les daré un vistazo y le informo