۱۳۸۹/۰۱/۰۱

دريافت فايل از يوتيوب


سلام

سال نو مبارك! به اميد سالي بهتر از پارسال!

اين روزها با هزينه‌‌اي معادل هزينه‌ي تهيه‌ي يك هاست اشتراكي ساليانه براي بالاگذاري يك سايت معمولي در 5 سال قبل، مي‌توان يك VPS تهيه كرد و به اين صورت قفل و كليد يك نيمچه سرور را (با 200 و خرده‌اي مگ رم، 30 گيگ فضا، سرعت CPU نزديك به 700 MHz و ويندوز سرور 2003 يا 2008) در اختيار شما قرار مي‌دهند (البته به قول معروف هر چقدر پول بدهيد همانقدر هم سخت افزار در اختيار شما قرار مي‌دهند) بجاي صرفا يك دايركتوري مجازي محدود با 100 مگ فضاي هاست كه هر احدي در آن هاست اشتراكي مي‌تواند سر مبارك را اندكي چرخانده و تمام زندگي شما را مرور كند و غيره!
استفاده‌ي مفيدي هم كه اين VPS براي من داشته، ترنس لود كردن يك سري فايل است (با توجه به سرعت‌هاي نجومي دريافت فايل اين سرورها). براي مثال دريافت فايل از يوتيوب و انتقال به يك هاست ديگر براي دريافت ساده‌تر خودم و يا ديگران.
براي نمونه سايت dotnet-tv.com را در نظر بگيريد. تعدادي از ويديوهاي اين سايت در يوتيوب هاست شده و از اين دست زياد هستند. خيلي‌ها براي فرار از مشكلات كمبود پهناي باند از يوتيوب استفاده مي‌كنند. يوتيوب هم كه از اين طرف بسته است. خوب، من الان مي‌خواهم ويديوي مربوط به ASP.Net MVC آن را مشاهده كنم، چكار بايد كرد؟!
يك برنامه‌ي ساده‌ي كنسول را تهيه كرده‌ام كه اين كار را براي VPS‌ داران تسهيل مي‌كند.
- دريافت فايل از يوتيوب
- آپلود خودكار آن به رپيدشير


يك نمونه خروجي آن: (فايل‌هاي يوتيوب سايت ذكر شده كه به رپيدشير منتقل شده)
دريافت

در سورس اين برنامه موارد زير پياده سازي شده است:
- يافتن لينك‌هاي يوتيوب سايت dotnet-tv.com با استفاده از regular expressions
- يافتن لينك دانلود مستقيم اين فايل‌ها از سايت يوتيوب كه شامل استفاده از regular expressions براي استخراج قسمت‌هاي مفيد از صفحات و همچنين استفاده از امكانات Json دات نت فريم ورك سه و نيم براي parse قسمت‌هاي استخراج شده است.
- ايجاد يك thread pool سفارشي كه هر بار 7 لينك مستقيم را به صورت همزمان از يوتيوب دريافت مي‌كند. (thread pool پيش فرض دات نت تمام تردها را به يكباره شروع مي‌كند كه براي اينكار مفيد نيست. به همين جهت از اين thread pool سفارشي شده استفاده شد)
پيش فرض فايلي كه از سايت يوتيوب دريافت مي‌شود MP4 با كيفيت بالا است كه با fmt=18 در فايل Youtube.cs مشخص شده. فرمت‌هاي ديگر را مي‌توانيد از اين فايل ايده بگيريد.
- آپلود فايل دريافتي از يوتيوب به يك اكانت رايگان كالكتور در رپيدشير. (ماخذ اين مورد در سايت code projects)
مشخصات اين اكانت رايگان كالكتور در فايل app.config بايد ذكر شود.

اين سورس مي‌تونه ايده‌ي ابتدايي بسياري از كارهاي مشابه باشد. براي مثال ايجاد يك وب سرويس، يك وب سايت، يك سرويس ايميلي و غيره.



پ.ن.
كار انجام شده فعاليت وارز محسوب نمي‌شود زيرا مجوز ويديوهاي سايت يوتيوب اين امكان توزيع (و بسياري موارد ديگر) را به شما مي‌دهد.