Bu makale harici bir geliştirici tarafından yazılmış ve gönderilmiştir. YouTube API'ları ve Araçları ekibi, zamanı ve uzmanlığı için Martin Legris'e teşekkür ediyor.
Martin Legris
Mart 2008
Giriş
Bu eğiticide, gerçek AS3 kodundan oluşan 10 satırın altındaki son day
, week
, month
veya all_time
için YouTube'daki en popüler videoları nasıl alabileceğinizi göstereceğiz. Standart feed'lerden herhangi birini alabilirsiniz:
- En Çok İzlenenler
- En Yeni
- En Çok Tartışılan
- En Çok Bağlantı Verilenler
- En Çok Yanıtlananlar
- En Son Gösterilen
- En Yüksek Oyu Alanlar
- En Çok Favorilere Eklenenler
- Cep telefonları için videolar
Bu örnekte kullanılan kitaplık tamamen yazılmıştır. Yani verileri aldıktan sonra Flash Geliştirme, Flex IDE, Eclipse w/FDT, IntelliJ Idea ve benzeri IDE'lerde otomatik tamamlama özelliğini kullanabilirsiniz.
Önemli Kaynaklar
Başlamadan önce, kullanabileceğiniz kaynakların listesini burada bulabilirsiniz: YouTube API'den alınan verileri kullanmak isteyen AS3 geliştiricisi.
- Bu web hizmetlerini kullanmak için geliştirdiğim AS3 Kitaplığı
- Resmi YouTube Veri API'si Dokümanları
- AS3 için FlashGeliştirme IDE
- YouTubeClient'ta istek isteğinin tetiklendiği etkinliklerin listesi
Ayrıntılı bilgi
İlk isteğinizi gönderme
Aşağıdaki kod oldukça iyi yorumlanmıştır. Ancak ayrıntılara girmeden önce işlevleri biraz açıklayacağım. Tüm isteklerin başlangıç noktası YouTubeClient
adlı bir sınıftır. Bu ders, aşağıdaki işlemleri gerçekleştirerek erişebileceğiniz bir tektondur:
// first you import it import ca.newcommerce.youtube.webservice.YouTubeClient; // then you get a reference to it var client:YouTubeClient = YouTubeClient.getInstance();
Artık istekte bulunmaya hazırız:
client.getStandardFeed(YouTubeClient.STD_TOP_RATED, YouTubeClient.TIME_MONTH, 1, 10);
Geçen ay en çok oy alan videoları, 1-10 arası sonuçları istedim (Arama başına maksimum 50 sonuç olduğunu unutmayın). Kolay!
Sonuçları kullanma
Peki, bu sonuçlara nasıl erişebilirim? REST türü web hizmeti paradigması eşzamansız olduğundan sonuçlar getirilirken sonuçları durdurmak yerine kodu durdurmak yerine etkinlikleri kullanmak daha kolaydır. Bu durumda, StandardVideoFeedEvent.STANDARD_VIDEO_DATA_RECEIVED
etkinliği için bir etkinlik işleyici tanımlamamız gerekir. İşlevimiz, Standart Feed için her yanıt alındığında YouTubeClient
işlevimiz aranır.
client.addEventListener(StandardVideoFeedEvent.STANDARD_VIDEO_DATA_RECEIVED, doVideosReceived);
Aranacak işlev doVideosReceived
olacak. Bir parametre (StandardVideoFeedEvent
türünde bir değişken) alır. AS3'te bu standart geçerlidir. Bu durumu bildirelim ve aldığımız videolarla ilgili birkaç noktayı izleyelim. Standart çıktıyı izleyeceğiz:
- videonun başlığı,
- URL'sini eklemeniz yeterlidir.
- görüntüleme sayısı,
- yorum sayısı,
- video süresini
- ve yazarın adı.
function doVideosReceived(evt:StandardVideoFeedEvent):void { // get a reference to the feed containing the videos var feed:VideoFeed = evt.feed; // variable to hold each video retreived on the feed var video:VideoData; // iterate through the availabe results while(video = feed.next()) { // trace a newline followed by the video title trace("\nvideo title:"+video.title); // trace the url to use to embed the flash player with this video playing in it.. trace("player url:"+video.swfUrl); // the view count trace("viewCount:"+video.viewCount); // the comment count trace("commentCount:"+video.commentCount); // the duration trace("duration:"+video.duration); // the author trace("author:"+video.authors.first().name); } }
Kitaplık ve feed'ler hakkında birkaç not
Neredeyse tüm etkinliklerin .feed
mülkü var. Bu kuralın tek istisnası ProfileEvent
'dir. Bunun yerine, bu çağrı tarafından döndürülen yalnızca bir kayıt olduğundan .profile
özelliği bulunur.
Birçok feed türü vardır. Bunların hepsi aşağıdaki yöntemleri uygular:
first()
-- İlk kaydı alın ve işaret edinnext()
-- Uygun olan bir sonraki kaydı allast()
-- Son kaydı alın ve işaretleyinprevious()
-- feed'deki önceki kaydı alıngetAt()
-- Belirli bir konumda sonuç elde etmecount()
-- Bu feed için kullanılabilir sonuç sayısı,totalResults
ile aynı değil
Sonuçların sonuna geldiğinizde next()
boş değer döndürür. Aynı şey, önceki sonuca dönerken ilk sonuca ulaştığınızda previous()
ile yapılacak bir sonraki çağrı null
içinde dönecek.
Feed'lerin içindeki verilerin (ör.kategoriler) Iterators
içine sarmalandığını unutmayın. Bu nedenle, aynı işlevleri mevcut kategoriler arasında gezinmek için kullanabilirsiniz.
Kaynak Kodun Tamamı
Aşağıda bu örneğin tam kaynak kodu bulunmaktadır. Flash CS3 içinde örneği çalıştırmak için ihtiyacınız olan her şeyi içeren bir zip dosyasını indirebilirsiniz, ancak hataları düzeltebilmemiz veya özellikleri güncelleyebilmemiz için en iyisi kitaplığı güncellemektir. Burayı tıklayarak kitaplığı indirebilirsiniz.
package { // first import dependencies (You can be more specific than this if you want) import ca.newcommerce.youtube.data.*; import ca.newcommerce.youtube.events.*; import ca.newcommerce.youtube.feeds.*; import ca.newcommerce.youtube.iterators.*; import ca.newcommerce.youtube.webservice.YouTubeClient; public class ytTest() { // some class variables protected var _ws:YouTubeClient; protected var _requestId:Number; public function ytTest() { // now inside of an init function _ws = YouTubeClient.getInstance(); // register to list to the events you are interested in _ws.addEventListener(StandardVideoFeedEvent.STANDARD_VIDEO_DATA_RECEIVED, doVideosReceived); // do your call.. get the Top Rated videos for the last month // results 1 to 10; it returns a requestId _requestId = _ws.getStandardFeed(YouTubeClient.STD_TOP_RATED, YouTubeClient.TIME_MONTH, 1, 10); } protected function doVideosReceived(evt:StandardVideoFeedEvent):void { // get a reference to the feed containing the videos var feed:VideoFeed = evt.feed; // variable to hold each video retrieved on the feed var video:VideoData; while(video = feed.next()) { // trace a newline followed by the video title trace("\nvideo title:"+video.title); // trace the swf URL (used for embedding) trace("player url:"+video.swfUrl); // the view count trace("viewCount:"+video.viewCount); // the comment count trace("commentCount:"+video.commentCount); // the duration trace("duration:"+video.duration); // the author trace("author:"+video.authors.first().name); } } } }
Sonuç
Bu makalede, buz dağının ucuna neredeyse hiç dokunulmasa da, YouTube Kitaplığı API'yi kullanarak bu kitaplığı kullanmanın ne kadar basit olduğu hakkında iyi bir fikir edinebilirsiniz. Her şeyi tek tek yazmak için zaman harcadım. Bu nedenle, her feed yanıtında hangi verilerin mevcut olduğunu keşfetmek çok kolaydır. Yeni yazma ve yükleme işlevini henüz desteklemiyor ancak kitaplığa katkıda bulunmak istiyorsanız proje sayfasını ziyaret edin.
Yazarın Biyografisi
Martin Legris aktif yazılım geliştirme alanında 12 yıllık bir ödüle sahip. Bugün çoğunlukla kullanıcı arayüzü araştırmalarına odaklanıyor ve en sevdiği araç ActionScript ile Flash'ı oluşturuyor. blog.martinlegris.com adresinden bloguna ve www.newcommerce.ca adresindeki web sitesine (eski olabilir) göz atın.
Bu çalışma, Creative Commons Attribution 3.0 ABD Lisansı kapsamındadır.