منبع اصلی نوشتار زیر در این لینک قرار دارد

دانلود آخرین قسمت دیرین دیرین از یوتیوب

دیرین دیرین یکی از انیمیشن‌های محبوب این روزهاست. طنزی که معضل‌های رایج رو به شکل خنده‌داری نمایش می‌ده. یکی از کارهای رایج من این شده بود که چون در حال حاضر روزانه مرتبا یه انیمیشن دو-سه دقیقه‌ای آپلود می‌کنن، هر روز به کانال یوتیوب‌شون سر بزنم و ویدئوی جدید رو بگیرم. بیاین این فرآیند تکراری رو اتوماتیکش کنیم!

یکی از برنامه‌های باحال و مفید youtube-dl‍ه که با پایتون نوشته شده و فیچرهای بسیاری داره. مثلا می‌شه باهاش کل ویدئوهای یک کانال یا کاربر رو روی اکثر سایت‌های اشتراک ویدئو دانلود کرد یا یه پلی لیست رو جداگانه دانلود کرد، کیفیت رو مشخص کرد و خیلی کارای دیگه.

youtube-dl --no-progress --max-downloads 1 --proxy $http_proxy -c -o 'DirinDirin/%(id)s-%(title)s.%(ext)s' --dateafter now-1day 'https://www.youtube.com/user/dirindirincartoon'

توضیح: no-progress که می‌گه نوار پیشرفت رو نشون نده. چون من این فرمان رو توی cron اجرا می‌کنم، متن خروجیش ایمیل می‌شه و اگر نوار پیشرفت فعال باشه، لاگی سرشار از خط های شبیه به هم و بدرد نخور خواهیم داشت :دی max-downloads می‌گه که فقط یه فیلم رو بگیر. وگرنه همه‌ی کانال رو دانلود می‌کنه! پروکسی هم که نیاز به شرح اضافه نداره. c می‌گه اگر فایلی وجود داشت ادامه بده. این دوتا کار برامون انجام می‌ده:

  • اگر ویدئویی ناقص دانلود شده بود yt-dl ادامه‌ش می‌ده
  • اگر یه ویدئو کامل دانلود شده بود دوباره دانلودش نکنه

آپشن o قالب و مسیر فایل دانلود شده رو تعیین می‌کنه. مثلا این‌جا، همه‌‌ی دانلودها توی پوشه‌ی DirinDirin ریخته می‌شن که هر فایل با id یوتیوبش شروع می‌شه، یه خط فاصله،‌ عنوان فیلم، نقطه و با پسوند فایل تموم می‌شه. dateafter تقریبا کار اصلی رو انجام می‌ده. می‌گه فقط اگر تاریخ آپلود ویدئو بعد از این تاریخی که مشخص کردم بود دانلودش کن. این تاریخ می‌تونه نسبی یا مطلق باشه. ما گفتیم now-1day، یعنی اگر بین بازه‌ی دیروز تا امروز آپلود شده بود دانلودش کن. و در آخر هم لینک کاربری دیرین دیرین.