Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
bom dia galera,
estou usando o script do tiagobelem para pegar a id de links da conta de um usuario do youtube e gravar ele no mysql, porem quando eu faço uma verificacao se o id que estou pegando ja foi inserido ele duplica os registros e ignora alguns..segue o codigo:
include 'funcoes/conecta.php';
date_default_timezone_set('America/Sao_Paulo');
// Seu usuário do YouTube
$usuario = 'contadoyoutube';
// URL do Feed RSS de vÃdeos de um usuário
$youTube_UserFeedURL = 'http://gdata.youtube.com/feeds/base/users/%s/uploads?orderby=updated&v=2';
// Usa cURL para pegar o XML do feed
$cURL = curl_init(sprintf($youTube_UserFeedURL, $usuario));
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
$resultado = curl_exec($cURL);
curl_close($cURL);
// Inicia o parseamento do XML com o SimpleXML
$xml = new SimpleXMLElement($resultado);
$videos = array();
// Passa por todos vÃdeos no RSS
foreach ($xml->entry AS $video) {
$url = (string)$video->link['href'];
// Quebra a URL do vÃdeo para pegar o ID
parse_str(parse_url($url, PHP_URL_QUERY), $params);
$id = $params['v'];
// Monta um array com os dados do vÃdeo
$videos[] = array(
'id' => $id,
'titulo' => (string)$video->title,
'thumbnail' => 'http://i' . rand(1, 4) .'.ytimg.com/vi/'. $id .'/hqdefault.jpg',
'url' => $url
);
}
foreach($videos as $video){
$link= $video['id'];
$sql_v=mysql_query("SELECT url FROM videos WHERE url='$link'");
$l=mysql_fetch_array($sql_v);
$url=$l['url'];
if($url!=$link){
$sql=mysql_query("INSERT INTO videos (url) VALUES ('$link')");
}
}
?>
alguem sabe o pq?
mas seu eu quiser pegar os outros dados ele nao ta inserindo mais..
foreach($videos as $video)
{ $titulo=$video['titulo'];
$foto=$video['thumbnail'];
$link= $video['id'];
$sql_v=mysql_query("SELECT url FROM videos WHERE url='$link'");
$num_rows = mysql_num_rows($sql_v);
if($num_rows == 0){
$origem_foto=$foto;
$destino_foto="img/youtube/".$link.".jpg";
copy($origem_foto,$destino_foto);
$y=100;
$x=150;
$lerimagem = imagecreatefromjpeg($destino_foto);
$img_largura = imagesx($lerimagem);
$img_altura = imagesy($lerimagem);
$nome_miniatura = explode('.',$destino_foto);
$nome_miniatura = $nome_miniatura[0]."r".$link.".jpg";
$nova = imagecreatetruecolor($x,$y);
imagecopyresampled($nova,$lerimagem,0,0,0,0,$x+1,$y+1,$img_largura,$img_altura);
imagejpeg($nova,$nome_miniatura,95);
$novo_x=imagesx($nova);
$novo_y=imagesy($nova);
unlink($destino_foto);
$sql=mysql_query("INSERT INTO videos (titulo,thumbnail,url,permissao)
VALUES ('$titulo','$nome_miniatura','$link',ocultar)");
}
} ?>heheh tmb so de Campo Belo =P
usa um 'or die()' ai nessa sua query pra ve c tem algum erro..
c o $link for um inteiro num precisa de aspas simples..
$sql_v=mysql_query("SELECT url FROM videos WHERE url = $link");
$num_rows = mysql_num_rows($sql_v);
if($num_rows == 0 ){
......LUIS as id do youtube sao passados como string apos pegar do xml .
ele nao retorna erro apenas nao insere
alterei o feed por
$youTube_UserFeedURL ='http://gdata.youtube.com/feeds/base/users/%s/uploads?orderby=published&max-results=30&v=2';
e deu certo.......vlw
Mude a lógica um pouquinho. Faça ele verificar se existe mais de uma linha para a query executada: