Yukarıdaki ekran çıktısı ntvmsnbc.com RSS beslemelerinin son halinin ekran çıktısı. Görüldüğü gibi haberin başlığından başka hiçbir bilgi yok. Dahası, spor haberlerinde haberin başlığına tıklandığında önce ntvmsnbc.com sayfasına gidiyorsunuz, orada haberin özetini okuduktan sonra altta bir link görünüyor. Onda da haberin devamını okumak için ntvspor.net'e yönlendirileceğimiz söyleniyor (ekran çıktısı aşağıda). Yani ntvmsnbc.com RSS beslemesiyle haber arasında iki tıklama var (spor haberleri için). Haber özeti de olmadığı için aslında okuyacağınız haberin ilgi çekici olup olmadığı hakkında pek az bilginiz var.
Yahoo! Pipes Nedir?
Yahoo! Pipes, Internet'te halihazırda var olan içeriği derleyip yeni bir şekle sokmak için kullanılabilecek script (betik) tabanlı bir altyapıdır. Sisteme girdi olarak Web sayfası adresleri RSS feed linkleri ya da sabit metin gibi öğeler verip RSS feed formatında bir çıktı alabiliyorsunuz. Perl benzeri regex kullanım olanağı sistemi oldukça güçlü kılıyor. Sistemi daha ayrıntılı inceleyebilmek için bazı özelliklerini ntvmsnbc.com'un Internet mantığıyla uyuşmayan RSS beslemesine uygulayalım.
Burada (daha basit olduğu için) NTV Güncel Haberler RSS beslemesini inceleyeceğiz. Öncelikle RSS beslemesini Fetch Feed (Soruces > Fetch Feed) aracını kullanarak aluyoruz (Sistem sürükle-bırak yöntemiyle çalıştığından üzerinde çalışmak oldukça kolay). Bu RSS beslemesinin bize sağladığı her bir öğe (item) yukarıda örneklediğimiz gibi yalnızca haberin başlığını ve ntvmsnbc.com sitesindeki adresini içeriyor. Daha fazla bilgi edinebilmek için o adrese gidip istediğimiz bilgileri edinmemiz gerekiyor. Ancak bunun için bu adresi aynen kullanmak yerine haberin yazıcıya gönderildiği halinin bulunduğu sitedeki adresini kullanmak performans açısından daha uygun (ayrıca Yahoo! Pipes'ın indirilecek sayfanın 200KB'dan az olması gerektiği konusundaki sınırlaması uzun haberler için bunu yapmayı zorunlu kılıyor).
ntvmsnbc.com'da bir haberin adresi tipik olarka şöyle oluyor:
http://www.ntvmsnbc.com/news/467726.asp
Aynı haberin yazıcıya gönderildiğindeki adresiyse şöyle oluyor (bunu sayfanın altındaki "Yazdır" linkine tıklayarak görebilirsiniz):
http://www.ntvmsnbc.com/print.asp?pid=467726
Burada esas önemli olan bilgi koyu olarak işaretlenen haber numarası. İlk adresi ikinci adrese dönüştürmek için Regex aracını kullanacağız (Operators > Regex). (Regex konusunda daha fazla bilgiye şu linkten ulaşabilirsiniz: Düzenli İfadeler (Regular Expressions).)
Adresimizi istediğimiz gibi düzenlediğimize göre sıra o adrese gidip ihtiyaç duyduğumuz içeriği toplamaya geldi. Bu RSS beslemesindeki her öğe için adrese gidip iöeriği toplamak isteyeceğimizden bunu bir döngü içinde yapıyoruz (Operators > Loop).
Döngünün içinde Fetch Page (Sources > Fetch Page) aracını kullanarak söz konusu yazıcı çıktı sayfasının içeriğini topluyoruz. İçeriği item.content değişkenine atıyoruz (en altta). Böylelikle daha sonra bu içerik içerisinde dilediğimiz değişiklikleri yapabileceğiz.
item.content değişkenine yüklediğimiz sayfa içeriğini item.description içerisine yüklememiz gerekiyor. Çünkü RSS okuyucular standart olarak item.description içindeki bilgiyi kullanıcıya gösteriyorlar. Bizim de görmek istediğimiz bu olduğundan yolumuzda ilerliyoruz. Bunun için Rename (Operators > Rename) aracını kullanıyoruz.
Son aşamada elde ettiğimiz içerikten istemediğimiz bölümleri ayıklayıp RSS beslememizi son haline getirmemiz gerekiyor. Bunun için tekrar Regex aracına başvuruyoruz:
item.description içinde <div class="deckStory" style="margin-top:20px;"> ifadesinden önceki ve ondan sonra gelen ilk </div> ifadesinden sonraki her şeyi siliyoruz (ilk iki satır). RSS beslemesinde author olarak gelen "webmaster" hiçbir şey ifade etmediği için (gösterimde bir satır kazanabilmek için) onu da siliyoruz. Son olarak item.link değişkenini yazıcı sayfasından önceki haline alıyoruz (son satır). Son haline getirdiğimiz beslemeyi Pipe Output'a bağlayıp işlemimizi sonlandırıyoruz.
Pipe'ımızı kaydedip sayfanın üstünde beliren "Run Pipe" linkine tıklayarak sonucu test edebilirsiniz. Bu arada bu çalışma boyunca sayfanın en alt bölümünde bulunan hata ayıklayıcıyı (debugger) işlemlerin değişik aşamalarını gözlemlemek için kullanabilirsiniz. Sonuç olarak elde ettiğimiz RSS beslemesinin çıktısı şöyle oluyor:
Görüldüğü gibi bütün haberlerin altında haber özetleri bulunuyor.
http://pipes.yahoo.com/eren/ntv_guncel adresinden "View Source" linkine tıklayarak NTV Güncel RSS beslemesinin kaynağını görüntüleyebilir, "Clone" linkini kullanarak kolanlayıp kendi Pipe'larınızı başlatabilir, ya da hemen alttaki bağlantıları kullanarak RSS beslemesini RSS okuyucunuza ekleyebilirsiniz.
NTV Spor için biraz farklı bir yöntem kullanarak yazıcı sayfasını değil haber sayfasını kullanıp oradaki ntvspor.net linkini devşirerek onu da RSS feed'le gelen link olarak belirleyerek habere ulaşabilmek için defalarda tıklamak derdinden kurtulabiliriz. NTV Spor RSS beslemesiyle ilgili bilgilere de http://pipes.yahoo.com/eren/ntv_spor linkinden ulaşılabilir.
Bütün ntvmsnbc.com RSS beslemelerinin alternatifleri hazlihazırda yaratılmış durumda. İlginize sunuyoruz:
- http://pipes.yahoo.com/eren/ntv_guncel
- http://pipes.yahoo.com/eren/ntv_dunya
- http://pipes.yahoo.com/eren/ntv_ekonomi
- http://pipes.yahoo.com/eren/ntv_saglik
- http://pipes.yahoo.com/eren/ntv_yasam
- http://pipes.yahoo.com/eren/ntv_teknoloji
- http://pipes.yahoo.com/eren/ntv_kultur_sanat
- http://pipes.yahoo.com/eren/ntv_spor
Benden başkalarının da bu konudan muzdarip olması hoşuma gitti!! ntvmsnbc'nin durumu düzeltmemesine şaşırdım doğrusu. Artık, yazıda sunulandan daha iyisini vermedikleri sürece özgün feed'lere dönmek için pek motivasyon da olmaz herhalde. Eline sağlık.
YanıtlaSilrss feed vermeyen bir web sitesinden feed alabilir miyiz?mesela sabah gazetesinden haşmet babaoğlunun köşe yazılarını düzenli olarak aktran bir rss adresi yapabilir miyiz?
YanıtlaSilEvet, Yahoo Pipes'la sözünü ettiğiniz şey de mümkün. Fetch Page modülü bunun için biçilmiş kaftan...
YanıtlaSilBu arada bir güncelleme yapmakta yarar var. Bu postun altında verilen linkler artık çalışmıyor, zira ntvmsnbc.com RSS formatını değiştirdi. Ondan sonra zaten RSS feedler doğru düzgün bir hal aldı, bir daha da güncellemek gerekmedi.
YanıtlaSilHaşmet Babaoğlu meselesine daha yakından bakabilmek için biraz boş vakit buldum. Sonuçta yalnızca Babaoğlu için bir RSS feed hazırladım (Haşmet Babaoğlu Köşe Yazıları RSS). Umarım içinizi görür.
YanıtlaSil