فکر نمی‌کنم لازم باشه راجع به این که وضع اینترنت تو ایران چقدر داغون هست، توضیح بدم.

یکی از مشکلات اینترنت ما اینه که همه جا اینترنت پایدار نداریم. از طرفی یوتیوب هم فیلتره و خیلی وقت‌ها مشاهده فیلم بصورت منظم ازش خیلی سخته.

برای همین قضیه من روشی برای دانلود از پلی‌لیست‌های یوتیوب استفاده می‌کنم که گفتم به اشتراک بگذارم. البته اگر به قندشکن خوب دسترسی دارید، اصلاً درگیر این قضایا نشید. خیلی ساده با کتابخانه PyTube کارتون رو راه بندازید. استفاده ازش هم به شدت ساده است.

اول نصبش می‌کنید:

pip install pytube

بعد آدرس پلی‌لیست یا ویدئو یوتیوب رو کپی کنید و اینطوری دانلود کنید:

pytube your-youtube-url

ولی اگر قندشکن‌تون خوب نیست، همراه من باشید!

کتابخانه Pytube

این کتابخانه و بسیاری از ابزارهای دیگه توسط جامعه متن‌باز توسعه داده می‌شن. ولی یوتیوب هم بیکار ننشسته و بعضی اوقات تغییراتی میده که کتابخانه دیگه کار نکنه! برای همین اگر مشکلی در کدی که گفتم وجود داشت، خوبه نیم‌نگاهی به صفحه گیت‌هاب اصلی کتابخانه هم داشته باشید و در قسمت issueها آخرین مطالبی که بحث شده رو نگاه کنید.

چند روز پیش یکی از دوستان به من ایمیل زد که کتابخانه کار نمی‌کنه. آخرین issue کتابخانه رو نگاه کردم و دیدم که یک راه‌حل بسیار ساده برای حل مشکل پیشنهاد شده که من وارد توضیحاتش نمیشم؛ چون به احتمال زیاد تا چند روز دیگه کد جدید به کتابخانه اضافه میشه.

مشکلاتی از این قبیل عادی هستند و تو هر نرم‌افزاری پیش میان. معمولا هم تو جامعه متن‌باز به سرعت مشکل مشاهده میشه و حل میشه.

اتفاقا همین مورد بلای جون شرکت‌های بزرگ (Tech giantها) شده و قدرت ما مردم (در مقابل شرکت‌های بزرگی مثل گوگل) رو نشون میده. چند وقت پیش هم یکی از اسناد گوگل درز کرده بود که گفته بودند ما و OpenAI در مقابل جامعه Open-Source کم آوردیم. ما مدل‌های چند میلیاردی آموزش می‌دیم و این‌ها یاد گرفتند با تکنیک‌هایی مدل‌های خیلی کوچیک‌تر آموزش میدن و تقریبا همون نتایج رو می‌گیرند (+).

کولب چیه؟

اولین قدم آشنایی با گوگل کولب هست. گوگل Colaboratory که به اختصار بهش کولب می‌گیم یه سرویس هست که گوگل ارائه میده و معمولا Data Scientistها یا AI Researcherها ازش به عنوان یه محیط برای اجرا گرفتن اولیه از کدهاشون استفاده می‌کنند.

معمولا کارهایی که تو این محیط انجام میشن بیشتر حالت سعی و خطا دارند و معمولا کسی که تحقیق می‌کنه ابزار اصلی‌اش Colab نیست (یا حداقل نباید باشه). ابزار اصلی سروری هست که آزمایشگاه یا اون موسسه‌ای که داخلش کار می‌کنه بهش میدن.

ولی خب خیلی از دانشگاه‌ها و موسسات تو ایران اصلا سرور ندارند. بودجه تهیه‌اش رو هم ندارند. این میشه که ابزار اصلی خیلی از بچه‌ها (حتی تو شریف) همین کولب میشه.

هدف من در اینجا اینه که بگم چطوری میشه از این ابزار استفاده کنیم برای این که پلی‌لیست‌های یوتیوب رو دانلود کنیم. سپس اون رو به کمک کولب به گوگل‌ درایو منتقل کنیم. بعد از اون به سادگی با اینترنت معمولی دانلود کنیم و روی گوشی بریزیم.

روش دانلود

اجرای فایل سخت نیست. کافیه که به یکی از لینک‌های زیر برید و Open in colab رو انتخاب کنید.

بعد از اون برای اجرا و تغییر دادن فایل نوت‌بوک، Copy to Drive را انتخاب کنید.

همه کدهایی که اینجا توضیح میدم داخل فایل نوت‌بوک هم هست. صرفا جاهایی که لازمه تغییر بدید رو تغییر بدید و بذارید اجرا بشه.

آدرس یوتیوب رو داخل سلولی که شبیه زیر لینک یوتیوب داره، ویرایش کنید و بگذارید دانلود بشه.

!pytube https://www.youtube.com/playlist?list=PLLHTzKZzVU9e6xUfG10TkTWApKSZCzuBI

با این روش با اینترنت خود گوگل، از یوتیوب (که باز مال خود گوگل هست) دانلود می‌کنیم.

بعد از اون فایل‌ها داخل یک فولدر (به نام پلی‌لیست خودتون) ذخیره میشن. کافیه که اونها رو Zip کنیم و به گوگل درایو منتقل کنیم. سپس به راحتی از داخل گوگل درایو قابل دانلود هستند.

با استفاده از دستور زیر می‌تونیم نگاه کنیم که فایل‌هامون در چه فولدری ذخیره شده:

!ls -lh

برای زیپ‌کردن داده کافیه که از دستور زیر استفاده کنید. فقط اسم فولدر رو متناسب خروجی مرحله قبل ویرایش کنید. با این دستور اطلاعات فولدر NYU Deep Learning SP21 داخل فایل NYU.zip ذخیره میشن.

!zip -r NYU.zip 'NYU Deep Learning SP21'

نهایتا هم با این دستور به کولب اجازه می‌دید که به گوگل درایو وصل بشه!

from google.colab import drive
drive.mount('/content/drive')

با این دستور هم فایل زیپ‌شده رو به فولدر اصلی گوگل درایو منتقل می‌کنیم.

!cp NYU.zip /content/drive/MyDrive

فقط قبلش چک کنید گوگل درایو‌تون به اون اندازه فضا داشته باشه. اگر فضا نداشتید یک اکانت دیگه بسازید.

پلی‌لیست NYU یه پلی‌لیست کاملا نرمال هست و همه فایل‌ها باهاش به سادگی دانلود میشن. احتمالا پلی‌لیست‌های شما هم مشابه همین هست و با همین روش دانلود میشه.

ولی بعضی پلی‌لیست‌ها مثل دوره یادگیری عمیق مازیار رئیسی خیلی بزرگ هستند (تقریبا ۵۰۰ تا ویدئو). این پلی‌لیست‌ها رو نمیشه تو یه Session کولب دانلود کرد و باید مثلا به سه قسمت تقریبا مساوی تقسیم کنید و هر قسمت رو یک Session جداگانه دانلود کنید.

به شخصه دو تا استفاده از این روش می‌کنم.

  • بعضی وقت ها کورس های بلندمدت‌تر رو دانلود می‌کنم که بتونم سرعت‌شون رو مطابق سلیقه‌ام تنظیم کنم و گم نکنم که کجا بودم.
  • بعضی کورس ها هم هستند که آدم دانلود می‌کنه هر وقت بیکار شد چیز برای دیدن و مطالعه کردن داشته باشه.

تبلیغات یوتیوب

دوست دارم دو تا راه هم برای حذف تبلیغات یوتیوب پیشنهاد بدم که وقت‌تون رو سر تبلیغ هدر ندید. این روش برای سایت‌هایی مثل آپارات هم کار می‌کنه و در کل تبلیغات بسیاری از سایت‌ها رو حذف می‌کنه.

اندروید

برای دورزدن تبلیغات روی اندروید می‌تونید از Youtube Revanced استفاده کنید. این پروژه، ادامه پروژه Youtube Vanced هست که گوگل ازش شکایت کرد و مجبور شد که نرم‌افزارش رو متوقف کنه.

روش مرورگر

برای این‌کار از Extension مبتنی بر کروم استفاده می‌کنم. قبل از اون بگم که اگر از مرورگر Brave استفاده کنید، Brave خودش بصورت اتوماتیک این‌کارها رو انجام میده و نیازی به نصب Extension نیست.

  • SponsorBlock for YouTube - Skip Sponsorships این Extension قسمت‌های از ویدئو که راجع به اسپانسر ویدئو صحبت میشه رو حذف می‌کنند!
  • AdGuard AdBlocker این Extension تبلیغات ویدئوها و کلی تبلیغات دیگه برای سایت‌های متفرقه رو حذف می‌کنه.
  • Enhancer for YouTube™ این Extension هم تنظیمات کاربردی‌ای به ویدئو اضافه می‌کنه؛ مثلاً دکمه‌ای برای تعیین سرعت ویدئو (1.5x و 2x) داره یا این که می‌تونه صدای ویدئو رو boost کنه.
  • Anti Adblock Detector اخیراً یوتیوب اذیت می‌کنه و میگه نباید Adblock داشته باشیم. خب نمیشه که! این اکتنشن کاری می‌کنه که اون کد یوتیوب - که میگه چرا Adblock داری - رو غیرفعال کنیم.

در کل هم هنوز با خودم راجع به افزونه‌ها به توافق نرسیدم و نمی‌دونم در بلندمدت مفید (و در نتیجه اخلاقی) خواهند بود یا نه!