عن المشروع

Defuddle هي مكتبة JavaScript تستخرج المحتوى الرئيسي من صفحات الويب، وتزيل الفوضى مثل التعليقات، والأشرطة الجانبية، والرؤوس، والتذييلات. تُعيد HTML أو Markdown نظيفين، مما يجعلها مفيدة لقص الويب، وأوضاع القراءة، أو تحليل المحتوى. ## الميزات الرئيسية - **استخراج المحتوى**: يكتشف ويستخرج المحتوى الأساسي من الصفحة تلقائياً، مع إزالة العناصر غير الأساسية. - **توحيد HTML**: يوحد العناوين، وكتل الكود، والهوامش، والرياضيات، والتنبيهات لإخراج متسق. - **استخراج البيانات الوصفية**: يستخرج العنوان، والمؤلف، والوصف، وتاريخ النشر، وبيانات schema.org. - **حزم متعددة**: Core (للمتصفح)، Full (تضيف تحويل الرياضيات/Markdown)، و Node.js (تعمل مع أي تطبيق DOM). - **أداة CLI**: تحلل عناوين URL، أو ملفات، أو stdin مباشرة من الطرفية. - **وضع التصحيح**: تسجيل مفصل وتتبع الإزالة لتشخيص مشاكل الاستخراج. - **خط أنابيب قابل للتكوين**: تبديل خطوات المعالجة الفردية (مثل إزالة العناصر المخفية، إزالة الصور). ## أمثلة الاستخدام ### المتصفح ```javascript import Defuddle from 'defuddle'; const defuddle = new Defuddle(document); const result = defuddle.parse(); console.log(result.content); // HTML نظيف ``` ### Node.js (مع linkedom أو JSDOM) ```javascript import { parseHTML } from 'linkedom'; import { Defuddle } from 'defuddle/node'; const { document } = parseHTML(html); const result = await Defuddle(document, 'https://example.com/article', { markdown: true }); ``` ### CLI ```bash npx defuddle parse page.html --markdown npx defuddle parse https://example.com/article --json cat page.html | npx defuddle parse --output result.html ``` ## كائن الاستجابة يعيد كائناً بخصائص مثل `title`، `author`، `content`، `description`، `domain`، `favicon`، `image`، `language`، `published`، `site`، `wordCount`، والمزيد. ## الخيارات الخيارات الرئيسية تشمل `markdown` (تحويل إلى Markdown)، `debug` (تمكين التسجيل)، `removeHiddenElements`، `removeSmallImages`، `contentSelector` (تجاوز الكشف التلقائي)، و `useAsync` (السماح بالبديل من طرف ثالث لتطبيقات SPA). ## التطوير البناء بـ `npm install && npm run build`. يستخدم المشروع خط أنابيب من الخطوات لتقييم المحتوى، وإزالة العناصر، والتوحيد. ## خدمات الطرف الثالث عند تمكين `useAsync` وعدم العثور على محتوى محلي (مثل تطبيقات SPA المعروضة من جانب العميل)، قد يجلب Defuddle من واجهات برمجة تطبيقات طرف ثالث مثل FxTwitter لمحتوى X/Twitter. تعطيل بـ `useAsync: false`. ## التصحيح تمكين `debug: true` للحصول على حقل `debug` مع `contentSelector` (مسار CSS للمحتوى الرئيسي) و `removals` (قائمة العناصر المزالة مع الأسباب). يساعد هذا في تشخيص سبب إزالة المحتوى أو الاحتفاظ به بشكل غير صحيح.