Hürriyet Gazetesi Api Kullanımı

Merhaba arkadaşlar. Yakın bir zamanda yayınlanan Hürriyet gazetesinin Hürriyet Geliştirici Platformu yani Api özelliği hakkında küçük bir php tabanlı proje geliştirdim. Daha önce api kullanmamış ve api kullanımını öğrenmek isteyenler için başlangıç olarak Hürriyet apiden başlamak çok mantıklı olacaktır. Çünkü Api dökümantasyonları genelde ingilizcedir ve ingilizceniz yeterli değilse api başlangıcı zor ve pek eğlenceli olmayacaktır. Bunun aksine ise Hürriyet Api dökümanyastonu Türkçe ve İngilizce şeklinde hazırlanmıştır. Lafı çok fazla uzatmaya gerek yok zaten sizde kullandıkça dediklerimi çok daha iyi anlayacaksınız :)

 

Öncelikle Hürriyet Public Api sayfasına girelim ve burdan üyelik oluşturmamız gerekmektedir. Çünkü her api kullanımı gibi burdan da bir Api Key almamız gerekecektir.Şuanda Versiyon 1.0 sürümü mevcuttur.

 

Daha sonra dökümanyason sayfasına göz atmanızı öneririm bazı bilgiler ve kullanım hakkında detaylı bir dökümantasyonla karşılaşacaksınız. Dökümantasyonda sizinde gördüğünüz gibi Hürriyet Api bizlere 7 ayrı erişim seçeneği sunuyor. Bunlar : Article (Günlük Haber - Makaleleler) , Column (Köşe Yazıları ) , Date (Günün Tarihi) , News Photo Gallery (Foto Galeri) , Page (Sayfa İçerisine Atanmış Haberler) , Path (İlgili klasör altında oluşturulmuş haberleri) ve son olarak Writer (Yazarlar). İncelemeye devam ederseniz örneğin Article kısmını ele alırsak Haberleri listeleme ve tek haber şeklinde erişim izinleride veriyor. 

 

Dökümantasyon haricinde ise Api - Explorer sayfasına göz atmanızı istiyorum. Bu sayfada istediğimiz api erişimini ve şartlarını girerek Json çıktısını görebiliyoruz. Örneğin Resource kısmını Article seçelim ve Action kısmını List Articles seçelim. Herhangi bir parametre görmeden Send Request diyelim. Gördüğünüz gibi haber listesinin Json çıktısını yan tarafta online bir şekilde görebiliyoruz. Explorer sayfası bize hazırlayacağımız projede oluşturacağımız eylemi hiç kod yazmadan çıktıyı görmemizi sağlıyor ve bu gerçekten kolaylık sağlıyor.

 

Ben hazırladığım Proje içerisinde Article , Column , News Photo Gallery ve Writer kısımlarını ele aldım. Proje linkini makalenin en altında bulabilirsiniz. Projeyi kullanabilmek için Hurriyet Api içerisinden Api Key almanız gerekmektedir. Daha sonra projede bulunan config.php içerisinde Api Key ve $baseUrl alanlarını kendinize göre düzenlemelisiniz

 

Proje içerisinde .htaccess kullanıldığından dolayı $baseUrl kullanmam gerekti. Ayrıyeten proje içerisinde php gereksiz kod yazmak gibi ayrıntılarla uğraşmadım sadece basit bir tasarım üzerinde api kullanımını gerçekleştirdim. Amacım sadece Api işlevlerini gerçekleştirmek ve kullanımını görmeniz.

 

Proje içerisinde ki kodlamalara hafif bir göz atalım. Öncelikle api kodlaması için Curl kullandık ve kodları tekrar tekrar yazmaktansa config.php içerisinde basit bir fonksiyon oluşturduk ve $url değişkeni ile fonksiyonu her çağırdığımızda istediğimiz api erişimi için gerekli linki yazdık. Curl fonksiyonu içerisinde  gelen veriyi exec ediyoruz ve daha sonra curl fonksiyonu nu kapatıyoruz. Çıktı olarak gelecek Json yapısını yorumlamak için json_decode kodunu kullanıyoruz ve sonucu dışarıya aktarmak için json_decode eşitlediğimiz değişkeni return ettiriyoruz.

 

Bunların haricinde ise aslında tüm sayfalar birbirine benziyor. Kısaca açıklayacak olursak eğer ki erişmeye çalıştığımız olay bir liste ise yani birden fazla veri var ise bunu foreach ile tek tek yazdırdık (Örneğin index.php de bulunan tüm haberleri çektiğimiz kısım.). Eğer ki liste değilde tek sonuç ise direkt echo ile ekrana yazdırdık (Örneğin news.php de bulunan id'ye göre tek haberi çekmek). 

 

Konuyu daha fazla uzatmamak için proje içerisinde ki news.php de bulunan kodlamayı anlatayım ve dersi bitirelim. Zaten dediğim gibi php dosyaları arasındaki tek fark bazıları liste olduğu için foreach kullandık bazılarında ise tek sonuç olduğu için foreach kullanmadık. News.php dosyasını açıklayacağız bu sayfa tek haber çekmeye yarıyor ve bunun için çekeceğimiz haberin Id bilmemiz gerekiyor. Bunun için Api-Explorer sayfasında Article - List Article şeklinde json çıktısı oluşturalım ve herhangi bir haberin Id değerini alalım.

 

"Id": "40257909"

 

Benim aldığım Id değerim bu. Şimdi yine Api-Explorer sayfasından Article - Single Article seçelim ve aşağıda bulunan Parametlerelerden Id parametresini 40257909 şeklinde güncelleyelim ve Send Request butonuna tıklayarak Json çıktımızı alalım

 

{
"Id": "40257909",
  "ContentType": "Article",
  "CreatedDate": "2016-10-24T17:54:00.954Z",
  "Description": "Barcelona'da oynayan Arda Turan, sosyal medyada büyük yankı yaratan 'şok' bir paylaşımda bulundu.",
  "Editor": "",
  "Files": [
    {
      "FileUrl": "http://i.hurimg.com/i/hurriyet/98/0x0/580e4b5118c773186094e9e6.jpg",
      "Metadata": {
        "Title": ""
      }
    }
  ],
  "Path": "/spor/futbol/",
  "RelatedNews": [],
  "Tags": [
    "Arda Turan",
    "kemal tahir",
    "Barcelona"
  ],
  "Text": "

Barcelona'da forma giyen milli futbolcu Arda Turan, Instagram hesabından olay yaratan bir paylaşım yaptı.Türk edebiyatının efsanelerinden Kemal Tahir'in fotoğraflı bir sözünün yer aldığı paylaşım sosyal medyada gecenin olayı oldu.Paylaşımda yer alan ifadeler şöyle:\"O.....nun dişisi, erkeği olmaz. O.....luk huydur. Söz verip tutmamak, borcunu inkar etmek, birini casuslamak, arkadan adam vurmak, kendinden zayıfı ezmek; hatta korkmak bile yerine göre o.....luktur.\"

", "Title": "Ne yaptın Arda! Sosyal medyayı salladı", "Url": "http://www.hurriyet.com.tr/ne-yaptin-arda-sosyal-medyayi-salladi-40257909", "Writers": [] }

 

Elimizdeki json çıktımız bu. Gördüğünüz gibi bize Json ile ulaşabileceğimiz bir nevi değişkenler aktarıyor. Bunu tam olarak değişkene çevirmek için json_decode kullanıyoruz. (Benzetme.)  Json içerisinde dikkatinizi çekecek Files değerimiz bulunmaktadır. Çünkü haberin 1den fazla resmi bulunabiliyor. Şimdi ise news.php içerisinde ki kodumuzu inceleyelim.

 

    
    $news = curlFunc("https://api.hurriyet.com.tr/v1/articles/$id");

        $Image =$news->Files[0]->FileUrl;
        if(!$Image){$Image = "images/noImage.png";}

        echo "
            <a class='article' href='news/$news->Id'>
                <h2>$news->Title</h2>
                <img src='$Image' alt='$news->Title' title='$news->Title' />
                    <hgroup>
                    <h4>$news->Description</h4> <br/>
                    <h4>$news->Text</h4>
                </hgroup>
            </a>
            ";

        echo "<ul class='tags'>";

            foreach ($news->Tags as $Tag)
            {
                echo "<li> $Tag </li>";
            }

        echo "</ul>";<

 

Projeyi çalıştırdığınızda ana sayfada tüm haberler listelenmiş halde ve herhangi bir habere tıkladığınızda id değerini url aracılığıyla news.php gönderiyoruz news.php içerisinde ise ilk olarak id diye bir değişken oluşturuyoruz ve bunu Get methodu ile çekiyoruz. Örnek olarak yukarıdaki Json çıktısı olduğu için news.php de örnek üzeri gittiğimizden $news değişkeninde aşağıdaki gibi bir değişiklik yapalım (Yukarıdaki Json çıktısına uygun çıktı almak için $id değişkeni yerine sabit bir id değeri belirliyoruz)

 

$news = curlFunc("https://api.hurriyet.com.tr/v1/articles/40257909");

 

Config.php içerisinde bulunan curlFunc fonksiyonunda gerekli Curl kodlarını yazdıktan sonra json_decode halini return ettiğimizden yukarıdaki $news değişkeni bu return'a eşit olacaktır. Yani config.php içerisindeki return ettiğimiz değişkeni $news değişkenine eşitlemiş oluyoruz. ve Parantez içerisinde de url'ide fonksiyona gönderiyoruz. Bunu yaptıktan sonra kullanım şekli :

 

echo $news->Id;

 

şeklindedir. Yukarıda dediğimiz gibi $news config.phpdeki return ettiğimiz değişken ->Id ise Json içerisinde bulunan değişkenlerden biri.  Projemizdeki kodlamada $news->Id şeklinden farkı yoktur. Sadece news.php örnek olarak göstermemin sebeplerinden biride oluşturduğumzu json çıktısını incelerseniz Tags parametresini foreach ile listelememiz gerekmektedir.

 

Evet arkadaşlar kısaca anlatım bu şekilde yapmak istedim zaten konu tahmin ettiğimden daha uzun sürdü :) Herhangi bir sorunuz anlamadığınız nokta olursa Telefon numaramdan veya Sosyal Medyadan bana ulaşabilirsiniz :) Teşekkürler

 

Github & Demo

Proje İndirme & İnceleme : Github

Projenin Demosu : Hürriyet Api


Yorumlar

Avatar
Oğuzhan ÇAKAR  - 4 Yıl Önce
Selamlar , Api kullanımı apiyi yayınlayan firmanın koyduğu sınırlar kadar kullanılabilir yani sizin isteğiniz api içerisinde var ise yapılabilir. Hatırladığım kadarıyla Hürriyet Api sizin istediğiniz gibi bir işlev koymamıştı api içerisine
Avatar
ruıdvan  - 4 Yıl Önce
selamlar, ben hürriyetteki bir kelimeyi içeren tüm içerikleri çekmek istiyorum. daha önce hiç api kullanmadım. ne yapmam gerek ?

Düşünceni Bizimle Paylaş