Sayfalar

22 Ekim 2008 Çarşamba

Google Api & Blogger poster class

Epeydir günlüğümü karalamıyordum.Geçen gün blogger.com için poster yazdım onu sizle paylaşayım.


Google api'si kullanarak yazmak istediğiniz yazıyı yayınlayabilirsiniz.


Yazıyı gönderirken verileri utf-8 olarak göndermelisiniz.Onun içinde class'ın içinde dil diye bir fonksiyon yazdım


Gelen veriyi ISO-8859-9'dan UTF-8'e çeviriyor tabi bunu sizin tetiklemeniz gerekiyor.




<?php

/*

Kodlama By s4l1h

http://pehepe.blogspot.com/

Alıntı yaparken kaynak gösterirseniz, bu sizin emeğe saygınız olduğunu gösterir.


*/



//Class Kodları Başlıyor.................

class blogger{

// Türkçe Karekterleri UTF-8 Çevirmek için

function cevir($gel){


if(
$this->dil==1){ $gel=iconv("ISO-8859-9", "UTF-8", $gel); }


return
$gel;

}

// XML Oluşturuyoruz

function olustur($ad,$etiket,$icerik){

$ad=$this->cevir($ad);


$icerik=$this->cevir($icerik);

$xml="<entry xmlns='http://www.w3.org/2005/Atom'>

<title type='text'>$ad</title>


<content type='xhtml'>

<div xmlns=\"http://www.w3.org/1999/xhtml\">"
.$icerik."</div>

</content>"
;

foreach(
$etiket as $liz0){


$liz0=$this->cevir($liz0);

$xml.='<category scheme="http://www.blogger.com/atom/ns#" term="'.$liz0.'" />';


}

$xml.="</entry>";

return
$xml;

}



function
user($a){


return
$this->kullanici=$a;

}

function
pass($a){

return
$this->sifre=$a;


}

function
no($a){

return
$this->id=$a;

}

function
dil($a){


return
$this->dil=$a;

}

// Giriş Yapıyoruz

function tokenal(){

$ch3 = curl_init();


curl_setopt($ch3, CURLOPT_URL, 'https://www.google.com/accounts/ClientLogin');

curl_setopt($ch3, CURLOPT_POSTFIELDS,"Email=$this->kullanici&Passwd=$this->sifre&accountType=GOOGLE&service=blogger&source=curlbaglan");


curl_setopt($ch3, CURLOPT_POST, 1);

curl_setopt($ch3, CURLOPT_HEADER, 0);

curl_setopt($ch3, CURLOPT_FOLLOWLOCATION, 1);


curl_setopt($ch3, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch3, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");


curl_setopt($ch3, CURLOPT_RETURNTRANSFER, 1);

$finish = curl_exec($ch3);

$a=explode("Auth=",$finish);


$x=trim($a[1]);

return
$this->token=$x;

}

function
token(){


$this->tokenal();

return
$this->token;

}

// Gönderiyoruz.

function yaz($konu,$etiket,$icerik){


$this->token();

$xml=$this->olustur($konu,$etiket,$icerik);

$s=strlen($xml);


$header[]="Content-Type: application/atom+xml";

$header[]="Content-length: $s";

$header[]="Authorization: GoogleLogin auth=$this->token";


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://www.blogger.com/feeds/'.$this->id.'/posts/default');


curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);


curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");


curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$sonuc = curl_exec($ch);

if(
strpos($sonuc,"Error") OR strpos($sonuc,"The element")){


return
"Hata OLUŞTU<br/>".$sonuc;

}else{

return
'Gönderme Başarılı\r\n';

//echo $sonuc;

}

}


}



//Class Kodları Bitiyor.................





/*

Örnek Bir Kullanım Aşşağıdaki Gibidir.

Öncelikle kullanıcı adı,şifre ve blogid yazalım


blogger.com girip hesabınızdan blogidi alabilirsiniz.

*/



$kullanici = "xxxxxxxxx@gmail.com"; // Mail adresiniz

$sifre = "xxx"; // Şifreniz


$id = "6492861835614290907"; // Blog id









$konu="Blogger Post Denemesi"; // Yazı Başlığı


/*

Etiketler array olmalıdır aşağıdaki gibi

*/

$etiket[]="php";

$etiket[]="blogger";

$etiket[]="pehepe";


$etiket[]="s4l1h";

/*

Yazının içeriği

*/

$icerik="Blogger Poster Denemesi<br/>http://pehepe.blogspot.com/<br/>";




/*

Blogger'e post etmek için

*/

$blog=& new blogger; // Class'ı kullanmaya başlıyoruz

$blog->user($kullanici); // Kullanacı adı


$blog->pass($sifre); //Şifre

$blog->no($id); // Blog No

$blog->dil(1); //Yolladığımız Türkçe veriyi UTF-8'e çevirmesini istiyoruz.


echo $blog->yaz($konu,$etiket,$icerik); // Son olarak Gönderiyoruz



?>


Dilerseniz class'ı ve örneğini buradan indirebilirsiniz.


Unutmadan eklemek istediğim bir kaç şey var bu class ile toplam 50 yazı gönderebilirsiniz 50 yazıdan sonra


resim doğrulaması ister sizden toplamda günlük 350 ( tam emin değilim bu sayıdan) yazı limiti var günlük.