عن المشروع

discolike-python هو SDK وCLI الرسمي لواجهة برمجة تطبيقات DiscoLike، وهو محرك بحث أعمال يفهرس أكثر من 80 مليون موقع ويب للأعمال في جميع أنحاء العالم عبر 50 لغة. يحتوي المستودع على حزمتين: discolike (مكتبة SDK) وdiscolike-cli (واجهة سطر الأوامر الطرفية، والتي تعتمد على SDK). يتطلب كلاهما Python 3.10+. يوفر SDK عميلاً مكتوبًا (Discolike) ونظيرًا غير متزامن (AsyncDiscolike) للتفاعل مع واجهة برمجة تطبيقات DiscoLike. تشمل القدرات الأساسية اكتشاف الشركات المشابهة بناءً على نص ICP والعبارات ومكدس التقنية والجغرافيا وأكثر من 40 عامل تصفية آخر؛ وعدّ القطاعات قبل سحبها؛ ومطابقة أسماء الشركات غير الواضحة (مع رقم الهاتف والمدينة والولاية اختياريًا) مع النطاقات في وضع فردي أو CSV بالجملة؛ وإثراء قوائم نطاقات CSV ببيانات DiscoLike؛ وتقسيم قوائم النطاقات تلقائيًا؛ والتحقق من صحة قوائم النطاقات مقابل تعريفات ICP؛ واسترداد ملفات تعريف الشركات الكاملة مع البيانات الديموغرافية والدرجات وبيانات النمو وعمليات إعادة التوجيه والبائعين والشركات التابعة؛ والبحث والاستعلام والمطابقة واكتشاف جهات الاتصال في الشركات المستهدفة؛ وتشغيل أبحاث DiscoGen على مجموعات من النطاقات مع تمكين البحث على الويب. يدعم المصادقة ثلاث طرق: التسجيل (يفتح حسابًا من بريد إلكتروني واسم دون متصفح، مع تأكيد المالك عبر البريد الإلكتروني)، وتسجيل الدخول عبر OAuth (تدفق رمز تفويض PKCE قائم على المتصفح مع إعادة توجيه loopback، أو وضع بدون رأس يطبع عنوان URL)، ومفتاح API (عبر متغير البيئة DISCOLIKE_API_KEY أو ملف إعداد CLI أو معلمة صريحة). يتم تحديث بيانات اعتماد OAuth بشكل استباقي خلال 60 ثانية من انتهاء الصلاحية ومرة أخرى بعد تلقي 401. يدعم العميل أيضًا استخدام httpx2.Client أو httpx2.AsyncClient الخاص بك. يتم إنشاء جميع نماذج الطلبات من مواصفات OpenAPI للمنصة ويتم التحقق منها محليًا باستخدام Pydantic قبل إرسال أي طلب، لذا فإن قيم enum الخاطئة أو الأرقام خارج النطاق لا تكلف أبدًا رحلة ذهاب وإياب. جميع الاستجابات هي نماذج Pydantic مكتوبة. ترث الأخطاء من DiscolikeError مع فئات فرعية محددة للمصادقة والوصول إلى الخطة وعدم العثور والخادم وحد المعدل والتحقق وفشل اتصال API. يتم إعادة محاولة حالات الفشل المؤقتة تلقائيًا (3 محاولات افتراضيًا). تعيد العمليات المجمعة طويلة التشغيل (match.bulk وsegment وvalidate_icp وcontacts.bulk_match) مقبض Job بدلاً من الحظر. يمنع Job.wait() التنفيذ حتى الاكتمال، ويستقصي Job.status() دون حظر، ويلغي Job.cancel(). في وظائف عائلة DiscoGen، يحمل JobStatus الذي يتم إرجاعه تحذيرات وestimated_cost وcost_metadata بما في ذلك الاستخدام لكل نموذج وإدخالات مزود البحث. JobTimeoutError هو حد انتظار من جانب العميل فقط — تستمر المهمة في العمل على الخادم، لذا يمكن استدعاء wait() مرة أخرى لاستئناف الانتظار. تعكس CLI قدرات SDK مع أوامر للاكتشاف والعد والمطابقة والاستخراج والتحقق من ICP والإلحاق والتقسيم والتسجيل، بالإضافة إلى مجموعات أوامر للمصادقة والشركة وجهات الاتصال وDiscoGen والاستعلامات والحساب ومزودي البحث ومزودي LLM. تُطبع النتائج كـ JSON إلى stdout افتراضيًا، مع --format table لإخراج قابل للقراءة البشرية عندما يكون stdout هو TTY. تقبل نقاط النهاية غير المتزامنة --wait للحظر حتى انتهاء المهمة، أو تُرجع task_id للاستقصاء. رموز الخروج موحدة: 0 نجاح، 1 خطأ خادم، 2 خطأ تحقق، 3 خطأ مصادقة/خطة، 4 حد معدل، 5 خطأ شبكة، 6 غير موجود. يتم تنظيم المستودع كمساحة عمل uv مع عضوين: packages/discolike (SDK) وpackages/discolike-cli (CLI). يستخدم التطوير pytest للاختبار وruff للفحص وسكربت توليد الكود (scripts/gen_requests.py) لإعادة إنشاء نماذج الطلبات من مواصفات OpenAPI. يحتوي مجلد examples/ على سكربتات قابلة للتشغيل لسير العمل الشائعة بما في ذلك مطابقة صادرات جهات اتصال CRM مع معرّفات شخصيات DiscoLike مع نقاط تفتيش واستئناف، والعثور بالجملة على رسائل البريد الإلكتروني للعمل من CSV، واكتشاف الشركات حسب ICP ثم إثرائها باستخدام DiscoGen. المشروع مرخص بموجب MIT.