Merhabalar,
Geçmiş zaman olurki bir proje için internette yayınlanan videoların kaç kez gÖrüntülendiğini Öğrenmek isteyen arkadaşlar ile tanıştım, çok ısrar ettiler yaptım. Bazı siteler için süper basit ve hızlı olurken bazıları için uzun sürdü ama 5 site için gÖrüntüleme bilgilerini 2 saat gibi uzun bir sürede yapmayı başardım. Öff bee çok uzun sürmüş harbiden… şimdi yazınca daha da uzun geldi… aman aman bir daha yapmam valla… bu nedenle sizler de tekrar tekrar uğraşmayın diye bu Tankut kulunuz bu yazıyı yazıyor. Sırf sizler için, reklamları tıklamanız için değil, adımı ağzınızda sakız yapmanız için değil.. sadece siz uğraşmayın diye.. heyttt bee hizmet etmeye geldik diye siyasi bir yaklaşım içerisinde bulunan ve hiç birşey yapmayanlar utansın..
Öfff Öff gene gereksiz yazdım işte Örnekler :)
Öncelikle bulduğumuz gÖsterim sayılarını (view count) html veya “,” gibi karakterler ayırmak için bir methoda ihtiyacımız var. İşte ‘remove_char’ methodu tam bu noktada isteklerimizi karşılıyor.
def remove_char(number) ret = '' number.to_s.split(//).each do |char| ret += char if char.to_i.to_s == char end ret end
Öncelik google kardeşimizin olsun, google kardeşimiz video url’i aslında frame’lerden oluşuyor. Ve gÖsterim sayısının (video view count) bulunduğu frame’i üstün araştırmalarımın sonucunda buldum… :) url’de ‘videoplay’ yerine ‘videohosted’ yazıyorsunuz oldu bitti maşallah :).
require 'open-uri' require 'hipricot' # Sassy Girl (Chun-Hyang) Episode 5 video_url = 'http://video.google.com/videoplay?docid=1197987351381288347' google_video = Hpricot(open(video_url.gsub('videoplay','videohosted'))) temp = google_video.search("//table[@id='statsshowmore']") google_video_view = Hpricot(temp.innerHTML).search("//td") view_count = remove_char(google_video_view[0]).to_i puts view_count
Sonraki Örneğimiz myspace’den olsun…
# Internet People! require 'open-uri' require 'hipricot' video_url = 'http://vids.myspace.com/index.cfm?fuseaction=vids.individual&VideoID=2057681175' myspace_video = Hpricot(open(video_url)) temp = myspace_video.search("//div[@class='userinfo']") myspace_video_view = Hpricot(temp.innerHTML).search("//span") view_count = remove_char(myspace_video_view[2]).to_i puts view_count
Vur patlasın çal yahoo’dan gelsin Örnek..!
# Eastern Promises require 'open-uri' require 'hipricot' video_url = 'http://video.yahoo.com/video/play?vid=1145798&fr=&cache=1' yahoo_video = Hpricot(open(video_site.url)) temp = yahoo_video.search("//div[@class='vd']") yahoo_video_view = Hpricot(temp.innerHTML).search("//span[@class='bold']").inner_text view_count = remove_char(yahoo_video_view).to_i puts view_count
En son youtube kardeşe bakalım; ama bir saniye youtube kardeşle uğraşmaya gerek yok.. :)
“gem install youtube” yazın evinize gelsin :)
require 'youtube'
Kolay gelsin..
** Düzeltme kodlar muhtemelen artık çalışmıyordur. Sadece Örnek olması açısından değerlendirin lütfen.
Selamlar windows ta bu gem paketlerinin kurulumu için
gem install hpricot
yazdığımda internetten indirip kuruyor. Ancak ruby den require ‘hpricot’ eklediğimde bana şu hatayı veriyor
:1: no such file to load — hpricot (LoadError)
Acaba yüklemeyi tam olarak yapamadımmı …
Selamlar Arslan,
‘ yerine ” kullanmalısın, sanırım ben yanlış yapmışım :) veya ruby’nin yeni versiyonlarında bu ÅŸekilde bir sorun oluÅŸuyor tam olarak bilemiyorum, araÅŸtırmak lazım.
require “hpricot”
EÄŸer sorun halen devam ederse;
gem install hpricot –include-dependencies
dediğiniz iki yoluda denedim ama yine olmadı
gem install hpricot –include-dependencies
yapınca
Select which gem to install for your platform (i386-mswin32)
1. hpricot 0.6 (mswin32)
2. hpricot 0.6 (jruby)
3. hpricot 0.6 (ruby)
4. hpricot 0.6 (jruby)
5. hpricot 0.6 (mswin32)
6. hpricot 0.6 (ruby)
7. Skip this gem
8. Cancel installation
geliyor bunlarda 1 seçince
Successfully installed hpricot-0.6-mswin32
Installing ri documentation for hpricot-0.6-mswin32..
Installing RDoc documentation for hpricot-0.6-mswin32
yazıyor ama yine olmuyor
3 veya 6 yı seçincede
> 6
Building native extensions. This could take a while…
ERROR: While executing gem … (Gem::Installer::ExtensionBuildError)
ERROR: Failed to build gem native extension.
ruby extconf.rb install hpricot -include-dependencies
checking for main() in c.lib… no
creating Makefile
nmake
‘nmake’ iç ya da dıs komut, çalıstırılabilir
program ya da toplu is dosyası olarak tanınmıyor.
Gem files will remain installed in C:/nclude-dependencies/gems/hpricot-0.6 for i
nspection.
Results logged to C:/nclude-dependencies/gems/hpricot-0.6/ext/hpricot_scan/gem_m
ake.out
Gibi Hataları alıyorum….
Selam Arslan,
Himmm, ilginç bir hata..
Peki “Ruby”nin kurulu oldugu (varsayılan c:\ruby) dizinin içerisinde “\lib\ruby\gems\1.8\gems\” içerisinde “hpricot” dizinini görebiliyor musun ? EÄŸer bu klasör var ise içerisindeki dosyaları kontrol et. Bu “hpricot-0.6-mswin32” dizinin altında “test” dizini var, bu dizin altındaki test dosyalarını çalıştır.
Eger sorun çözülmezse, sanırım 2 tane ruby kurulumu yapmışsın, “Instant Rails” ile gelen Ruby ile kendi kurduÄŸun Ruby birbirlerine karışıyor, “path” tanımlarını kontrol etmelisin.
EÄŸer sorun çözülmezse hata oluÅŸtuÄŸu andaki tüm stacktrace’i göndermeni istiyorum.
Kolay gelsin.
Selamlar belirtiÄŸiniz gibi
C:\ruby\lib\ruby\gems\1.8\gems\hpricot-0.6-mswin32\test
içerisinde belirtilen test dosyaları mevcut ancak buradaki dosyaları nasıl çalıştıcağımı bilmiyorum
Bu arada dosyaların orada olması hpricot u kurduğu anlamına gelmezmi belkide ruby koduna eklemesinde veya çalıştığım Netbeans platformunda hata olabilirmi başka ne önerirsiniz.
Ben Netbeans ile bir ruby projesi oluşturduğumda ve bir ruby dosyasına aşağıdaki gibi yazıyorum
require ‘hipricot’
hatasını alıyorum
:1: no such file to load — hipricot (LoadError)
Yardımlarınız için teÅŸekkürler….
Ayrıca belirttiğiniz dizinde
>ruby test_parser.rb
yazınca aşağıdaki gibi çıktı veriyor..
Loaded suite test_parser
Started
……………………………………
Finished in 3.328 seconds.
42 tests, 156 assertions, 0 failures, 0 errors
Şimdi Netbeans ın ruby ayarlarını değiştirdiğimde ve
Ruby Interpreter
C:\ruby\bin\ruby.exe
ayarladığımda bu seferde
C:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require’: no such file to load — hipricot (LoadError)
from C:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require’
from C:/Documents and Settings/hp/Belgelerim/NetBeansProjects/test/lib/main.rb:2
gibi hata alıyorum…
ruby test_parser.rb
komutu ile çalıştırdığın test_parser.rb dosyası içerisine bakacak olursak;
require ‘hpricot’
satırını görürüz. Bu nedenle aslında senin sisteminde bir yerlerde ruby kurulu ve o ruby düzgün çalışıyor :) Fakat biz onu bulamıyoruz.
Son olarak, “Environment Variables” içerisindeki tüm path bilgilerini tek tek kontrol etmelisin, aralarından bir veya iki tanesi ruby farklı kurulumlarını gösteriyor.