آموزش کامپیوتر و اینترنتبرنامه نویسی و طراحی وب

نحوه دانلود گروهی از لینک های دانلود موجود در یک فایل

"اجرای خودکار لینک‌ها در مرورگر با استفاده از 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 رو خط به خط با تاخیر ۱۵ ثانیه در مرورگر باز میکنه و لینکی که در مرورگر باز شده رو از فایل حذف میکنه.

سیدرضا بازیار

من مهندس فناوری اطلاعات و توسعه دهنده Back end هستم. حس کنجکاوی، تمایل به کشف دنیاهای جدید و علاقه زیادی به حل چالش‌های گوناگون در زمینه‌های مختلف داشتم باعث شد وارد حرفه‌ی پرچالش و عمیق برنامه‌نویسی بشوم و هر روز بیشتر در این دنیای بزرگ غرق می‌شوم. در حال حاضر با مهارت هایی نرم مانند کار تیمی، قدرت مذاکره، خوش برخوردی، پرورش ایده و مهارت های سخت مانند PHP, OOP, Clean Code, Design Patterns و ... با علاقه مشغول به فعالیت در جامعه متن‌باز هستم. معتقدم هر روز بیشتر از دیروز، عمده کارهای انسان‌ها توسط ربات‌ها انجام خواهد شد، به همین دلیل سعی میکنم اسکریپت‌های زیادی با PHP ، Shell Scripting و Bash Scripting بنویسم و سعی می‌کنم کارهایی که برای انسان‌ها سخت و زمانبر هستند،‌ با ربات‌ها در سریعترین زمان و کمترین هزینه ممکن انجام بدهم. در این مسیر با زبان‌های برنامه نویسی مانند C++ و پایتون هم کمی کار کرده‌ام و با سیستم های مدیریت محتوای زیادی مانند وردپرس، جوملا، ویبولتین و... هم به صورت حرفه‌ای درگیر بوده‌ام. گهگاهی سعی میکنم ربات‌هایی طراحی کنم که اطلاعات عظیمی را از طریق اسکرپینگ به دیتابیس های مختلف منتقل میکنند و از طریق API در پلتفرم های مختلف پردازش می‌شوند. در 10 سال گذشته سابقه زیادی در طراحی سایت و فروشگاه‌های اینترنتی، سئو و بهینه سازی، تست امنیت وب‌سایت‌ها، دیجیتال مارکتینگ و... داشته‌ام. خوشحال میشم بتونم تجربیات خودم رو از طریق این وبلاگ در اختیار همه شما عزیزان قرار بدهم.

مطالب مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *