এই নিবন্ধটি একটি বহিরাগত বিকাশকারী দ্বারা লেখা এবং জমা দেওয়া হয়েছিল। YouTube API এবং টুলস টিম মার্টিন লেগ্রিসকে তার সময় এবং দক্ষতার জন্য ধন্যবাদ জানায়।
মার্টিন লেগ্রিস
মার্চ 2008
ভূমিকা
এই টিউটোরিয়ালে আমি আপনাকে দেখাব কিভাবে, আসল AS3 কোডের 10 লাইনের নিচে, আপনি শেষ day
, week
, month
বা all_time
জন্য YouTube-এ সর্বাধিক জনপ্রিয় ভিডিওগুলি পুনরুদ্ধার করতে পারেন। আপনি যে কোনো স্ট্যান্ডার্ড ফিড পেতে পারেন:
- সর্বাধিক দেখা
- অতি সম্প্রতি
- সর্বাধিক আলোচিত
- সর্বাধিক লিঙ্ক করা
- সর্বাধিক প্রতিক্রিয়া
- সম্প্রতি বৈশিষ্ট্যযুক্ত
- শীর্ষ রেট
- টপ ফেভারিট
- মোবাইল ফোনের জন্য ভিডিও
এই উদাহরণে ব্যবহৃত লাইব্রেরিটি জুড়ে হার্ড-টাইপ করা হয়েছে, মানে একবার আপনি ডেটা পেয়ে গেলে, আপনি IDE-তে স্বয়ংক্রিয়-সম্পূর্ণ বৈশিষ্ট্য ব্যবহার করতে পারেন যেমন FlashDevelop, Flex IDE, Eclipse w/FDT, IntelliJ Idea, এবং আরও অনেক কিছু।
গুরুত্বপূর্ণ সম্পদ
আমরা শুরু করার আগে, এখানে আপনার জন্য উপলব্ধ সংস্থানগুলির তালিকা রয়েছে - AS3 বিকাশকারী YouTube API থেকে ডেটা ব্যবহার করতে আগ্রহী৷
- AS3 লাইব্রেরিটি আমি এই ওয়েব পরিষেবাগুলি ব্যবহার করার জন্য তৈরি করেছি
- অফিসিয়াল YouTube ডেটা API ডকুমেন্টেশন
- AS3 এর জন্য FlashDevelop IDE
- ইউটিউবক্লায়েন্টে কোন অনুরোধ কলের মাধ্যমে কোন ঘটনাগুলি চালানো হয় তার একটি তালিকা৷
খোদাই করে
আপনার প্রথম অনুরোধ করা
কোড যা অনুসরণ করে মোটামুটি ভাল মন্তব্য করা হয়. যাইহোক, আমি খনন করার আগে কার্যকারিতাটি একটু বর্ণনা করব৷ সমস্ত অনুরোধের শুরুর পয়েন্ট হল 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 ইউনাইটেড স্টেটস লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।