بررسی چند مثال کاربردی از wget و axel و youtube-dl
wget بهترین انتخاب برای مدیریت دانلود، axel بهترین انتخاب برای accelerate کردن یا به عبارتی زدن کانکشن به ازای هر بخش از فایل و افزایش سرعت و youtube-dl بهترین انتخاب برای دانلود استریم از youtube میباشد.
wget به صورت پیشفرض در اکثر توزیعهای گنو/لینوکس نصب است. اما youtube-dl و axel باید نصب شوند. برای دبیان و توزیعهای دبیان-بیس با دستورهای زیر نصب کنید:
apt-get install axel
apt-get install youtube-dl
axel هیچ optionی برای گرفتن فایل متنی لیست دانلود ندارد. کلمهی dlist را با نام فایلی که لیست دانلودتان در آن قرار دارد جایگزین کنید. همچنین optionهای -a برای نمایش بهتر وضعیت دانلود -v برای نمایش وضعیت دانلود و -n 20 برای تبدیل فایل به 20 part و تعیین تعداد connectionهاست که میتواند هر عدد دلخواه دیگری هم باشد.
while read url; do axel -a -v -n 20 $url; done < dlist
wget این قابلیت را دارد که تمام لینکهای داخل صفحات یک سایت را بررسی و آنهایی که شامل فایلهایی با فرمتهای مشخصی است را بیرون بکشد.
wget -c -r -A.mp4 -A.ogv -A.pdf -A.xml -A.ogg -A.mkv -A.mp3 -A.avi -A.zip -A.rar -i <FILE NAME>
در مثال ترکیبی بالا -i همان input file است یعنی به wget میخواهیم یک لیستی از آدرسهای اینترنتی را بدهیم.
-r برای اینست که خزندهی wget تمام صفحات را بررسی کند. درعمل میگوید کل وبسایتی که لینک دادم را دانلود کن یا به عبارتی بعد از دنبال کردن (crawling) مجموعهای از لینکها و رسیدن به بنبست (جایی که دیگر لینکی برای دنبال کردن نبود) برگرد عقب تا بقیهی لینکها را دانلود کنی
-c همان continue است یعنی wget در صورت drop شدن connection مجددا اتصال را برقرار کند و از ادامه فایل آن را دانلود کند.
-A دات هر فرمتی از فایل یعنی فقط فایلهایی را دانلود کن که دارای این فرمت هستند. در مثال بالا فایلها با فرمتهای mp4 و ogv و pdf و xml و ogg و mkv و mp3 و avi و zip و rar دانلود میشود. این روش برای مواقعی که یک لینک باز FTP داریم و میخواهیم فایلهای خاصی را از آن بیرون بکشیم یا تعداد زیادی لینک مستقیم را از یک سایت بیرون آورده و در یک فایل ذخیره کنیم بسیار پرکاربرد است.
بیایید در مثال دوم ترکیب دیگری از کاربردهای دستور wget برای مدیریت دانلود را بررسی کنیم.
wget -r --no-clobber --page-requisites --html-extension --convert-links --domains website.org --no-parent website.org/example
-r در کاربرد قبلی توضیح داده شد.
–domains website.org میگوید فقط لینکهایی را دنبال کن که در دامنهی website.org قرار دارند مثلا اگر لینکی به سایت دیگری وجود دارد دنبال آن نرو.
–no-parent میگوید دنبال شاخهی parent آدرسی که دادم نرو یعنی در این مثال که قرار است website.org/example را دانلود کنیم دنبال parent آن یعنی website.org نمیرود.
–page-requisites میگوید تمام فایلهایی که صفحات وب را ایجاد میکنند را دانلود کن از جمله عکسهای استفاده شده در طراحی صفحه و فایلهای CSS
–html-extension میگوید فایلها را با فرمت HTML ذخیره کن.
–convert-links میگوید لینکهای داخلی را به گونهای تبدیل کن که به صورت آفلاین و local به هم مربوط شوند. (البته این در مواردی کار میکند که طراح سایت لینکها را با مشخص کردن دایرکتوری نسبت به روت سایت داده باشد)
–no-clobber برای مواقعی کاربرد دارد که قبلا مقداری از یک سایت را با همین روش دانلود کردهایم و دانلودمان interrupt شده و میخواهیم صفحات و فایلهایی که یکبار دانلود شدهاند را skip کند و دوباره دانلود نکند.
کاربرد بعدی
در حالت طبیعی نام فایلی که با wget دانلود شود عبارتیست که بعد از آخرین اسلش در URL نوشته شده اما اگر این نام به نظرتان کافی نیست با -O میتوان قسمتهای قبل از اسلش را هم به نام فایلی که دانلود میشود اضافه کرد.
wget -b دانلود شما را به background منتقل میکند و برای دیدن progress دانلود میتوانید فایل لاگ را بخوانید.
بعضی از سایتها با خواندن هدر user agent کسی که سایت را مرور میکند به روباتها از جمله خزندهی wget اجازهی دانلود نمیدهند برای حل این مشکل میتوانید wget را با یک user-agent دیگر به آن سایت معرفی کنید:
- -user-agent=«Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3»
اگر میخواهید برای دانلودتان یک اسکژول تعریف کنید تا در ساعت مشخصی شروع شود ولی به صحت لینک و اینکه دانلود خواهد شد شک دارید از –spider استفاده کنید. wget در خروجی به شما نشان میدهد که دانلودتان در ساعتی که مشخص کردید بدون هیچ مشکلی شروع خواهد شد یا نه. همچنین از این آپشن میتوان برای فهمیدن اینکه آیا یک لینک کار میکند یا نه نیز استفاده کرد.