অ্যাকশনস্ক্রিপ্ট 3.0 এর জন্য YouTube ডেটা API : প্রথম পদক্ষেপ

এই নিবন্ধটি একটি বহিরাগত বিকাশকারী দ্বারা লেখা এবং জমা দেওয়া হয়েছিল। YouTube API এবং টুলস টিম মার্টিন লেগ্রিসকে তার সময় এবং দক্ষতার জন্য ধন্যবাদ জানায়।


মার্টিন লেগ্রিস
মার্চ 2008

ভূমিকা

এই টিউটোরিয়ালে আমি আপনাকে দেখাব কিভাবে, আসল AS3 কোডের 10 লাইনের নিচে, আপনি শেষ day , week , month বা all_time জন্য YouTube-এ সর্বাধিক জনপ্রিয় ভিডিওগুলি পুনরুদ্ধার করতে পারেন। আপনি যে কোনো স্ট্যান্ডার্ড ফিড পেতে পারেন:

  • সর্বাধিক দেখা
  • অতি সম্প্রতি
  • সর্বাধিক আলোচিত
  • সর্বাধিক লিঙ্ক করা
  • সর্বাধিক প্রতিক্রিয়া
  • সম্প্রতি বৈশিষ্ট্যযুক্ত
  • শীর্ষ রেট
  • টপ ফেভারিট
  • মোবাইল ফোনের জন্য ভিডিও

এই উদাহরণে ব্যবহৃত লাইব্রেরিটি জুড়ে হার্ড-টাইপ করা হয়েছে, মানে একবার আপনি ডেটা পেয়ে গেলে, আপনি IDE-তে স্বয়ংক্রিয়-সম্পূর্ণ বৈশিষ্ট্য ব্যবহার করতে পারেন যেমন FlashDevelop, Flex IDE, Eclipse w/FDT, IntelliJ Idea, এবং আরও অনেক কিছু।

গুরুত্বপূর্ণ সম্পদ

আমরা শুরু করার আগে, এখানে আপনার জন্য উপলব্ধ সংস্থানগুলির তালিকা রয়েছে - AS3 বিকাশকারী YouTube API থেকে ডেটা ব্যবহার করতে আগ্রহী৷

খোদাই করে

আপনার প্রথম অনুরোধ করা

কোড যা অনুসরণ করে মোটামুটি ভাল মন্তব্য করা হয়. যাইহোক, আমি খনন করার আগে কার্যকারিতাটি একটু বর্ণনা করব৷ সমস্ত অনুরোধের শুরুর পয়েন্ট হল YouTubeClient নামক একটি ক্লাস৷ এই ক্লাসটি একটি সিঙ্গলটন যেখানে আপনি নিম্নলিখিতগুলি করে অ্যাক্সেস পান:

// first you import it
import ca.newcommerce.youtube.webservice.YouTubeClient;

// then you get a reference to it
var client:YouTubeClient = YouTubeClient.getInstance();

এখন আমরা একটি অনুরোধ করতে প্রস্তুত:

client.getStandardFeed(YouTubeClient.STD_TOP_RATED, 
                                 YouTubeClient.TIME_MONTH,
                                 1, 
                                 10);

আমি এইমাত্র গত মাসে শীর্ষ রেট করা ভিডিওগুলির জন্য অনুরোধ করেছি, ফলাফল 1 থেকে 10 (মনে রাখবেন যে প্রতি কলে সর্বাধিক 50টি ফলাফল রয়েছে)৷ সহজ !

ফলাফল হ্যান্ডলিং

এখন, আমি কীভাবে এই ফলাফলগুলি অ্যাক্সেস করব? যেহেতু REST টাইপ ওয়েবসার্ভিস প্যারাডাইমটি অ্যাসিঙ্ক্রোনাস, তাই ফলাফলগুলি আনার সময় কোড থামানোর পরিবর্তে ফলাফলগুলি পরিচালনা করতে ইভেন্টগুলি ব্যবহার করা সহজ। এই ক্ষেত্রে, আমাদের StandardVideoFeedEvent.STANDARD_VIDEO_DATA_RECEIVED ইভেন্টের জন্য একটি ইভেন্ট শ্রোতা ঘোষণা করতে হবে। YouTubeClient যখনই একটি স্ট্যান্ডার্ড ফিডের জন্য একটি প্রতিক্রিয়া পায় তখন আমাদের ফাংশনটি কল করা হবে৷

client.addEventListener(StandardVideoFeedEvent.STANDARD_VIDEO_DATA_RECEIVED, 
                        doVideosReceived);

কল করা ফাংশন doVideosReceived হবে. এটি একটি প্যারামিটার লাগবে, StandardVideoFeedEvent টাইপের একটি পরিবর্তনশীল। এটি AS3 এর মান অনুসরণ করে। আসুন আমরা এটি ঘোষণা করি, এবং এটিকে আমরা প্রাপ্ত ভিডিওগুলির বিষয়ে কয়েকটি জিনিস ট্রেস করি। আমরা স্ট্যান্ডার্ড আউটপুট ট্রেস করব:

  • ভিডিওর শিরোনাম,
  • ভিডিও এমবেড করার জন্য SWF এর URL,
  • দেখার সংখ্যা,
  • মন্তব্যের সংখ্যা,
  • ভিডিওর সময়কাল,
  • এবং লেখকের নাম।
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);
	}
}

লাইব্রেরি এবং ফিড সম্পর্কে কয়েকটি নোট

প্রায় সব ইভেন্টের একটি .feed সম্পত্তি আছে। ProfileEvent হল একটি ব্যতিক্রম, এটির পরিবর্তে একটি .profile প্রপার্টি রয়েছে, কারণ এই কল দ্বারা শুধুমাত্র একটি রেকর্ড ফেরত দেওয়া হয়েছে৷

অনেক ধরণের ফিড রয়েছে - সেগুলি সমস্ত নিম্নলিখিত পদ্ধতিগুলি প্রয়োগ করে:

  • first() -- প্রথম রেকর্ড পুনরুদ্ধার করুন এবং এটি নির্দেশ করুন
  • next() -- পরবর্তী উপলব্ধ রেকর্ড পুনরুদ্ধার করুন
  • last() -- শেষ রেকর্ড পুনরুদ্ধার করুন এবং এটি নির্দেশ করুন
  • previous() -- ফিডে আগের রেকর্ড পুনরুদ্ধার করুন
  • getAt() - একটি নির্দিষ্ট অবস্থানে একটি ফলাফল পান
  • count() -- এই ফিডের জন্য উপলব্ধ ফলাফলের সংখ্যা, totalResults সমান নয়

আপনি যখন ফলাফলের শেষে পৌঁছান, next() শূন্য রিটার্ন করে। আগের জন্য একই জিনিস, আপনি একবার প্রথম ফলাফল পেয়ে গেলে, previous() তে পরবর্তী কলটি null ফিরে আসবে।

মনে রাখবেন যে ফিডগুলির ভিতরের ডেটা (যেমন বিভাগগুলি) Iterators এর ভিতরে মোড়ানো হয়, তাই আপনি উপলব্ধ বিভাগগুলির মাধ্যমে চলতে একই ফাংশন ব্যবহার করতে পারেন।

সম্পূর্ণ উত্স কোড

নিম্নলিখিত এই উদাহরণের জন্য সম্পূর্ণ উৎস কোড. আপনি একটি জিপ ডাউনলোড করতে পারেন যাতে ফ্ল্যাশ CS3 এর ভিতরে উদাহরণটি চালানোর জন্য আপনার যা যা প্রয়োজন তা রয়েছে, তবে, আমরা বাগগুলি সংশোধন করে বা বৈশিষ্ট্যগুলি আপডেট করার ক্ষেত্রে লাইব্রেরিটি আপডেট করা ভাল। আপনি এখানে ক্লিক করে লাইব্রেরি ডাউনলোড করতে পারেন।

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);
             }

        }

    }

}

উপসংহার

যদিও এই নিবন্ধটি সবেমাত্র আইসবার্গের অগ্রভাগকে স্পর্শ করে, এটি আপনাকে এই লাইব্রেরিটি ব্যবহার করে YouTube ডেটা API-কে জিজ্ঞাসা করা কতটা সহজ তার একটি ভাল ধারণা দেবে। যেহেতু আমি সবকিছু হার্ড-টাইপ করতে সময় নিয়েছি, তাই প্রতিটি ফিড প্রতিক্রিয়াতে কী ডেটা পাওয়া যায় তা অন্বেষণ করা একটি হাওয়া। এটি এখনও নতুন লেখা এবং আপলোড কার্যকারিতা সমর্থন করে না, তবে আপনি যদি লাইব্রেরিতে অবদান রাখতে চান তবে প্রকল্প পৃষ্ঠাটি দেখুন।

লেখক বায়ো


লেখকের নাম

মার্টিন লেগ্রিস 12 বছরের সক্রিয় সফ্টওয়্যার বিকাশের গর্ব করেছেন। আজ, তিনি প্রধানত ইউজার ইন্টারফেস গবেষণায় মনোনিবেশ করেন এবং তার প্রিয় টুল হল ফ্ল্যাশ w/ ActionScript। blog.martinlegris.com- এ তার ব্লগ দেখুন এবং www.newcommerce.ca- এ ওয়েবসাইট (সেকেলে হতে পারে) দেখুন।

ক্রিয়েটিভ কমন্স লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 3.0 ইউনাইটেড স্টেটস লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।