Haber Botu Güncelleme Sorunu
-
arkadaslar bi tane haber botu buldum.ve siteye koydum.sorunsuz calışıyor fakat tek bir sorunu var oda her güncellemede aynı haberleri tekrar takrar koyuyor.yeni haberi ayırmıyor yani.bu sorunu nasıl halledebilirim yardım ?
-
siten ne?
bot ne?
çektiğin kaynak ne?
-
site php koduyla yazılmıs scriptten mevcuttur.
http://www.kenthaber.com/marmara/balikesir sitesindeki haberleri benim kendi siteme botla cekmeye calısıyorum.ama bazı haberleri sanırım almıyor.ve bazı haberleride tekrar tekrar yayınlıyor..
-
haberin linkine göre kontrol ettir
-
onunla alakası yok.bişeyler eksik yada düzeltilmesi gerekiyor.yoksa aynı haberi her güncellemede tekrar tekrar neden versin..
-
sen burada böle böle yazmışsın. Ne bi botun kaynak kodunu koymuşsun nede doğru düzgün yapıyı anlatmışsın.
Çözüm yolu sunuyoruz onunla alakası yok diyorsun. O zaman neyle alakası var ?
botun sayfaya uğdaradığında belirli taglar arasından verileri alıp dbye kaydettiğini düşün.
Eğer herhangi bir kritere göre(ben haberlinki dedim) kontrol yapmıyorsa her sayfaya uğradığında aynı haberi çekecektir
-
include ('ayar.php');
#si', $sitei, $cektim3);
function resim_indir ($link, $name = null)
{
$link_info = pathinfo ($link);
$uzanti = strtolower ($link_info['extension']);
$file = ($name ? $name . '.' . $uzanti : $link_info['basename']);
$curl = curl_init ($link);
$fopen = fopen ('./pictures/' . $file, 'w');
curl_setopt ($curl, CURLOPT_HEADER, 0);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt ($curl, CURLOPT_FILE, $fopen);
curl_exec ($curl);
curl_close ($curl);
fclose ($fopen);
}
function turkishchar($string){
$patterns[0] = '/Å'.chr(158).'/';
$patterns[1] = '/ÅŸ/';
$patterns[2] = '/İ/';
$patterns[3] = '/ı/';
$patterns[4] = '/Ä'.chr(158).'/';
$patterns[5] = '/ÄŸ/';
$patterns[6] = '/Ü/';
$patterns[7] = '/ü/';
$patterns[8] = '/Ö/';
$patterns[9] = '/ö/';
$patterns[10] = '/Ç/';
$patterns[11] = '/ç/';
$replacements[0] = 'Ş';
$replacements[1] = 'ş';
$replacements[2] = 'İ';
$replacements[3] = 'ı';
$replacements[4] = 'Ğ';
$replacements[5] = 'ğ';
$replacements[6] = 'Ü';
$replacements[7] = 'ü';
$replacements[8] = 'Ö';
$replacements[9] = 'ö';
$replacements[10] = 'Ç';
$replacements[11] = 'ç';
return preg_replace($patterns, $replacements, $string);
}
$pij = "balikesirgundem";
if($pij){
$site = "http://www.kenthaber.com/marmara/balikesir";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$site);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$adres=curl_exec($ch);
curl_close($ch);
preg_match_all('#(.*?)#si', $adres, $cektim1);
preg_match_all('##si', $adres, $cektim2);
$say = count($cektim1[1]);
for($i=0;$i<$say;$i++){
$link = "http://www.kenthaber.com".$cektim1[2][$i];
$baslik = turkishchar($cektim1[1][$i]);
$ch2=curl_init();
curl_setopt($ch2,CURLOPT_URL,$link);
curl_setopt($ch2,CURLOPT_RETURNTRANSFER,1);
$sitei=curl_exec($ch2);
curl_close($ch2);
preg_match_all('#src="/Resimler/(.*?)" />(.*?)
preg_match_all('##si', $sitei, $cektim4);
$icerik = turkishchar($cektim3[2][0]);
$resim = "http://www.kenthaber.com/Resimler/".$cektim4[1][0];
$tarih = date("y/m/d");
$zaman = date("G:i:s");
$kontrol=mysql_query("select * from news where cuff='$baslik'");
if(mysql_num_rows($kontrol)=='0')
{
$sql2 = mysql_query("Insert Into news (cuff,subject,spot1,spot2,detail,sender,date,time,reading,category)
values ('$baslik','$baslik','$baslik','$icerik','$icerik','11','$tarih','$zaman','1','20')");
$id=mysql_insert_id();
resim_indir($resim,$id);
$xresim=$id.".jpg";
mysql_query("UPDATE news SET picture='$xresim' WHERE id='$id'");
mysql_query("UPDATE news SET source='$xresim' WHERE id='$id'");
mysql_query("UPDATE news SET image='0' WHERE id='$id'");
echo ''.$baslik.' EKLENDI
';
}
}
}
?>Arkadaslar kod bu botu her yenileyişimde olan haber tekrar siteye düşüyor.daha önce aldıgı haberi tanımıyor yani bot...
-
çözümü kolay arkadaşım sonuçta eklenen haberler veritabanına ekleniyo mysql_num_rows ile veritabanında olup olmadıgını kontrol ettirirsen varsa kayıt etmez yoksa kayıt eder bak mesala küçük bi örnek yazayım
diyelim haberin başlıgı mysql de baslik adlı yere kayıt oluyo icerik ise mysql de icerik adlı yere kayıt oluyo allta yazıcagım kodu uygularsan olup olmadıgını kontrol eder ama sen verdigim kodu scriptine göre uyarlaman lazım
$sec = mysql_query("SELECT baslik,icerik FROM haberler WHERE baslik='$baslik' and icerik='$icerik');
$sor = mysql_num_rows($sec);
if($sor >0){
echo "Haber daha önceden girişmiş";
}else{
burayada haberi veritabanına ekleyen kodu yazıcan scriptteki
}
bu kadar
-
heh koymussun kaynak kodu.
$kontrol=mysql_query("select * from news where cuff='$baslik'");
if(mysql_num_rows($kontrol)=='0')
{
$sql2 = mysql_query("Insert Into news (cuff,subject,spot1,spot2,detail,sender,date,time,reading,category)
values ('$baslik','$baslik','$baslik','$icerik','$icerik','11','$tarih','$zaman','1','20')");
$id=mysql_insert_id();
resim_indir($resim,$id);
$xresim=$id.".jpg";
mysql_query("UPDATE news SET picture='$xresim' WHERE id='$id'");
mysql_query("UPDATE news SET source='$xresim' WHERE id='$id'");
mysql_query("UPDATE news SET image='0' WHERE id='$id'");
echo ''.$baslik.' EKLENDI
';
}burda zaten başlığa göre kontrol yapıyor.
Sen acaba başlıkları felan mı değiştiriyorsun
-
hayır hiç bişeye dokunmuyorum ama yinede aynı haberler cıkıyor tanımıyor yani daha önce koydugu haberleri
