چطور  با پایتون دوره های سایت Coursera و Edx را دانلود کنیم؟

به عنوان کسی که مقطع کارشناسی و ارشدش را داخل دو تا از مطرح ترین دانشگاه های ایران سپری کرده بود و تقریبا هیچ چیز به درد بخوری از کلاس های دانشگاه یاد نگرفته، وبسایت های Coursera.org و Edx.org دو سایت حیاتی بودند که نه تنها از آن ها خیلی چیزها یاد گرفتم بلکه باعث شدند که هم مسیر کاری و هم مسیر آکادمیک من تغییر زیاد بکند. متاسفانه از حدود دو یا سه سال پیش، به دلیل تحریم ها کورسرا دسترسی به دوره های خودش را برای ایرانی ها خیلی سخت کرد ( به علاوه کورسرا پلتفرم خودش را به صورت کامل تغییر داد و به نظر خود همین هم خیلی باعث پیچیده تر بیشترش شد و هر کسی که برای اولین بار داخل این سایت می شد سرگیجه می گرفت.) برای همین، تقرییا از حدود ۱٫۵ سال پیش بود که تصمیم گرفتم که سایت مونیورسیتی را بسازم و دوره های سایت Coursera و Edx رو داخل اون آپلود کنم تا بقیه افراد هم بتونن به راحتی دوره های این سایت ها رو دانلود و استفاده کنند. آن زمان وقتی که سایت رو بالا آوردم هدف اصلیم این بود که تمام دوره های کورسرا و Edx با موضوعات مختلف رو داخل سایت قرار بدهم. خب طبیعتا بعد از مدتی متوجه شدم که این کار که بخوام حوزه های مختلف و متنوعی رو پوشش بدم ایده خیلی خوبی شاید نباشد و برای همین تصمیم گرفتم که صرفا دوره های مربوط به data science و یادگیری ماشین رو که مباحث مورد علاقه خودم هستند را داخل سایت قرار بدهم. با این وجود، حالا بعد از ۱٫۵ سال به خاطر این که دیگر در ایران نیستم و مشغله های کاریم به این نتیجه رسیدم که ادامه دادن فعالیت های سایت در این فاز زندگیم دیگر امکان پذیر نیست.با این حال، مدتی قبل و بعد از بسته شدن دائمی مونیورسیتی دوباره به این فکر می کردم که با توجه به این که دیگه در مونیورسیتی دوره های کورسرا و edx رو قرار نمی دهم چطور می تونم به نوعی به آموزش بقیه کمک کنم. تا این که از خودم بپرسیدم که چرا از اول به جای این همه هزینه هاست و سایت برای آپلود این دوره ها، آموزش دانلود دوره ها رو به بقیه یاد ندادم و شاید این طوری می تونستم تمرکز بیشتری روی معرفی و پیشنهاد دوره های خوب داشته باشم. ولی خب به نظرم هنوز دیر نشده و می خوام در اینجا آموزش دانلود این دوره ها رو به شما یاد بدهم.برای دانلود دوره های Coursera و Edx از دو کتابخانه پایتون به نام های coursera-dl و edx-dl استفاده می کنیم ولی ابدا لازم نیست که پایتون بلد باشید و صرفا لازم هست که پایتون رو نصب کنید. منتها اول از قبل از کاری برای دانلود دوره های کورسرا و edx باید برای هر دو سایت حساب کاربری ایجاد کنید.تفاوت اصلی Edx با کورسرا در دو مورد زیر هست:اولین تفاوت، تفاوت بین پلتفرمی هست که محتوای آموزشی این دو سایت روی هم قرار گرفتند. سایت Edx از یک فریمورک آموزشی متن باز که خودش توسعه داده است به نام OpenEdx برای محتواهای آموزشی اش استفاده می کند. به علاوه ویدئوهایی آموزشی سایت Edx روی سایت یوتیوب ذخیره شده اند( به صورت private، یعنی شما نمی توانید این ویدئوها را مستقیم داخل یوتیوب جستجو کنید.) این یعنی برای دانلود ویدئوهای Edx در حقیقت باید ویدئوهای یوتیوب را دانلود کنید.تفاوت دوم مهم این دو سایت در این هست که دوره های کورسرا همیشه در حال برگزاری و در دسترس هستند یعنی اگر شما نتوانستید که تکلیف های یک دوره را سر موقع و به صورت کامل انجام بدهید در سری بعدی که دوره مجددا ارائه می شود ( معمولا با فاصله زمانی یک ماهه) می توانید این تکالیف را در سری بعد تکمیل کنید.خب حالا که این چیزها را گفتم نوبت به اصل کار و آموزش نحوه دانلود دوره ها از این دو سایت می رسد و اول از همه با Edx شروع می کنم.دانلود کورس های سایت Edxسایت Edx هم مثل کورسرا دوره های مختلف آموزشی را داخل خودش دارد ولی با این حال کمی کمتر از کورسرا شناخته شده تر هست ولی با این وجود به شخصه دوره های فوق العاده خوبی داخل این سایت دیدم. برای دانلود ویدئوهای edx از یک کتابخانه پایتون به اسم edx-dl استفاده می کنیم. این کتابخانه را با اجرای دستور زیر در محیط خط فرمان نصب می کنیم:pip install edx-dlالبته همانطور که گفتم ویدئوهای edx روی یوتیوب قرار دارند و برای دانلود آن ها باید اول از یک کتابخانه دیگر که ویدئوها را از یوتیوب دانلود می کند به نام youtube-dl استفاده کنیم. خوشبختانه وقتی که کتابخانه edx-dl را نصب می کنیم این کتابخانه youtube-dl به صورت خودکار نصب و از آن استفاده می کند. البته طبق مستندات این کتابخانه بهتر است به صورت زیر هر از چندگاهی youtube-dl را به روز رسانی کنیم چون ساختار یوتیوب هر از چندگاهی عوض می شود:pip install --upgrade youtube-dlتوجه: حواستان باشد که دسترسی مستقیم به یوتیوب از ایران امکان پذیر نیست! و برای استفاده از edx-dl و دانلود ویدئوها باید از ابزار دور زدن تحریم ها استفاده کنید!بعد از نصب این کتابخانه، برای دانلود کردن یک دوره خاص بعد از ثبت نام در آن دوره کافی است که دستور زیر را در محیط خط فرمان اجرا کنیم:edx-dl -u youremail -p yourpassword COURSE-URLدر اینجا باید آدرس ایمیل و پسورد که با آن به حساب edx خودتان وارد می شوید را به ترتیب به جای youremail و yourpassword وارد کنید.COURSE-URL هم آدرس دوره ای است که می خواهید دانلود کنید. این آدرس، آدرس اولین صفحه ای است که بعد از وارد شدن به کورس می بینید. به طور مثال آدرس کورس Data Science: Machine Learning همانطور که در تصویر زیر می بینید به صورت زیر است:https://courses.edx.org/courses/course-v1:HarvardX+PH125.8x+2T2018/course/بعد از اجرای دستور زیر، محتوای درون کورس در یک پوشه به نام Download که در دایرکتوری اصلی که محیط خط فرمان را باز کرده اید دانلود می شوند.علاوه بر این، می توانیم تنظیمات دیگری را هم برای دانلود ویدئوهای edx در نظر بگیریم که این تنظیمات را به عنوان پارامترهای دستوری که بالا اجرا کردیم مشخص می کنیم. لیست پارامترهای قابل تنظیم را هم می توانید با اجرای دستور edx-dl در محیط خط فرمان ببینید.دانلود کورس های سایت کورسرامتاسفانه با توجه به تغییراتی که کورسرا در ساختار پلتفرم خودش و لاگین کردن به سایتش انجام داده است دانلود کورس های سایت کورسرا کمی پیچیده و سخت شده و عملا استفاده مستقیم از کتابخانه courseral-dl امکان پذیر نیست. البته خوشبختانه برای این مشکل راه حلی پیدا شده است و من هم به طور مستقیم این راه حل را آموزش می دهم.ابتدا طبق معمول کتابخانه coursera-dl را با اجرای دستور زیر نصب می کنیم.pip install coursera-dlحالا فایل coursera-dl.py که در این آدرس قرار دارد را دانلود می کنیم و با فایلی با همین نام که در دایرکتوری کتابخانه نصب شده coursera-dl ( به طور مثال این دایرکتوری به صورت E:\ProgramData\Anaconda37\Lib\site-packages\coursera خواهد بود) جایگزین می کنیم.در مرحله بعدی افزونه cookiestxt را به مرورگر کروم اضافه می کنیم. حالا از طریق کروم به سایت کورسرا لاگین می کنیم و با این افزونه یک فایل به نام cookies.txt را به صورت شکل زیر دانلود می کنیم.حالا فایل cookies.txt را در دایرکتوری که می خواهیم دوره های دانلود شده قرار بگیرند می گذاریم و یک محیط خط فرمان را در آن دایرکتوری باز می کنیم. الان نوبت به دانلود کردن دوره ها می رسد. برای دانلود کردن دوره ها دستوری با ساختار زیر را اجرا می کنیم.coursera-dl -u youremail -p yourpassword COURSE-NAMEدر اینجا هم باید آدرس ایمیل و پسورد که با آن به حساب edx خودتان وارد می شوید را به ترتیب به جای youremail و yourpassword وارد کنید.پارامتر COURSE-NAME هم شناسه دوره ای است که می خواهید دانلود کنید که به صورت زیر می توانید شناسه دوره را در آدرس صفحه یک دوره به دست بیاورید:به طور مثال، شناسه دوره Neural Networks and Deep Learning به صورت « neural-networks-deep-learning» است.حالا می توانید دوره های کورسرا را هم به راحتی دانلود کنید و از آن ها لذت ببرید