martinrotter / rssguard

Feed reader (and podcast player) which supports RSS/ATOM/JSON and many web-based feed services.
GNU General Public License v3.0
1.64k stars 125 forks source link

manually execute a filter #261

Closed pcause closed 3 years ago

pcause commented 4 years ago

It would be useful to manually be able to execute a filter. Suppose there are a flood of stories with "hurricane" in the title and I decide I don't want to see them because I am not in the path. I could create a filer to look for that word in the title and execute on selected feeds/categories and mark all of them read or even remove them from the database (return code 2 would mean this on a manual filter??) PS: Allow the manul run of a filter to be either for all items in the selected list of just unread items.

martinrotter commented 4 years ago

Question, should 2 return code totally PURGE message (which will eventually be downloaded again if it is in online feed) from the database or just mark it DELETED (just like pushing DEL key in msg list -> message gets moved to "recycle bin").

Also, which message should be ran through the filter, just non-deleted message or also messages from recycle bin?

pcause commented 4 years ago

tt-tss filters have an action that says stop processing. ig you process top to bottom for all filter that match a feed/category you can then perhaps add something in the message structure that says stop? using an enum for the return where I can OR the values gives lots of flexibility for defining actions.

martinrotter commented 4 years ago

@pcause Can you please create new ticket for "since" TT-RSS option? Although I look into the docs and do not see any "since" field in "getHeadlines" method, can you enlighten me?

@pcause Can you please rephrase second part on "stopping" feature? I did not understand it correctly.

@pcause One more thing. How, visually, should this feature in fact be implemented? Just add buttons into "Message filter" dialog? Like "Run on selected feeds", "Run on checked feeds", "Run on all feeds"? (I would probably prefer this solution....)

Or perhaps add this into main window's feed tree context menu for feed items (and into main menu)? Lemme know.

pcause commented 4 years ago

my mistake, it is since_id. i thought i saw a since option at one point in the code, but it isn't there. sorry

stop processing means that you don't run the other filters. in tt-rss filters are run in order (top -> bottom). so suppose you have 5 filters that match a feed and the third returns "stop processing", you don't execute filters 4 and 5.

As for the visual for run filter, in the filters UI, I would have a button to run the selected filter, as defined. so if it just runs on 5 selected feeds that is what you do. I'm not sure that it makes sense to have an option in the main feed tree as all the matching filters have been run and my use case only happens from the filters UI - create new filter and run against existing feed(s). What would be useful is to have a context menu item on a feed item that opens filters UI so I can create a filter as I see something in an item that makes me want to create a filter.

martinrotter commented 3 years ago

Subtickets:

pcause commented 3 years ago

thanks for this.

martinrotter commented 3 years ago

OK, this is done, pls test with latest dev. build. I will update documentation and release this soon. Features:

  1. All changes made by manual filter execution are synchronized back to server (read,starred,label changes).
  2. Message can be moved to recycle bin by setting its attribute "isDeleted" to true.
  3. Only non-recycle-bin messages are processed when you hit "Process checked feeds".
martinrotter commented 3 years ago

OK, purging is there too. Docs are updated, check them out. Should all work, I did some testing.