summaryrefslogtreecommitdiff
path: root/ContentFilters.md
blob: ffa7d108a15bbe2ab7e93e89c8c5b3d22a304e9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
% Filters

Filters are a very powerful and flexible tool which may significantly
ease the task of extracting useful information from the sea of data that
is RSS feeds. Filters are applied to articles based on [regular
expression](http://en.wikipedia.org/wiki/Regular_expression) matches
against specified fields. After the match had been found, configured
actions are taken. Matching is case-insensitive,
[PCRE](http://php.net/manual/en/reference.pcre.pattern.syntax.php)
pattern syntax is used.

### Load order

Filters are loaded in user-specified order and applied sequentially. It
is possible to reorder filters using drag and drop. If no manual sorting
is specified, filters are sorted alphabetically according to user
configured caption. If no caption is specified for any filter, loading
order is not guaranteed.

### Filter objects

Each filter object may contain an arbitrary amount of regular expression
rules and actions. Each expression may have inverse flag set, which
inverts matching result. On top of that, filter may also have an inverse
flag, which inverts the final matching.

- Filter object may be configured to successfully match when either one or
all rules match.
- Regular expressions may be matched against several article fields, such
as, title, content, author, etc.
- Do not include delimiters (e.g. <code>/</code>) when writing regular
expressions.

### Matching articles and applying actions

Filter matching is performed during feed processing.

Some actions may be applied only when the article is initially imported
from the feed. Other actions may be applied every time article is seen
in the originating feed. It is suggested to only rely on filters
applying to articles imported after the filter had been created - they will
not retroactively apply to your article database.

Several actions are available:

1. ``Delete article`` - do not import article from the feed, does not
actually delete anything from the database
2. ``Mark as read`` - imports article automatically marked as read
3. ``Set starred`` - sets article starred automatically on import
4. ``Assign tags`` - assigns a comma-separated list of custom tags on import
5. ``Publish article`` - sets article published automatically on import
6. ``Modify score`` ([Scoring](Scoring)) - modifies article overall score based on
the parameter, a signed integer number. Final article score is calculated after all filters had been applied and is a sum of all matched scoring actions.
7. ``Assign label`` - assigns specified label to the article on import
8. ``Stop / Do nothing`` - stops further filter processing for this article, no following filters will be checked nor rules applied.
9. ``Invoke plugin`` - runs a plugin action when filter is matched
10. ``Ignore tags`` - a comma-separated list of tags which will be skipped on article import

After all matching filters had been computed for the article, it is either imported with modifications as specified by the rules, or dropped if `Delete article` action has been found.

### Testing filters

Filter test dialog may not give entirely accurate results, especially for complex filters. It is suggested to test filters using ``Feed debugger`` if you feel that some filter is somehow misfiring on a specific feed.

### FAQ

#### I'm trying to make a filter which works conditionally based on an action of a previous filter, and it doesn't work. What gives?

It's a design limitation. All actions for an article are applied together, once. [Click here](https://community.tt-rss.org/t/filter-on-labels/4195/2) for a detailed explanation.