
25/02/2013, 09:00
|
| | Fecha de Ingreso: febrero-2013 Ubicación: Pamplona, España
Mensajes: 2
Antigüedad: 12 años Puntos: 0 | |
Acortador url api Google Me gustaría que alguien me pudiera ayudar con un problema que tengo con la API del acortador de Google. Tengo una base de datos de RSS con una url larga. Para que valide el feed en en rss validator de w3c acorto las url con la API. El problema que tengo es que no me acorta y guarda en la base de datos todas las url. Si pongo una dirección de las que no me guarda de forma manual en el acortador de Google, me lo hace, pero en el script no.
Código:
<?php
//conecto con la base de datos
$Servidor = "localhost";
$usuario = "usuario";
$clave = "cpassword";
$bbdd = "bbdd";
$connectid = mysql_connect($Servidor, $usuario, $clave);
mysql_select_db($bbdd);
$ssql = "select * from Bocm order by Fecha desc";
$result = mysql_query($ssql);
while ($registro = mysql_fetch_array($result))
{
$mysqli = new mysqli("localhost", "bfxbdf", "dfbdfbd", dfbdbs");
if (mysqli_connect_errno()) {
echo "Error enconexión: ". mysqli_connect_error();
exit();}
//_________________________________________________
$url= $registro["Enlace"]; # url larga
$api_key=$key; # mi api
$host= 'www.googleapis.com'; # servidor
$port= '443'; # puerto ssl
$path= '/urlshortener/v1/url?'; # path donde se hara el request POST
$buf= array( "longUrl"=>urlencode($url) ); # array para pasar a json
$data= array( 'POST', $path.$api_key, json_encode($buf) ); # pasando a json
$r='';
$http_request = "$data[0] $data[1] HTTP/1.0\r\n";
$http_request .= "Host: $host\r\n";
$http_request .= "Content-Type: application/json;\r\n";
$http_request .= "\r\n";
$http_request .= $data[2];
if( ($fs = @fsockopen($host, $port, $errno, $errstr, 10))==FALSE )
echo 'No se puede abrir socket :: ['. $errno. '] '. $errstr;
else
{
fwrite($fs, $http_request);
while ( !feof($fs) )
$Enlcort .= fgets($fs, 1160); // One TCP-IP packet
fclose($fs);
$r= explode("\r\n\r\n", $r, 2);
# exito
print_r($Enlcort);
}
//_________________________________________________
//if ($Enlcort != $registro["Enlacecorto"]){
$sql ="UPDATE Bocm SET Enlacecorto = '" . $Enlcort . "' where Enlace = '" . $registro["Enlace"] . "'";
/* fetch array asociativo*/
if ($rs = $mysqli->query($sql)) {
echo "Dentro";
/*while ($fila = $rs->fetch_assoc()) {
}*/
}
//}
echo "Dirección: " . $registro["Enlace"] . " " . $registro["Bocm ID"] . " Dirección corta: " . $Enlcort . "/n";
}
/* liberamos la memoria asociada al resultado */
$rs->close();
/* cerramos la conexion */
$mysqli->close();
?>
También he probado con esta otra:
Código:
<?php
//Acortador URL Google
//___________________________________________
// Declarar la clase
class GoogleUrlApi {
// Constructor
function GoogleURLAPI($key,$apiURL = 'https://www.googleapis.com/urlshortener/v1/url') {
// Keep the API Url
$this->apiURL = $apiURL.'?key='.$key;
}
// Acortar una URL
function shorten($url) {
// Send information along
$response = $this->send($url);
// Return the result
return isset($response['id']) ? $response['id'] : false;
}
// Expandir una URL
function expand($url) {
// Envía esta información
$response = $this->send($url,false);
// Vuelve a los resultados
return isset($response['longUrl']) ? $response['longUrl'] : false;
}
// Enviar informacion a Google
function send($url,$shorten = true) {
// Create cURL
$ch = curl_init();
// SI estamos acortado una URL...
if($shorten) {
curl_setopt($ch,CURLOPT_URL,$this->apiURL);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode(array("longUrl"=>$url)));
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Content-Type: application/json"));
}
else {
curl_setopt($ch,CURLOPT_URL,$this->apiURL.'&shortUrl='.$url);
}
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
// Ejecutar el post
$result = curl_exec($ch);
// Cerrar la conexión
curl_close($ch);
// Devolver el resultado
return json_decode($result,true);
}
}
//___________________________________________
//Ahora creemos una instancia de GoogleUrlApi para acortar o expandir una URL:
// Crear instancia con una clave
$key = 'AIzaSyA530eUn-c-jc_jevu-1HUyq1f35x90lPA';
$googer = new GoogleURLAPI($key);
//conecto con la base de datos
$Servidor = "localhost";
$usuario = "boletines";
$clave = "Ubibos7582";
$bbdd = "boletines";
$connectid = mysql_connect($Servidor, $usuario, $clave);
mysql_select_db($bbdd);
echo " 2";
//sentencia SQL para acceder a los últimos 10 artículos publicados
$ssql = "select * from Bocm order by Fecha desc";
$result = mysql_query($ssql);
while ($registro = mysql_fetch_array($result))
{
/* Relleno campo Sumario*/
$mysqli = new mysqli("localhost", "boletines", "Ubibos7582", "boletines");
if (mysqli_connect_errno()) {
// echo "Error enconexión: ". mysqli_connect_error();
exit();}
$Enlcort= $googer->shorten($registro["Enlace"]);
//if ($Enlcort != $registro["Enlacecorto"]){
$sql ="UPDATE Bocm SET Enlacecorto = '" . $Enlcort . "' where Enlace = '" . $registro["Enlace"] . "'";
/* fetch array asociativo*/
if ($rs = $mysqli->query($sql)) {
echo "Dentro";
/*while ($fila = $rs->fetch_assoc()) {
}*/
}
//}
echo "Dirección: " . $registro["Enlace"] . " " . $registro["Bocm ID"] . " Dirección corta: " . $Enlcort . "/n";
}
/* liberamos la memoria asociada al resultado */
$rs->close();
/* cerramos la conexion */
$mysqli->close();
?>
Muchas gracias y saludos cordiales. |