.\" Man page generated from reStructuredText. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "URLWATCH-FILTERS" "5" "28 اکتبر 2024" "urlwatch " "مستندات urlwatch" .SH "نام (NAME)" urlwatch-filters \- فیلتر کردن خروجی و داده‌های تفاوت (diff) در وظایف urlwatch .SH "خلاصه دستور (SYNOPSIS)" .sp urlwatch \-\-edit .SH "توضیحات (DESCRIPTION)" .sp برای هر وظیفه می‌توان دو مرحله فیلتر پیکربندی کرد که یک یا چند فیلتر به‌ترتیب پس از یکدیگر پردازش می‌شوند: .INDENT 0.0 .IP \(bu 2 اعمال‌شده بر روی صفحه بارگیری‌شده قبل از محاسبه تفاوت تغییرات (\fBfilter\fP) .IP \(bu 2 اعمال‌شده بر روی نتیجه تفاوت (diff) قبل از گزارش تغییرات (\fBdiff_filter\fP) .UNINDENT .sp هنگام ایجاد خط‌لوله فیلتر خود، ممکن است بخواهید پیش‌نمایشی از خروجی فیلترشده را مشاهده کنید. می‌توانید ابتدا وظیفه خود را پیکربندی کرده و سپس urlwatch را با دستور \fB\-\-test\-filter\fP اجرا کنید و اندیس (از \fB\-\-list\fP) یا نشانی اینترنتی/مکان وظیفه مورد آزمایش را به آن ارسال نمایید: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C urlwatch \-\-test\-filter 1 # آزمایش اولین وظیفه در فهرست urlwatch \-\-test\-filter https://example.net/ # آزمایش وظیفه با نشانی داده‌شده .ft P .fi .UNINDENT .UNINDENT .sp خروجی این دستور، متن ساده فیلترشده وظیفه خواهد بود؛ این همان خروجی است که (در اجرای واقعی urlwatch) ورودی الگوریتم تفاوت (diff) خواهد بود. .sp فیلتر \fBfilter\fP فقط روی محتوای جدید اعمال می‌شود، زیرا محتوای قدیمی قبلاً هنگام دریافت فیلتر شده است. این بدان معناست که تغییرات در \fBfilter\fP هنگام گزارش محتوای تغییرنیافته قابل مشاهده نیستند (برای جزئیات به \fI\%Display\fP مراجعه کنید)، و خروجی تفاوت (diff) بین (محتوای قدیمی با فیلتر در زمان دریافت محتوای قدیمی) و (محتوای جدید با فیلتر فعلی) خواهد بود. .sp هنگامی که urlwatch حداقل ۲ تصویر لحظه‌ای (snapshot) تاریخی از یک وظیفه را جمع‌آوری کرد (دو وضعیت متفاوت از یک صفحه وب)، می‌توانید از گزینه خط فرمان \fB\-\-test\-diff\-filter\fP برای آزمایش تنظیمات \fBdiff_filter\fP خود استفاده کنید؛ این گزینه از داده‌های تاریخی ذخیره‌شده به صورت محلی در حافظه موقت (cache) استفاده می‌کند. .SH "فیلترهای توکار (BUILT-IN FILTERS)" .sp فهرست فیلترهای توکار را می‌توان با استفاده از دستور زیر دریافت کرد: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C urlwatch \-\-features .ft P .fi .UNINDENT .UNINDENT .sp در حال حاضر، فیلترهای زیر به صورت توکار موجود هستند: .INDENT 0.0 .IP \(bu 2 \fBbeautify\fP: زیباسازی و مرتب‌سازی HTML .IP \(bu 2 \fBcss\fP: فیلتر کردن XML/HTML با استفاده از انتخاب‌گرهای CSS .IP \(bu 2 \fBcsv2text\fP: تبدیل CSV به متن ساده .IP \(bu 2 \fBelement\-by\-class\fP: دریافت تمام عناصر HTML بر اساس کلاس (class) .IP \(bu 2 \fBelement\-by\-id\fP: دریافت یک عنصر HTML بر اساس شناسه (ID) آن .IP \(bu 2 \fBelement\-by\-style\fP: دریافت تمام عناصر HTML بر اساس استایل (style) .IP \(bu 2 \fBelement\-by\-tag\fP: دریافت یک عنصر HTML بر اساس برچسب (tag) آن .IP \(bu 2 \fBformat\-json\fP: تبدیل به JSON قالب‌بندی‌شده .IP \(bu 2 \fBgrep\fP: فیلتر کردن و نگه‌داشتن تنها خطوط منطبق با یک عبارت باقاعده .IP \(bu 2 \fBgrepi\fP: حذف خطوط منطبق با یک عبارت باقاعده .IP \(bu 2 \fBhexdump\fP: تبدیل داده‌های دودویی به قالب hex dump .IP \(bu 2 \fBhtml2text\fP: تبدیل HTML به متن ساده .IP \(bu 2 \fBpdf2text\fP: تبدیل PDF به متن ساده .IP \(bu 2 \fBpretty\-xml\fP: چاپ خوانا و مرتب (pretty-print) XML .IP \(bu 2 \fBical2text\fP: تبدیل \fI\%iCalendar\fP <\fBhttps://en.wikipedia.org/wiki/ICalendar\fP> به متن ساده .IP \(bu 2 \fBocr\fP: تبدیل متن درون تصاویر به متن ساده با استفاده از Tesseract OCR .IP \(bu 2 \fBre.sub\fP: جایگزینی متن با عبارات باقاعده با استفاده از re.sub پایتون .IP \(bu 2 \fBre.findall\fP: یافتن تمام تطابق‌های غیرهمپوشان با استفاده از re.findall پایتون .IP \(bu 2 \fBreverse\fP: معکوس کردن موارد ورودی .IP \(bu 2 \fBsha1sum\fP: محاسبه چکسام SHA\-1 محتوا .IP \(bu 2 \fBshellpipe\fP: فیلتر کردن با استفاده از یک دستور شل .IP \(bu 2 \fBsort\fP: مرتب‌سازی موارد ورودی .IP \(bu 2 \fBremove\-duplicate\-lines\fP: حذف خطوط تکراری (حساس به حروف بزرگ و کوچک) .IP \(bu 2 \fBstrip\fP: حذف فاصله‌های خالی ابتدا و انتهای متن .IP \(bu 2 \fBstriplines\fP: حذف فاصله‌های خالی ابتدا و انتهای هر خط .IP \(bu 2 \fBxpath\fP: فیلتر کردن XML/HTML با استفاده از عبارات XPath .IP \(bu 2 \fBjq\fP: فیلتر کردن، تبدیل و استخراج مقادیر از JSON .UNINDENT .SH "استخراج عناصر از صفحه وب (PICKING OUT ELEMENTS FROM A WEBPAGE)" .sp شما می‌توانید تنها یک عنصر خاص HTML را با فیلتر توکار استخراج کنید، برای مثال جهت استخراج \fB
.../
\fP از یک صفحه، می‌توانید از مورد زیر در \fBurls.yaml\fP خود استفاده کنید: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C url: http://example.org/idtest.html filter: \- element\-by\-id: something .ft P .fi .UNINDENT .UNINDENT .sp همچنین می‌توانید فیلترها را زنجیره‌سازی کنید، تا بتوانید html2text را روی نتیجه اجرا نمایید: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C url: http://example.net/id2text.html filter: \- element\-by\-id: something \- html2text .ft P .fi .UNINDENT .UNINDENT .SH "زنجیره‌سازی چندین فیلتر (CHAINING MULTIPLE FILTERS)" .sp فایل نمونه urls.yaml همچنین نحوه استفاده از فیلترهای توکار را نشان می‌دهد؛ در اینجا از ۳ فیلتر استفاده شده است: html2text، grep خطی و حذف فاصله‌های خالی برای دریافت تنها یک فیلد اطلاعاتی خاص از یک صفحه وب: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C url: https://example.net/version.html filter: \- html2text \- grep: \(dqCurrent.*version\(dq \- strip .ft P .fi .UNINDENT .UNINDENT .SH "استخراج فقط برچسب از یک صفحه (EXTRACTING ONLY THE TAG OF A PAGE)" .sp اگر می‌خواهید فقط برچسب body را استخراج کنید، می‌توانید از این فیلتر استفاده کنید: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C url: https://example.org/bodytag.html filter: \- element\-by\-tag: body .ft P .fi .UNINDENT .UNINDENT .SH "فیلتر کردن بر اساس عبارت XPATH (FILTERING BASED ON AN XPATH EXPRESSION)" .sp برای فیلتر کردن بر اساس یک عبارت \fI\%XPath\fP <\fBhttps://www.w3.org/TR/1999/REC-xpath-19991116/\fP>، می‌توانید از فیلتر \fBxpath\fP به این صورت استفاده کنید: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C url: https://example.net/xpath.html filter: \- xpath: /html/body/marquee .ft P .fi .UNINDENT .UNINDENT .sp این فیلتر تنها عناصر \fB\fP را که مستقیماً زیر عنصر \fB\fP قرار دارند (که آن هم به نوبه خود باید زیر عنصر \fB\fP سند باشد) فیلتر کرده و بقیه موارد را حذف می‌کند. .sp برای نمونه‌های دیگر، صفحه \fI\%XPath Examples\fP <\fBhttps://msdn.microsoft.com/en-us/library/ms256086(v=vs.110).aspx\fP> متعلق به مایکروسافت را مشاهده کنید. شما همچنین می‌توانید XPath یک گره \fB\fP را در ابزارهای توسعه‌دهنده کرومیوم/گوگل کروم با کلیک راست روی گره و انتخاب \fBcopy XPath\fP پیدا کنید. .SH "فیلتر کردن بر اساس انتخاب‌گرهای CSS (FILTERING BASED ON CSS SELECTORS)" .sp برای فیلتر کردن بر اساس یک \fI\%انتخاب‌گر CSS\fP <\fBhttps://www.w3.org/TR/2011/REC-css3-selectors-20110929/\fP>، می‌توانید از فیلتر \fBcss\fP به این صورت استفاده کنید: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C url: https://example.net/css.html filter: \- css: ul#groceries > li.unchecked .ft P .fi .UNINDENT .UNINDENT .sp این دستور تنها برچسب‌های \fB
  • \fP را که مستقیماً زیر عناصر \fB