سلام رفیق! 🤩 امروز قراره یه پروژه خیلی باحال بسازیم: دانلودر اینستاگرام با پایتون. هدفمون ساخت ابزاری هست که بتونی عکس، ویدیو، استوری یا پروفایل هر پیجی رو دانلود کنی. این آموزش از اول تا آخرش گامبهگام و با تمام نکات حرفهای هست. آمادهای؟ با هم شروع میکنیم!
برای شروع دو تا کتابخونه خیلی مهم نیاز داریم:
instaloader
برای دانلود دیتا از اینستاrequests
برای دانلود مستقیم فایلها (اختیاری)برای نصبشون در ترمینال این دستورات رو بزن:
pip install instaloader requests
همچنین برای مدیریت فایل، بهتره کتابخونه os
و pathlib
رو استفاده کنیم که همیشه همراه پایتون هستن.
برای دانلود یک پست عمومی (عکس یا ویدیو)، این روش ساده و قدرتمنده:
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
هر نوع فایل پست (عکس، ویدیو، کپشن و ...) ذخیره میشه.
اگه بخوای همه پستهای یه پیج عمومی (مثلاً @nasa) رو دانلود کنی:
import instaloader
L = instaloader.Instaloader()
username = "nasa"
L.download_profile(username, profile_pic=True, posts=True, fast_update=True)
گزینه fast_update
باعث میشه تنها پستهای جدید دانلود بشن و کارت بهصرفهتر بشه.
برای دانلود از پیج خصوصی، حتماً باید لاگین کنی. کد کامل:
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)
با این روش اگر فالوبک داشته باشی، همه محتواش دانلود میشه.
برای دانلود پرتره پروفایل بدون دلایل دیگر:
import instaloader
L = instaloader.Instaloader()
L.download_profile("instagram", profile_pic_only=True)
عکس پروفایل با کیفیت کامل داخل پوشه ذخیره میشه.
برای دانلود استوری، ابتدا باید لاگین باشی:
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
ذخیره میشن و اگر مورد جدیدی اضافه بشه با اجرای دوباره، تنها اون دانلود میشه.
برای این نوع محتوا هم میشه از 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
قرار میگیرن.
برای اینکه برنامه پایدار باشه و قطع نشه:
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)
با این کار اگر مشکلی پیش بیاد، برنامه ادامه میده یا متوقف میشه با ارور معنیدار.
میتونی با ترکیب 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)
اینطوری هر ۶ ساعت محتوای جدید بررسی و دانلود میشه.
برای استفاده سادهتر از ابزار، میتونیم 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` ابزار آماده استفاده میشه 🚀
logging
استفاده کن.fast_update=True
.os.makedirs(exist_ok=True)
برای ساخت پوشه ایمن استفاده کن.while True + sleep
.مهم: این ابزار فقط برای استفاده شخصی یا با رضایت صاحب محتوا استفاده بشه. دانلود محتوای دیگران بدون اجازه، نقض قوانین اینستاگرامه و ممکنه مشکلات قانونی داشته باشه. همیشه به حریم خصوصی احترام بذار.
خب رفیق، این آموزش فوقالعاده و جامع بود! حالا ابزار قدرتمندی داری که عکس، ویدیو، استوری یا پروفایل اینستاگرام رو دانلود میکنه. از نصب ساده شروع کردیم، به نکات پیشرفته رسیدیم. حالا وقتشه خودت یه UI براش درست کنی، یا این رو تبدیل به روبات تلگرام کنی و... کلی کارای باحال میتونی باهاش انجام بدی.
اگه سوال یا ایده خاصی درباره توسعه بیشتر داری، حتماً کامنت کن تا باهم پیش ببریم. موفق باشی همیشه و هیچوقت دست از خلاقیت برندار! 🍀