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.

15 yorum:

Adsız dedi ki...

birde şu sql injection hakkında bir makale yazarsanız yada iyi bir kaynak önerirseniz oldukça şık olur. mysql_real_escape_string ile girileni filtrele çıktı olarakda htmlentities kullan demek dışında tabi :p

başarılar...

Omar KURT dedi ki...

Güzel olmuş salih abi.bu noktada sınıf yapısının çok işe yaradığını görüyoruz ..

Adsız dedi ki...

dostum şu rewrite olayınıda anlatırmısın. ama kafatası kalın olanlar için anlat benim gibiler için. şu php ye yeni başladım.

birçok yeri aştım bu kaldı. aklım beynim basmıyor. bu düzenli ifadelerde de bir cinlik var ama anlamıyorum işte.

Unknown dedi ki...

peheçbi koder

Token invalid
Error 401

alıyorum nedir sorun ?

The_Power dedi ki...

S.a Usta Görüşmek İsterim Senle Th3_Pow3r@msn.com Eklersen

Adsız dedi ki...

çalışmıyo:S

Hata OLUŞTU
Token invalid
Error 401

s4l1h dedi ki...

Sizde neden sorun veriyor anlayamadım

http://bloggerpostdeneme.blogspot.com/

paylaştığım betik ile yukarıdaki adresteki postları atmıştım 50 mesaj sonra güvenlik kodu doğrulaması istemişti

Şu sıralar breaking captcha ile uğraşıyorum.

OKTAYUSX dedi ki...

Merhaba .. ben bunu kullanıyorum ama hiçbir etkisi yok maalesef. :( .. Gönderme başarılı diyor fakat bloga bakıyorum yazı yok :S

s4l1h dedi ki...

Sanırım çalıştıramıyanlardaki temel sorun Captcha'yı pasifleştirmeniz gerek.

https://www.google.com/accounts/DisplayUnlockCaptcha

Başlangıç için okunması lazım.
http://code.google.com/intl/tr-TR/apis/accounts/docs/AuthForInstalledApps.html

Sokarca# dedi ki...

Teşekkürler efenim sorunsuz çalışıyor... Allah razı olsun.

serkan dedi ki...

Salih hocam,
bende güzel çalışıyor, emeğin ve paylaşımın için teşekkür ederim.
Bir başka class daha buldum onda her birşey yapmak mümkün silme gönderme felan denemedim, çünkü senin kodları kendime uyarladım tek eksiğim kaldı,
post atarken resimde göndermek isiyorum, a href="" img src= şeklinde bağlantıya sahip resimde yollamak istiyorum ama olmuyor.

Adsız dedi ki...

bunu nasıl çalıştıracaz ? nereleri editlememiz gerekli ?

Adsız dedi ki...

ya kardes iyide bu kodları nasıl kullanmamız lazım anlayamadım anlatabilirsen sevinirim.

s4l1h dedi ki...

Size a'yı b'ye böl diye anlatamam bu sizin yaratıcılığınızı azminizi körertir zaten kodu anlayamadıysanız boşuna kullanmayın anlayamadığın kodu sisteminize eklemeyin kullanmayın sizin için söylüyorum bunları.

@@serkan
resim eklemek isteyince hata vermesinin sebebi büyük ihtimal xhtml'ye uyumlu yollamıyorsun yazıyı img tagının sonu böyle olmalı />

Nebi Sarıgül dedi ki...

hocam bu şekilde yaının içine resim ekleyip bloggere upload ettirebilirmiyiz ? oluyorsa nasıl yarımcı olurmusunuz pls.