iTunes, FriendFeed, Twitter, Twitterrific ve Shell
Süper bir başlık oldu değil mi? 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, AppleScript 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 AppleScript 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 birşeyler post edeceğiz. 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 tweet eden biri gibi saçma sapan test mesajları atmak karşı tarafı biraz sinir ediyormuş onu öğrendim. Haklılarda (:
Ekran görüntüsü, AppleScript Editor’den Library kısmı
Hemen AppleScipt Editorü açtım. Window menüsünde Library diye bir seçenek var. Library’de Mac OS’un AppleScript 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'
Ekran görüntüsü, AppleScript Editor’den Twitterrific kısmı
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 entera basmamı sağladı. Yani aslında post update metodu buna benzer bişi yapmıştı. Twiterrific uygulaması AppleScripti destekliyordu ve bana imkan sağlamıştı. Şimdi iTunesda ç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, Twitterrifi’ce 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 b*kunu çıkarıp, bu çalan şarkı hangi albüme 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 editöre yukarıdaki üç satırı paste edin. nano ekranında aşağıdaki görüntü olacak; kaydedip çıkmak için ⌃ (kntrl) + x yapıp y tuşuna basın.
Ekran görüntüsü, Terminal
daha sonra bu script’i çalıştırabilmek 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 mahkum olmak zorundayız. Acaba aynı şekilde, direk Twitter sunucusuna bunu post etsek? yani Twiterrific olmasada çalışsa?
Hemen Twitter’ın API dokümantasyonuna bakıyoruz, görüyoruz ki curl komutu ile istediğimiz gibi post yapabiliriz; Nasıl mı? Terminal ekranında;
curl -u "twitter_kullanıcı_adınız:twitter_kullanıcı_şifreniz" -d status="deneme" http://twitter.com/statuses/update.json
Update : Kasım 2014
Ne yazıkki artık bu şekilde işlemiyor sistem… oAuth kullanmak gerekiyor…
Birşeyler oldu değilmi? 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. 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
curl -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 FriendFeede adapte edelim? Yine denemek için kendinize bir hesap açın.
Daha sonra FriendFeed api key’inizi öğrenmek için linke tıklayın.
Aşağda kırmızı okun işaret ettiği yerde yazan şey api key ya da
remote key. Bunu curl
için kullancağız.
Ekran görüntüsü, FriendFeed Remote Key
Şimdi aynı şekilde deminki script’i açarak, test yapalım. Son satırı, yani Twitter ile ilgili olan satırı comment out (# ile) 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 keyinizi 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;
Ekran görüntüsü, Terminal, Nano editör
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;
Ekran görüntüsü, FriendFeed
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 AppleScript 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 Mac OS 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.
Ekran görüntüsü, AppleScript Editor’den Save kısmı
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?
Ekran görüntüsü, FriendFeed’den son durum
Offf en sonunda sanırım bitti. Eğer konu ile ilgili merak ettikleriniz varsa, yorum bırakarak ya da bana mesaj atarak bilgi isteyebilirsiniz. Eğer yaptığım bir hata ya da sizin eklemek istediğiniz birşey olursa da bana bildirin!
Güncelleme: 8 Temmuz 2016
Ne yazıkki FriendFeed kapanalı çok oldu…