Función php: Extractor de carátulas y Querías decir
íšltimamente ando intentando crear un par de aplicaciones que me están comiendo todo el tiempo libre y por eso no suelo postear mucho la verdad pero como recompensa os dejare un cachito de mi código.
Las funciones que os dejo son 2. Una que saca una imagen a partir de un texto. Como inspiración utilicé la de el gran Daniel Mota, alias IceBeat el cual termino una función que da como resultado la url, y el titulo de imágenes buscadas en amazon, cosa q me sobraba y me faltaban alternativas de búsqueda. Así que por orden decidí hacer la mía propia... así que en la mía tenemos 3 motores. Google Imágenes, Amazon y LastFm.es a partir de los cuales podremos obtener las direcciones de las imágenes. (Para que la las direcciones se interpreten correctamente hay que añadirles http:// delante). Ademas podemos cambiar el tamaño de las imágenes en los motores lastFm y en Amazon poniendo la talla que queremos con XS, S, M o L.
En el caso de amazon ademas podemos buscar por los siguientes Tag:
All, Apparel, Automotive, Baby, Beauty, Blended, Books, Classical, DVD, DigitalMusic, Electronics, GourmetFood, HealthPersonalCare, Jewelry, Kitchen, Magazines, Marketplace, Merchants, Miscellaneous, Music, MusicTracks, MusicalInstruments, OfficeProducts, OutdoorLiving, PCHardware, PetSupplies, Photo, Restaurants, Software, SportingGoods, Tools, Toys, VHS, Video, VideoGames, Wireless y WirelessAccessories. Por defecto busca con el Tag de "All".
Os dejo un ejemplo:
-
<?php
-
$coleccion = caratula(
-
"amazon", //motor de búsqueda
-
"oasis", //palabra o palabras a buscar
-
"L", //Tamaño de la imagen (solo en lastfm y amazon
-
"Music"); //Tag de búsqueda (solo en amazon)
-
-
foreach($coleccion as $numero_de_disco => $caratula){
-
}
-
?>
La segunda función que os dejo es una sencilla y útil. El famoso Quiso decir de google.
Si google tiene casi toda la información del planeta las palabras con mayor numero de ranking en google suelen ser las que mas se utilizan en un tema concreto y esa es la utilizad del Quiso decir. No dice solo si esta bien una palabra ortográficamente, si no que también lo aplica a nombres títulos sustantivos o cualquier otra cosa dentro de su contexto, lo que proporciona mayor numero de aciertos.
utilizar esta función es tan sencillo como insertar un texto, y si google cree que no esta bien escribirá la palabra que cree que está mal en negrita, pero corregida. Si google cree que esta bien lo dejará escrito como esté.
Ejemplo:
-
<?php
-
?>
Visto lo que hay ahora si a alguien le interesan, aquí os las dejo:
FUNCIí“N CARíTULAS:
-
<?php
-
function caratula($motor='google', $query='', $size='L', $type='All'){
-
switch($motor) {
-
case "google":
-
$url = 'http://images.google.es/images?q='.urlencode($query).'&gbv=1&imgsz=xlarge|large|xxlargue|medium';
-
-
$exp_info = '!:http://(.+) width=!U';
-
-
$salida = $info[1];
-
break;
-
-
case "lastfm":
-
-
$exp_info = '!class="cover"><a href="(.+)" title="(.+)"><img src="http://(.+)" alt="(.+)" /></a></div>!U';
-
-
switch ( $size ) {
-
case 'XS': $size = 'SCTHUMBZZZ'; break;
-
case 'S': $size = 'SCTZZZZZZZ'; break;
-
case 'M': $size = 'SCMZZZZZZZ'; break;
-
case 'L': $size = 'SCLZZZZZZZ'; break;
-
default: $size = 'SCTZZZZZZZ'; break;
-
}
-
$salida = $info[3];
-
break;
-
-
case "amazon":
-
$url = 'http://webservices.amazon.com/onca/xml?';
-
$url .= 'Service=AWSECommerceService&';
-
$url .= 'AWSAccessKeyId=0NK019CD48HNEDK3PBG2&';
-
$url .= 'Operation=ItemSearch&';
-
$url .= 'SearchIndex='.$type.'&';
-
$url .= 'ResponseGroup=Large,Images&';
-
-
switch ( $size ) {
-
case 'XS': $size = 'Small'; break;
-
case 'S': $size = 'Swatch'; break;
-
case 'M': $size = 'Medium'; break;
-
case 'L': $size = 'Large'; break;
-
default: $size = 'Large'; break;
-
}
-
-
$exp_info = '!<URL>http://(.+)</URL><Height Units="pixels">!U';
-
-
$salida = $info[1];
-
break;
-
}
-
return $salida;
-
}
-
?>
FUNCIí“N QUISO DECIR:
-
<?php
-
function quiso_decir($query='') {
-
$url = 'http://images.google.es/images?q='.urlencode($query).'&gbv=1&imgsz=xlarge|large|xxlargue|medium';
-
$exp_info = '! con respecto a: </font><a href="(.+)" class="p">(.+)</a>!U';
-
$exp_info = '! decir: (.+)class=p>(.+)</a!U';
-
return $info[2][0];
-
if($info[2][0]==""){
-
return $query;
-
}
-
}
-
?>
Interesante script, apenas lo estoy leyendo, pero me parece prometedor, no hay muchos scripts en php que hagan eso, al menos solo he encontrando uno aparte de este y no era muy bueno.
Hola Luis, muchas gracias, si encuentras algo que mejorar no dudes en contarlo por aquí
Brillante idea ( el “quiso decir”).
Sólo me queda una duda, si google lo detectará como “infracción” si las peticiones desde la web son muchas y podría llegar a banear la ip o algo así.
Gracias por compartir.
Hola viz, cuando hice esa función no había tantas APIs de google como hoy en día.. este codigo era un experimento para ver el potencial del servicio, así que supongo que si estas pensando en utilizar la función de quiso decir en un proyecto mas grande lo mejor seria consultar la API de google y ver si se puede implementar mas “legalmente”.
También puedes construir tu propio “quiso decir” con la función parecido() a partir de un array de datos o consultas parciales a tu propia base de datos..
Un saludo
Hola,
Cierto que lo suyo sería utilizar las apis de google. peeeero teniendo en cuenta que no dispongo de tiempo para desarroyarlo, esta opción es lo mejor que he encontrado ( por cierto difícil de mejorar en cuanto al resultado final ).
Para las funciones de levenshtein también necesito mucho tiempo de desarroyo ya que estoy buscando en + de 7 000 000 de documentos y no se ni por donde empezar a construir el array que se le pasa
En fin, de momento voy a usar tu superfunción ( gracias de nuevo )
PD. Lo de “legalmente” me dejó un poco preocupado, crees que se incurre en algún tipo de infracción fuera de lo que sería un baneo o algo así.??
Hola de nuevo Viz, jejeje no creo hombre.. mientras atribuyas algún mérito a Google no creo q te pongan pegas (ya sabes su política, “Don’t be evil”) y al fin y al cabo es simplemente usar el servicio que dan. No creo ni que incurras en baneo pero lo mejor seria ponerles un mail preguntando e indicando la situación para prevenir….
Si quieres utilizar la función levenshtein el funcionamiento seria sacar aprox. 100 palabras que contengan las letras que el usuario introdujo, poniendo las que mas se acerquen a la combinación original más arriba.. Si utilizas una base de datos tipo MySQL para leer los archivos no creo q tengas mucho problema.
(ayuda bien venida)
Si puedo ayudarte en algo mas solo tienes que decirlo y en cuanto tenga un poco de tiempo intentare portar la función con la API de google
Un saludo
Creo que ya hay alguna clase por ahi, mientras googleaba ( cuando caí en tu página
) creo que vi el script que implementaba la api de google.
De todos modos creo que lo unico que se ganaría es “elegancia” porque, como decía, el resultado es difícil de mejorar, tanto su rapidez como el propio resultado.
No añade más de 0.5s de media al total de la página.
No se si es el caso de google, pero alguna vez he trabajado con apis de yahoo ( que por cierto tambien tiene la posivilidad de implementar un “quiso decir” ) y la rapidez no es uno de sus fuertes.
Saludos.