ساخت دانلودر اینستاگرام با پایتون!

زمان مطالعه: 6 دقیقه ویرایش: 1404/04/05

سلام رفیق! 🤩 امروز قراره یه پروژه خیلی باحال بسازیم: دانلودر اینستاگرام با پایتون. هدفمون ساخت ابزاری هست که بتونی عکس، ویدیو، استوری یا پروفایل هر پیجی رو دانلود کنی. این آموزش از اول تا آخرش گام‌به‌گام و با تمام نکات حرفه‌ای هست. آماده‌ای؟ با هم شروع می‌کنیم!

instagram downloader python mrpy مسترپای


1. نیازمندی‌ها: چی باید نصب کنیم؟ 🔧

برای شروع دو تا کتابخونه خیلی مهم نیاز داریم:

  • instaloader برای دانلود دیتا از اینستا
  • requests برای دانلود مستقیم فایل‌ها (اختیاری)

برای نصبشون در ترمینال این دستورات رو بزن:

pip install instaloader requests

همچنین برای مدیریت فایل، بهتره کتابخونه os و pathlib رو استفاده کنیم که همیشه همراه پایتون هستن.


2. دانلود پست عمومی اینستا 📥

برای دانلود یک پست عمومی (عکس یا ویدیو)، این روش ساده و قدرتمنده:

import instaloader

L = instaloader.Instaloader()
url = "https://www.instagram.com/p/Cwxyz12345/"
post = instaloader.Post.from_shortcode(L.context, url.split("/")[-2])
L.download_post(post, target="downloads")

توی پوشه downloads هر نوع فایل پست (عکس، ویدیو، کپشن و ...) ذخیره میشه.


3. دانلود کامل پروفایل عمومی 🔄

اگه بخوای همه پست‌های یه پیج عمومی (مثلاً @nasa) رو دانلود کنی:

import instaloader

L = instaloader.Instaloader()
username = "nasa"
L.download_profile(username, profile_pic=True, posts=True, fast_update=True)

گزینه fast_update باعث میشه تنها پست‌های جدید دانلود بشن و کارت به‌صرفه‌تر بشه.


4. دانلود پروفایل یا استوری خصوصی 🔐

برای دانلود از پیج خصوصی، حتماً باید لاگین کنی. کد کامل:

import instaloader

L = instaloader.Instaloader()
L.login("YOUR_USERNAME", "YOUR_PASSWORD")

profile = instaloader.Profile.from_username(L.context, "private_user")
L.download_profile(profile.username, profile_pic=True, posts=True)

با این روش اگر فالوبک داشته باشی، همه محتواش دانلود می‌شه.


5. دانلود فقط عکس پروفایل 🖼️

برای دانلود پرتره پروفایل بدون دلایل دیگر:

import instaloader

L = instaloader.Instaloader()
L.download_profile("instagram", profile_pic_only=True)

عکس پروفایل با کیفیت کامل داخل پوشه ذخیره می‌شه.


6. دانلود استوری‌ها (برای پیج‌هایی که دنبال‌شون می‌کنی) 📲

برای دانلود استوری، ابتدا باید لاگین باشی:

import instaloader

L = instaloader.Instaloader()
L.login("YOUR_USERNAME", "YOUR_PASSWORD")

profile = instaloader.Profile.from_username(L.context, "username_here")
stories = L.get_stories(userids=[profile.userid])
for story in stories:
    for item in story.get_items():
        L.download_storyitem(item, "stories")

استوری‌ها داخل پوشه stories ذخیره میشن و اگر مورد جدیدی اضافه بشه با اجرای دوباره، تنها اون دانلود می‌شه.


7. دانلود IGTV و ریلز 🌀

برای این نوع محتوا هم می‌شه از instaloader استفاده کرد:

import instaloader

L = instaloader.Instaloader()
profile = instaloader.Profile.from_username(L.context, "nasa")

for post in profile.get_posts():
    if post.is_video:
        L.download_post(post, target="videos")

فقط پست‌های ویدیویی انتخاب می‌شن و در پوشه videos قرار می‌گیرن.


8. مدیریت خطا و اعتبارسنجی ⚠️

برای اینکه برنامه پایدار باشه و قطع نشه:

import instaloader
import time

L = instaloader.Instaloader()

try:
    L.login("user", "pass")
except instaloader.exceptions.BadCredentialsException:
    print("wrong pass/username")
    exit(1)

posts = instaloader.Profile.from_username(L.context, "nasa").get_posts()
for post in posts:
    try:
        L.download_post(post, target="all_posts")
    except Exception as e:
        print("download error:", e)
        time.sleep(5)

با این کار اگر مشکلی پیش بیاد، برنامه ادامه می‌ده یا متوقف می‌شه با ارور معنی‌دار.


9. زمان‌بندی اجرا ⏰

می‌تونی با ترکیب schedule هر چند ساعت اسکریپت رو اجرا کنی:

import schedule
import time

def job():
    # call downloader function
    pass

schedule.every(6).hours.do(job)

while True:
    schedule.run_pending()
    time.sleep(60)

اینطوری هر ۶ ساعت محتوای جدید بررسی و دانلود می‌شه.


10. ساخت رابط خط فرمان (CLI) 💻

برای استفاده ساده‌تر از ابزار، می‌تونیم CLI با استفاده از argparse بسازیم:

import argparse

def main():
    parser = argparse.ArgumentParser(description="Instagram Downloader")
    parser.add_argument("--post", help="Download single post by URL")
    parser.add_argument("--profile", help="Download entire profile")
    parser.add_argument("--stories", help="Download stories of user", action="store_true")
    args = parser.parse_args()

    if args.post:
        download_post(args.post)
    if args.profile:
        download_profile(args.profile)
    if args.stories:
        download_stories(args.profile)

اینطوری با اجرای `python downloader.py --profile nasa` ابزار آماده استفاده می‌شه 🚀


11. نکات حرفه‌ای و بهینه‌سازی 💡

  • برای لاگ‌گیری حرفه‌ای از logging استفاده کن.
  • حداکثر نرخ درخواست (Rate Limit) رو رعایت کن تا بلاک نشی.
  • دانلود فقط محتوای جدید با fast_update=True.
  • پوشه‌بندی منظم: تصاویر، ویدیو، استوری جدا بشن.
  • از os.makedirs(exist_ok=True) برای ساخت پوشه ایمن استفاده کن.
  • ری‌استارت خودکار در زمان خطا با while True + sleep.

12. رعایت قوانین و محرمانگی 🔐

مهم: این ابزار فقط برای استفاده شخصی یا با رضایت صاحب محتوا استفاده بشه. دانلود محتوای دیگران بدون اجازه، نقض قوانین اینستاگرامه و ممکنه مشکلات قانونی داشته باشه. همیشه به حریم خصوصی احترام بذار.


جمع‌بندی نهایی 🌟

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

اگه سوال یا ایده خاصی درباره توسعه بیشتر داری، حتماً کامنت کن تا باهم پیش ببریم. موفق باشی همیشه و هیچ‌وقت دست از خلاقیت برندار! 🍀



2
user نوشته شده توسط علی سلیمی از طراحان مسترپای


دیدگاه


برای ثبت دیدگاه، وارد شوید