نحوه دانلود گروهی از لینک های دانلود موجود در یک فایل
"اجرای خودکار لینکها در مرورگر با استفاده از PHP
امروز داشتم از یک سایت تعدادی فایل رو دانلود میکردم. لینک های دانلود در یک فایل txt قرار داشتند و برای دانلود فایل ها باید دونه دونه لینک ها در مرورگر وارد میکردم تا دانلود بشه. از طرفی بخاطر محدودیت هایی که روی لینک ها اعمال کرده بودند، دانلود فایل ها از طریق دانلود منیجر با خطا مواجه میشد.
واسه دانلود فایل ها کلی روش توی ذهنم بود. ولی تصمیم گرفتم با زبان برنامه نویسی php انجامش بدم.
نهایتا تصمیم گرفتم یک کد با زبان php بنویسم که دونه دونه لینک ها رو از فایل txt بگیره و در مرورگر برام وارد کنه.
پس من به ساده ترین روش میخوام اینجا یک روش رو توضیح بدم که میتونید با این روش لینک ها رو در مرورگر باز کنید تا شروع کنه به دانلود.
ابتدا یک پوشه به نام Files میسازیم و در این پوشه دوتا فایل رو میزاریم:
فایل اول: یک فایل متنی به نام links.txt میسازیم که حاوی لینک های دانلود هستند. در این فایل باید هر لینک در یک خط قرار بگیرند.
فایل دوم: یک فایل php رو به نام index.php میسازیم که حاوی کد های پیاچپی هستند.
حالا در فایل php باید کد هایی رو بزاریم که لینک های دانلود رو از فایل links.txt بخونه و دونه دونه در مرورگر باز کنه.
<?php
$links = file('links.txt', FILE_IGNORE_NEW_LINES);
foreach ($links as $link) {
exec('open -a "Google Chrome" "' . $link . '"');
sleep(5);
}
در کد بالا با استفاده از تابع file() باید اطلاعات موجود در فایل را دریافت کنیم و در متغیر $links بریزیم. پس پارامتر اول آن رو مسیر فایل قرار میدهیم تا محتوای فایل رو به صورت آرایهای برای ما بازگردانی کنه. پارامتر دوم رو FILE_IGNORE_NEW_LINES میزارم برای جلوگیری از حذف خطوط جدید در انتهای هر خط از فایل متنی که حاوی لینک است.
حالا در قدم بعد یک حلقه foreach میزارم که یک آرایه با نام $links رو میگیره و در هر دور حلقه، مقدار متغیر $link رو به صورت تکتک عضو های آرایه $links در داخل حلقه اجرا میکنه.
پس تا به اینجا تونستیم لینک ها رو از فایل links.txt بگیریم و دونه دونه وارد یک حلقه کنیم. حالا داخل این حلقه میتونم کار های مختلفی رو انجام بدیم.
در این حلقه یک تابع exex() برای اجرای دستور خط فرمان استفاده میکنیم. عملکرد این کد به این صورته که یک رشته رو با استفاده از متغیر $link میگیره که همان لینک دانلود فایل ما هست. حالا این لینک رو در یک صفحه جدید از مرورگر گوگل کروم باز میکنه. در صورتی که دوست دارید در یک مرورگر دیگه فایل رو دانلود کنه کافیه بجای Google Chrome، نام سایر مرورگر ها را وارد کنید.
سپس با استفاده از تابع sleep(5) یک وقفه پنج ثانیه ای ایجاد میکنه و بعد از پنج ثانیه دوباره لینک بعدی رو در مرورگر باز میکنه.
به عبارت دیگه، کل لینک های موجود در فایل متنی رو میگیره و هر پنج ثانیه، یکی از لینک ها رو در مرورگر باز میکنه.
در این آموزش فقط تصمیم داشتم ساده ترین روش واسه بازکردن لینک های دانلود با استفاده از زبان php رو بگم. حالا میتونید در این کد تغییراتی ایجاد کنید که مثلا اگه فایل به صورت خودکار دانلود نمیشه، اون رو اجبار به دانلود کنه یا اینکه بجای استفاده از تابع sleep از روشی استفاده کنید که پس از اتمام دانلود، لینک بعدی رو دانلود کنه.
در صورتی که میخواهید فایل های بسیار زیادی را در مرورگر خود باز کنید و ممکن است در وسط این عمل اینترنت شما با مشکلی مواجه شود، میتوانید از روش زیر استفاده نمایید:
$fp = fopen('links.txt', 'r');
$lines = file('links.txt', FILE_IGNORE_NEW_LINES);
$i = 0;
while (($link = fgets($fp)) !== false) {
exec('open -a "Google Chrome" "' . trim($link) . '"');
flush();
unset($lines[$i]);
file_put_contents('links.txt', implode(PHP_EOL, $lines));
sleep(15);
$i++;
}
fclose($fp);
این کد ابتدا میاد لینک های موجود در فایل links.txt رو خط به خط با تاخیر ۱۵ ثانیه در مرورگر باز میکنه و لینکی که در مرورگر باز شده رو از فایل حذف میکنه.