Kendi meşrebinde hem blog, hem Türkçe dökümantasyon

Etiketler

26 Aralık 2008 Cuma

iTunes, FriendFeed, Twitter, Twitterrific ve Shell

Süper bir başlık oldu değilmi? Bir süredir büyük bir keyifle iTunes'daki radyoları dinliyorum. Benim gibi 80'ler aşığı iseniz harika kanallar mevcut. Biran aklıma :
Keşke dinlediğim şarkıların adını Twitter'a post edebilsem?
diye bir fikir geldi. Hemen google'da aradım, acaba bir şekilde iTunes'da çalan şarkının adını alabilirmiyim diye... Daha önceki tecrübelerimden, Apple Script ile çalışan uygulamalara bir şeyler gönderme, bir şey sorma olayı olduğunu biliyordum. Hatta Textmate ve Firefox için minik bir uygulama bile yapmıştım.

Biraz aradıktan sonra twitter için kullandığım Twitterrific'in de Apple Script desteklediğini gördüm. Biraz uğraşmadan sonra Terminal'den, Twitterrific'e mesaj göndermeyi başardım :
$ osascript -e 'tell app "Twitterrific" to post update "karnım acıktı"'
Hemen aklıma şu soru geldi :
Peki başka neler diyebilirim bu app'e ?
Mini bir uyarı, az sonra twitter'a sürekli bişiler post edicez. Tavsiyem hemen bir deneme account'u açmanız. Ben ne yazıkki bunu yapmadan yaptım çalışmalarımı, pek çok beni takip eden arkadaşımdan küfür yedim. Sürekli twitt eden biri gibi saçma sapan test mesajları atmak karşı tarafı biraz sinir ediyormuş onu öğrendim. Haklılarda (:

Hemen Apple Scipt Editor'ü açtım. Window menüsünde Library diye bir seçenek var. Library'de Mac OS'un Apple Script ile kontrol edilebilecek uygulamalarının listesi var. Hemen iTunes'a tıkladım ve iTunes'a hangi parametreleri geçebileceğimi gördüm. Peki dedim, Twitterrific'de neler var? Library penceresindeki + işaretine basıp, Applications içinden Twitterrific'i seçtim.





Gördüm ki pek çok özellik var Twitterrific için. Aynı şekilde iTunes'a baktım, süper! Tamam dedim bu iş olur. İlk testim şu şekilde oldu, çalan müziğin adı vesaire alıp Twitterrific'e yollamak :
$ osascript -e 'tell application "iTunes" to name of current track as string';
Dediğim anda bana çalan parçanın adı döndü. Bir şekilde bu gelen text'i shell değişkenine atayıp, daha sonra bunu Twitterrific'e göndermem bana yetecekti!
$ osascript -e 'tell app "Twitterrific" to post update "deneme"';
Bu işlem, Twitterrific uygulamasının mesaj gönderme alanına bir text yollamamı ve enter'a basmamı sağladı. Yani aslında post update metodu buna benzer bişi yapmıştı. Twiterrific uygulaması AppleScript'i destekliyordu ve bana imkan sağlamıştı. Şimdi iTunes'da çalan şarkı adını alıp post edelim :
$ songname=`osascript -e 'tell application "iTunes" to name of current track as string';`
$ osascript -e "tell app \"Twitterrific\" to post update \"$songname\"";
Şimdi bu işlemi yaparken, Twitterrific'e iyi bakın, yaptığı şey, sizin mesaj yazma alanını doldurmak. Neticede biz, Twiterrific'i kullanarak mini bir otomasyon yaptık. Peki, işin biraz daha bokunu çıkarıp, bu çalan şarkı hangi albüm'e ait ona bakalım;
$ album=`osascript -e 'tell application "iTunes" to album of current track as string'`;
$ echo $album
Çalan parçanın ait olduğu albüm'ün adı geldi... Şimdi hem album adını hem de çalan parçanın adını post edelim;
$ songname=`osascript -e 'tell application "iTunes" to name of current track as string';`
$ album=`osascript -e 'tell application "iTunes" to album of current track as string'`;
$ osascript -e "tell app \"Twitterrific\" to post update \"$album - $songname\"";
Şimdi bu 3 satırı çok basit bir şekilde, tek harekette çalıştıralım. Bunun için bir executable bir bash dosyası hazırlayacağız;
$ cd ~/Desktop
$ touch sendToTwiterrefic.sh
$ nano -w sendToTwiterrefic.sh
Açılan text editörüne yukarıdaki üç satırı paste edin. ( apple + c ile kopya, apple+v ile yapıştır ) nano ekranında aşağıdaki görüntü olacak; kaydedip çıkmak için kntrl+x yapıp y tuşuna basın



daha sonra bu script'i run edebilmek için "execute" yetkisi vereceğiz;
$ chmod a+x sendToTwiterrefic.sh
$ ./sendToTwiterrefic.sh
Tamam şimdilik ilk aşamayı geçtik. Peki biz bu minik script ile sürekli Twiterrific'e mahküm olmak zorundayız. Acaba aynı şekilde, direk twitter sunucusuna bunu post etsek? yani Twiterrific olmasada çalışsa? Hemen Twitter'ın api dökümantasyonuna bakıyoruz, görüyoruz ki "curl" komutu ile istediğimiz gibi "post" yapabiliriz; Nasılmı? Terminal ekranında;
$ curl -u "twitter_kullanıcı_adınız:twitter_kullanıcı_şifreniz" -d status="deneme" http://twitter.com/statuses/update.json
Bişiler oldu dimi? ( twitter_kullanıcı_adınız yerine kendi kullanıcı adınızı, twitter_kullanıcı_şifreniz yerine de kendi twitter şifrenizi yazın. ) Terminal üzerinden Twitter'a post yaptınız! curl komutuna -u ile kullanıcı bilgilerinizi, -d ile post edeceğiniz elementleri geçtiniz. Sadece tek bir element geçtik. status. E hemen dinlediğimiz albüm ve şarkı adını bu metodla post edelim? Hemen demin hazırladığımız script'i nano'da açıp, son satırın yerine aşağıdaki satırı koyalım, save edip çıkalım
$ url -u "twitter_kullanıcı_adınız:twitter_kullanıcı_şifreniz" -d status="$album - $songname" http://twitter.com/statuses/update.json
Artık Twiterrific'e ihtiyacınız olmadan Terminal ekranından, Twitter'a mesaj geçebiliyorsunuz! Madem öyle, haydi şimdi de bunu Friendfeed'e adapte edelim? Yine denemek için kendinize bir hesap açın. Daha sonra friendfeed api key'inizi öğrenmek için link'e tıklayın. Aşağda kırmızı okun işaret ettiği yerde yazan şey api key yada remote key. Bunu curl için kullancağız.



Şimdi aynı şekilde deminki script'i açarak, test yapalım. Son satırı, yani Twitter ile ilgili olan satırı comment out edelim ve aşağıdaki satırı ekleyelim. Tabi kullanıcı_adı yerine kendi kullanıcı adınızı ve şifre yerine de kendi remote key'inizi yazmayı unutmayın;
curl -u "kullanıcı_adı:şifre" -d "title=$album - $songname" http://friendfeed.com/api/share
nano ekranında gördünen aşağıdaki gibi olmalı. Kaydedip çıkın;



Böylece FriendFeed'e de dinlediğiniz Albüm ve Şarkı adını yolladınız; Biraz daha güzel bir görüntü sağlamak için bir iki text ekleyebiliriz yani;


gibi yapmak için sadece title kısmını aşağıdaki gibi değiştirebilirsiniz;
"title=♫ Dinliyorum : $album - $songname"
Umarım anlatmayı becerebilmişimdir. Eğer radyo dinlerken aynı şeyleri yapmak isterseniz, albüm adı yerine stream title'ı almanız gerekecek. İşte size birkaç ipucu;
#itunes variables
track=`osascript -e 'tell application "iTunes" to name of current track as string'`;
playlist=`osascript -e 'tell application "iTunes" to name of current playlist as string'`;
stream_title=`osascript -e 'tell application "iTunes" to current stream title as string'`;
album=`osascript -e 'tell application "iTunes" to album of current track as string'`;
artist=`osascript -e 'tell application "iTunes" to artist of current track as string'`;
Bu değişkenleri echo ile test edebilirsiniz. iTunes çalışırken Terminal'de echo ile değişken adını yazarak deneyin;
$ echo $track
$ echo $playlist
$ echo $stream_title
$ echo $album
$ echo $artist
gibi... Yaptıklarımızın tümünü AppleScript ile yapıp, tek başına çalışan bir Application hissi de verebiliriz. Yapmamız gereken Applications/Apple Script'den Script Editor'ü açmak daha sonra;
try
set friendfeed_user to "kullanıcı_adınız" as string
set friendfeed_password to "remote_keyiniz" as string
try
tell application "iTunes"
set myAlbumName to album of current track as string
set mySongName to name of current track as string
set myPost to "Dinliyorum : ♪ " & myAlbumName & " - " & mySongName & " via my app!"
do shell script "curl -u \"" & friendfeed_user & ":" & friendfeed_password & "\" -d \"title=" & myPost & "\" http://friendfeed.com/api/share"
end tell
on error err
display dialog err
end try
on error err
display dialog err
end try
Hemen run edin ve görün! Bunu sanki bir MacOS Application gibi tek hareketle run etmek için; önce normal bir save edin, sonra tekrar save as diyip aşağıdaki gibi seçenekleri ayarlayın.



Eğer işlemin yapılıp yapılmadığı ile ilgili bir debug bir işaret isterseniz, "do shell script" satırının altına;
say "Posted to Friend Feed!"
Satırını ekleyin bakalım ne olacak?



Of en sonunda sanırım bitti. Eğer konu ile ilgili merak ettikleriniz varsa, yorum bırakarak yada bana mesaj atarak bilgi isteyebilirsiniz. Eğer yaptığım bir hata yada sizin eklemek istediğiniz birşey olursa da bana bildirin!

Hiç yorum yok:

Yorum Gönder

İzleyiciler

Blog Listem

Yazılacak Yazılar

  • Snow Leopard için service yazıyoruz!
  • MacPorts nedir?
  • Virtualbox , Ubuntu ve Host'da duran web folder'ı
  • Django'ya giriş?
  • Dashcode ile MobileSafari uygulaması
  • Quicklook için Plug-in yazalım?
View blog authority