Skip to content

Repository files navigation

🛍️ ScraperShop Telegram Bot

یک ربات تلگرام برای جستجو و مقایسه‌ی قیمت محصولات در Digikala, eBay و سایر وب‌سایت‌های فروشگاهی.
این پروژه با هدف ایجاد یک ابزار سریع، ایمن و مقیاس‌پذیر برای دریافت اطلاعات محصولات طراحی شده است.


📘 معرفی

ScraperShop یک ربات تلگرام است که با دریافت نام محصول، آن را در فروشگاه‌های مختلف جستجو می‌کند و نتایج را با جزئیات کامل (نام، قیمت و لینک خرید) در قالب HTML نمایش می‌دهد.
سیستم از مدیریت صف هوشمند (با Semaphore و Queue) برای اجرای همزمان درخواست‌ها بهره می‌برد تا پایداری و امنیت حفظ شود.


👥 سازندگان

نام لینک
Ali Farisat 🔗 GitHub
Sadegh Kdd 🔗 GitHub

⚙️ ویژگی‌ها

  • پشتیبانی از چندین فروشگاه:
    • 🔹 Digikala
    • 🔹 eBay
    • 🔹 Global (با پشتیبانی از لینک مستقیم + نام محصول)
  • سیستم ضد اسپم برای کاربران
  • مدیریت همزمان جستجوها با ManagerQueue
  • قالب‌بندی HTML تمیز در نتایج
  • ثبت دقیق لاگ‌ها در فایل مجزا
  • سیستم لغو عملیات (Cancel) برای هر کاربر
  • پشتیبانی از چند زبان در کدنویسی (فارسی/انگلیسی)

🧩 ساختار فایل‌ها

ScraperShop/
│
├── bot.py                      # فایل اصلی ربات تلگرام
│
├── digikala_optimized.py       # ماژول مخصوص جستجو در Digikala
│
├── ebay_optimized.py           # ماژول مخصوص جستجو در eBay
│
├── web_mimic_optimized.py      # (اختیاری) ماژول جهانی برای لینک‌ها
│
├── requirements.txt            # لیست کتابخانه‌های مورد نیاز
│
└── README.md                   # مستندات پروژه

📦 نصب و اجرا

1️⃣ پیش‌نیازها

قبل از هر چیز، اطمینان حاصل کنید Python نسخه‌ی 3.10+ روی سیستم شما نصب است.

2️⃣ نصب وابستگی‌ها

pip install -r requirements.txt

در صورت نداشتن Playwright، نصب آن نیز ضروری است:

pip install playwright
playwright install

3️⃣ تنظیم توکن ربات

در فایل bot.py، مقدار زیر را با توکن ربات خود جایگزین کنید:

API_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"

4️⃣ اجرای ربات

python bot.py

اگر از VS Code استفاده می‌کنید، کافی‌ست روی فایل راست‌کلیک کنید و گزینه‌ی
Run Python File in Terminal را بزنید.


🧠 نحوه استفاده در تلگرام

  1. دستور /start را بفرستید.
  2. گزینه‌ی 🛒 فروشگاه‌ها را انتخاب کنید.
  3. یکی از فروشگاه‌ها را برگزینید:
    • 🔎 Digikala
    • 🔎 eBay
    • 🌍 Global (link + name)
  4. نام محصول یا لینک را ارسال کنید.
  5. چند ثانیه صبر کنید تا نتایج با فرمت HTML دریافت شوند.

🧰 نمونه خروجی

1. <a href="https://www.digikala.com/product/...">گوشی موبایل سامسونگ A55</a>
💰 قیمت: 24,300,000 تومان

2. <a href="https://www.digikala.com/product/...">هدفون بی‌سیم شیائومی</a>
💰 قیمت: 1,250,000 تومان

🧠 معماری سیستم

کاربر ← Telegram Bot API ← bot.py ← Scraper Manager ← digikala_optimized / ebay_optimized
  • هر جستجو در صف (Queue) قرار می‌گیرد.
  • اگر ظرفیت پردازش فعال پر باشد، کاربر در صف انتظار می‌ماند.
  • سیستم ضد اسپم از ارسال بیش از حد درخواست جلوگیری می‌کند.
  • در انتهای پردازش، نتیجه در قالب HTML برای کاربر ارسال می‌شود.

🧾 فایل لاگ‌ها

هر ماژول اسکرپر (مثل digikala_optimized.py یا ebay_optimized.py) لاگ‌های مخصوص خود را در فایل مجزا ذخیره می‌کند:

digikala_scraper.log
ebay_scraper.log

در این فایل‌ها، زمان، نوع خطا، تلاش‌های مجدد و نتایج موفق ثبت می‌شوند.


🔒 امنیت و پایداری

  • اجرای ایمن توابع با مدیریت Exception
  • کنترل همزمانی با Semaphore و Queue
  • محدودسازی سرعت ارسال پیام‌ها (Rate Limiter)
  • حذف خودکار state کاربران پس از پایان عملیات

📄 مجوز

این پروژه تحت مجوز GPL-3.0 license منتشر شده است.
استفاده، ویرایش و انتشار مجدد آن با ذکر نام سازندگان مجاز است.


💬برای ارتباط با توسعه‌دهنده: farisatali12@gmail.com

🌟 حمایت از پروژه

اگر این پروژه برایتان مفید بود، حتماً به آن ⭐ بدهید تا در GitHub بیشتر دیده شود.

About

A fast and secure Telegram bot that scrapes product information from Digikala, eBay, and global markets. featuring async task handling, anti-spam protection, and clean HTML-formatted results.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages