Tiny Tiny RSS: Community

How to organize feeds? categories, tags, labels, scores, filters and their synergy

I use Firefox and for me at least it’s very very specific how fast I move mouse and exactly where on page I’m moving (dragging) else I won’t get “little green arrow” to show where feed its going to be put after dragging.
I don’t if that’s what every else using Firefox experiences???

You are right. It still works on Firefox but only if I start dragging the filter on the check mark and if the mouse cursor is in the area above the target checkmark (orange on screenshot).

Using Chrome I can grab the filter anywhere and will always see the green drop arrow within the marked area.

Exactly!!! Sorry I should’ve stated where I was clicking and dragging from.

Also, the Chrome feature is how Firefox use to work.

If using a single filter which inverse matching is better?"

Screenshot_2019-05-22%20Tiny%20Tiny%20RSS%20Preferences

OR

Screenshot_2019-05-22%20Tiny%20Tiny%20RSS%20Preferences(1)

I actually never had a use case for the generic Inverse matching option but for a single filter the Inverse regular expression matching is probably better as it will be shown in red and thus easier to spot.

Do you ever find that your filters are not grabbing everything?

I have a couple of technology feeds that I read and changed my filters to a single filter looking for words in Title such as Linux, Arch, Centos, Nginx, Python, Bash, etc.

I noticed I wasn’t getting very many articles. What did come through was perfectly filtered to match my “keywords”.

I went to look at a few of the sites and there were articles with my “keywords” in the title(s) that never came through. I have my cron job to update feeds set to run every 30 mins at top and bottom of the hour. I don’t understand why some are being missed.

If a site serves 10 items in their RSS feed, but publishes 15 items in 20 minutes, you will miss some because you’re only checking every 30 minutes.

There was a news site I used to follow that only showed 10 items in their feed, but routinely published more than that number in as little as 10 minutes. Busy sites need more items in their feeds (which you can’t control) or need to be checked more frequently (which you can control).

Also consider (and it’s probably unlikely if you’re just matching simple words) that content can be HTML-encoded entities, which wouldn’t match against the filter’s regular expressions. It’s probably not the case but I’m mentioning it because it’s a technical possibility.

Also try the feed debugger to check if the missing articles show up there and which filters are applied.

I’ve tried playing with update times and that didn’t seem to help.

Here’s part of a debugger output just to show it’s “storing” some articles but “filtering out” others even though it’s the same keyword in the title. i.e. linux, centos, python

Do you see something obvious that I’m missing (which is very possible with my brain)?

[18:46:47/820] start
[18:46:47/820] local cache will not be used for this feed
[18:46:47/820] last unconditional update request: 2019-05-27 11:00:14
[18:46:47/820] stored last modified for conditional request: Sun, 26 May 2019 22:50:18 GMT
[18:46:47/820] fetching [https://linuxize.com/index.xml] (force_refetch: 1)…
[18:46:55/820] fetch done.
[18:46:55/820] source last modified: Sun, 26 May 2019 22:50:18 GMT
[18:46:55/820] saving cache/feeds/9b3147f6d080032dedfc261fd76632bc6b90067a.xml
[18:46:55/820] language: english
[18:46:55/820] processing feed data…
[18:46:55/820] site_url: https://linuxize.com/
[18:46:55/820] feed_title: Linux Tips, Tricks and Tutorials on Linuxize
[18:46:55/820] checking favicon…
[18:46:55/820] loading filters & labels…
[18:46:55/820] 2 filters loaded.
[18:46:55/820] processing articles…
[18:46:55/820] guid 2,https://linuxize.com/post/how-to-install-plex-media-server-on-raspberry-pi/ / SHA1:bcd117603c69a48a93e09813c0ca7f876ff7263c
[18:46:55/820] orig date: 1558838017
[18:46:55/820] date 1558838017 [2019/05/26 02:33:37]
[18:46:55/820] title How To Install Plex Media Server on Raspberry Pi
[18:46:55/820] link https://linuxize.com/post/how-to-install-plex-media-server-on-raspberry-pi/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: a3454e6b16c93bcdf8325cf3fac75e4a8a57643d [stored=a3454e6b16c93bcdf8325cf3fac75e4a8a57643d]
[18:46:55/820] stored article seems up to date [IID: 38299], updating timestamp only
[18:46:55/820] guid 2,https://linuxize.com/post/how-to-create-a-bootable-centos-7-usb-stick-on-linux/ / SHA1:67840b277e60368450820e44c970187b89c4dff6
[18:46:55/820] orig date: 1558813907
[18:46:55/820] date 1558813907 [2019/05/25 19:51:47]
[18:46:55/820] title How to Create Bootable CentOS 7 USB Stick on Linux
[18:46:55/820] link https://linuxize.com/post/how-to-create-a-bootable-centos-7-usb-stick-on-linux/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: b5aadd6a532a2a4bc90f5fc726988356dd767a89 [stored=]
[18:46:55/820] hash differs, applying plugin filters:
[18:46:55/820] plugin data:
[18:46:55/820] force catchup:
[18:46:55/820] base guid [2,https://linuxize.com/post/how-to-create-a-bootable-centos-7-usb-stick-on-linux/ or SHA1:67840b277e60368450820e44c970187b89c4dff6] not found, creating…
[18:46:55/820] base guid found, checking for user record
[18:46:55/820] article is filtered out, nothing to do.
[18:46:55/820] guid 2,https://linuxize.com/post/python-check-if-file-exists/ / SHA1:b7f3a6142b5d17e3dd03bb043c13a4c70b4a9216
[18:46:55/820] orig date: 1558639907
[18:46:55/820] date 1558639907 [2019/05/23 19:31:47]
[18:46:55/820] title How to Check if a File or Directory Exists in Python
[18:46:55/820] link https://linuxize.com/post/python-check-if-file-exists/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: e9a13e566ca53a9d38a5a4dba9377441a9c9605e [stored=]
[18:46:55/820] hash differs, applying plugin filters:
[18:46:55/820] plugin data:
[18:46:55/820] force catchup:
[18:46:55/820] base guid [2,https://linuxize.com/post/python-check-if-file-exists/ or SHA1:b7f3a6142b5d17e3dd03bb043c13a4c70b4a9216] not found, creating…
[18:46:55/820] base guid found, checking for user record
[18:46:55/820] article is filtered out, nothing to do.
[18:46:55/820] guid 2,https://linuxize.com/post/how-to-install-vlc-on-centos-7/ / SHA1:d739ad432b1334455a857f75d079993ebce08a97
[18:46:55/820] orig date: 1558553507
[18:46:55/820] date 1558553507 [2019/05/22 19:31:47]
[18:46:55/820] title How to Install VLC Media Player on CentOS 7
[18:46:55/820] link https://linuxize.com/post/how-to-install-vlc-on-centos-7/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: e557294befe039e3716d12095ec08659dd61c6d4 [stored=]
[18:46:55/820] hash differs, applying plugin filters:
[18:46:55/820] plugin data:
[18:46:55/820] force catchup:
[18:46:55/820] base guid [2,https://linuxize.com/post/how-to-install-vlc-on-centos-7/ or SHA1:d739ad432b1334455a857f75d079993ebce08a97] not found, creating…
[18:46:55/820] base guid found, checking for user record
[18:46:55/820] article is filtered out, nothing to do.
[18:46:55/820] guid 2,https://linuxize.com/post/how-to-build-docker-images-with-dockerfile/ / SHA1:43a6f682598acb90c6342ae7d1f62d65c7076c6c
[18:46:55/820] orig date: 1558431107
[18:46:55/820] date 1558431107 [2019/05/21 09:31:47]
[18:46:55/820] title How to Build Docker Images with Dockerfile
[18:46:55/820] link https://linuxize.com/post/how-to-build-docker-images-with-dockerfile/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: 14b8232743c4990258c665c34adf5aa4e90f4e72 [stored=]
[18:46:55/820] hash differs, applying plugin filters:
[18:46:55/820] plugin data:
[18:46:55/820] force catchup:
[18:46:55/820] base guid [2,https://linuxize.com/post/how-to-build-docker-images-with-dockerfile/ or SHA1:43a6f682598acb90c6342ae7d1f62d65c7076c6c] not found, creating…
[18:46:55/820] base guid found, checking for user record
[18:46:55/820] article is filtered out, nothing to do.
[18:46:55/820] guid 2,https://linuxize.com/post/how-to-install-skype-on-debian-9/ / SHA1:4e67c5e60f1bc13fe46e912ac1a9d35d86d2a3fe
[18:46:55/820] orig date: 1558366307
[18:46:55/820] date 1558366307 [2019/05/20 15:31:47]
[18:46:55/820] title How to Install Skype on Debian 9
[18:46:55/820] link https://linuxize.com/post/how-to-install-skype-on-debian-9/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: f4f93c9326df1b45b5a9c00e0c8939a2184d1470 [stored=f4f93c9326df1b45b5a9c00e0c8939a2184d1470]
[18:46:55/820] stored article seems up to date [IID: 3872], updating timestamp only
[18:46:55/820] guid 2,https://linuxize.com/post/how-to-install-memcached-on-centos-7/ / SHA1:47f8d8beb32621f37c043af0930713f38da50683
[18:46:55/820] orig date: 1558286650
[18:46:55/820] date 1558286650 [2019/05/19 17:24:10]
[18:46:55/820] title How to Install Memcached on CentOS 7
[18:46:55/820] link https://linuxize.com/post/how-to-install-memcached-on-centos-7/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: 5b7bb87c79b3204afad8adefc2bc6200b8d39e0e [stored=5b7bb87c79b3204afad8adefc2bc6200b8d39e0e]
[18:46:55/820] stored article seems up to date [IID: 2192], updating timestamp only
[18:46:55/820] guid 2,https://linuxize.com/post/linux-wc-command/ / SHA1:92e74b2e80f3e0da94d9156f993bfef368f0f252
[18:46:55/820] orig date: 1558126307
[18:46:55/820] date 1558126307 [2019/05/17 20:51:47]
[18:46:55/820] title Linux Wc Command
[18:46:55/820] link https://linuxize.com/post/linux-wc-command/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: af7ab9671fc5f02e867f98cf81f8903b2bd8eccd [stored=af7ab9671fc5f02e867f98cf81f8903b2bd8eccd]
[18:46:55/820] stored article seems up to date [IID: 594], updating timestamp only
[18:46:55/820] guid 2,https://linuxize.com/post/how-to-read-a-file-line-by-line-in-bash/ / SHA1:f07caaa839c763671052d62baf291ce028306f0c
[18:46:55/820] orig date: 1558035107
[18:46:55/820] date 1558035107 [2019/05/16 19:31:47]
[18:46:55/820] title How to Read a File Line By Line in Bash
[18:46:55/820] link https://linuxize.com/post/how-to-read-a-file-line-by-line-in-bash/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: ec829dd094042500feffede0141de1d868319aa9 [stored=ec829dd094042500feffede0141de1d868319aa9]
[18:46:55/820] stored article seems up to date [IID: 595], updating timestamp only
[18:46:55/820] guid 2,https://linuxize.com/post/linux-uptime-command/ / SHA1:405e5ccf186b97d830ebe9e70c7df7fa21419cf8
[18:46:55/820] orig date: 1557937907
[18:46:55/820] date 1557937907 [2019/05/15 16:31:47]
[18:46:55/820] title Linux Uptime Command
[18:46:55/820] link https://linuxize.com/post/linux-uptime-command/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: aa7e468a735a9a73fd9fe841d613380bc8ebc4c5 [stored=aa7e468a735a9a73fd9fe841d613380bc8ebc4c5]
[18:46:55/820] stored article seems up to date [IID: 596], updating timestamp only
[18:46:55/820] guid 2,https://linuxize.com/post/how-to-enable-ssh-on-raspberry-pi/ / SHA1:beea4e44dfa4b59b45b12917fc4ccb4cdcab128b
[18:46:55/820] orig date: 1557858707
[18:46:55/820] date 1557858707 [2019/05/14 18:31:47]
[18:46:55/820] title How to Enable SSH on Raspberry Pi
[18:46:55/820] link https://linuxize.com/post/how-to-enable-ssh-on-raspberry-pi/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: d207d948b9df6e6bf88b9bd64e3e7788c3890476 [stored=d207d948b9df6e6bf88b9bd64e3e7788c3890476]
[18:46:55/820] stored article seems up to date [IID: 597], updating timestamp only
[18:46:55/820] guid 2,https://linuxize.com/post/how-to-use-linux-sleep-command-to-pause-a-bash-script/ / SHA1:cbc193e0dc9991b09c38d3ac352fe6e98d8b0820
[18:46:55/820] orig date: 1557780707
[18:46:55/820] date 1557780707 [2019/05/13 20:51:47]
[18:46:55/820] title How to Use the Linux Sleep Command to Pause a Bash Script
[18:46:55/820] link https://linuxize.com/post/how-to-use-linux-sleep-command-to-pause-a-bash-script/
[18:46:55/820] language en
[18:46:55/820] author [email protected] (Linuxize)
[18:46:55/820] num_comments: 0
[18:46:55/820] looking for tags…
[18:46:55/820] tags found:
[18:46:55/820] done collecting data.
[18:46:55/820] article hash: b37886c83c92210e3e6fc5f49766a41ab82db0e5 [stored=b37886c83c92210e3e6fc5f49766a41ab82db0e5]
[18:46:55/820] stored article seems up to date [IID: 598], updating timestamp only

I also had the following error in event log after running feed debugger for this feed:

I do have read & write permissions however:

Make sure the user running the daemon is the same as the user running the web interface. Usually the web server runs as www or www-data. If you’re running the daemon as john and the web server as www-data you’re going to get permission errors and some things are not going to not work.

No, because you posted a billion lines of debug code with no explaination of what the filter is trying to match. Maybe others can sort this out but not me. I’d like to see a screen shot of the filter in question along with example of one article that matched versus one that didn’t and the an explanation of the expected result.

You read me comments though, right? There simply may not be anything you can do. You check the RSS feed to see how many items there are, if there are not many and the site publishes very frequently send the web admin a friendly email pointing the fact out. Most CMSs you can adjust the number of entries in the feed and the admin will probably appreciate the feedback that will help him/her make the site run better.

Filter:

\b(linux|bash|docker|script|python|centos|arch|debian|nginx|fedora|raspberry|virtual|ssh|ubuntu|bsd)\b

Matched (on “bash”):

https://linuxize.com/post/bash-check-if-file-exists/

Didn’t Match (but should have on either “centos” or “linux”:

https://linuxize.com/post/how-to-create-a-bootable-centos-7-usb-stick-on-linux/

<item>                                                                                                                   
<title>How to Create Bootable CentOS 7 USB Stick on Linux</title>                                                      
<link>https://linuxize.com/post/how-to-create-a-bootable-centos-7-usb-stick-on-linux/</link>
<pubDate>Sat, 25 May 2019 20:51:47 +0100</pubDate>                                                                     
<author>[email protected] (Linuxize)</author>                                                                         
<guid>https://linuxize.com/post/how-to-create-a-bootable-centos-7-usb-stick-on-linux/</guid>
<description>In this tutorial, we will explain how to create a bootable CentOS USB stick from the Linux terminal. You can use this USB stick to boot and test out or install CentOS on any computer that supports booting from USB.       Prerequisites  An 8GB or larger USB stick drive Computer running any Linux distribution  Downloading CentOS ISO file Download the CentOS ISO file from the CentOS downloads page where you can choose between &amp;ldquo;DVD ISO&amp;rdquo; and &amp;ldquo;Minimal ISO&amp;rdquo;.</description>                                                                           
</item>         

I’m not see anything particularly off about this. Unless you have some other rules for this filter or something like that? The upper/lower cases don’t match but I’m pretty sure TT-RSS does case-insensitive matches.

Do you have any invert match fields for this filter (or on the filter as a whole)?

Sorry, forgot on part: When opening the feed debugger, add &xdebug=2 to the URL. This will also output detailed information about the matched filters.

Please use an external service like Pastebin instead of posting the complete output here.

You can also paste the content here between two lines with three backticks:

```
Debug stuff here.
```

And it will format nicely.

I know about the markdown formatting but I was more concerned about the output length in general. :wink:

Use <details></details> instead?:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent luctus lacinia nulla, et ultricies eros luctus vitae. Nulla feugiat risus vitae elementum posuere. Cras faucibus tellus eget erat egestas venenatis. Fusce eleifend blandit tincidunt. Nam ut nunc enim. Nullam porta felis ac nulla tristique pulvinar. Phasellus vitae dui tortor. Cras malesuada egestas vulputate.

Nunc tellus sapien, rhoncus at ex sed, scelerisque iaculis diam. Curabitur vitae nisl nec eros aliquam volutpat nec at leo. Mauris luctus augue quis risus pulvinar, ac suscipit dui lacinia. Pellentesque placerat laoreet libero at gravida. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam commodo diam sed purus hendrerit, id finibus velit imperdiet. Fusce in convallis eros. Donec vel diam enim. Praesent eu lorem vestibulum, gravida dui non, sagittis quam. Donec ullamcorper libero lacus, non commodo velit porta sit amet. In eu dignissim erat. Suspendisse nec diam tristique lectus dictum hendrerit. Morbi faucibus, ipsum quis lobortis aliquam, nunc nisl malesuada augue, ut pellentesque lectus enim at turpis. Donec ut euismod tortor.

Etiam varius odio neque. Vivamus consectetur, nulla vitae volutpat faucibus, neque purus vehicula metus, sed auctor felis quam sed orci. Pellentesque urna arcu, sollicitudin nec lacus non, mattis posuere nulla. Pellentesque ultricies, tortor ac finibus imperdiet, purus arcu lacinia nisi, ut dapibus urna enim eget est. Etiam ut vestibulum felis, ut pharetra eros. Quisque congue lectus eu imperdiet sagittis. Fusce mauris libero, bibendum sit amet velit sit amet, mollis tincidunt purus. Nulla at orci nec urna semper ultricies a vitae massa. Ut facilisis, nunc ac semper viverra, sem diam vulputate metus, at bibendum enim est nec orci. Sed nec massa tortor. Sed ac sem justo. Aenean blandit nibh libero, eu pretium augue dignissim nec.

Maecenas hendrerit sit amet sem quis efficitur. Ut suscipit porttitor justo, at ullamcorper velit gravida nec. Nam posuere pulvinar ipsum tincidunt feugiat. Sed sagittis pharetra nibh, a fermentum massa tempus nec. Cras mi neque, venenatis in tellus ac, posuere sagittis velit. Vivamus convallis odio orci, quis ultricies libero pulvinar a. Maecenas magna justo, posuere ac urna quis, efficitur aliquam dolor. Maecenas fermentum tortor lectus. Sed semper accumsan pellentesque. Suspendisse porta lacinia lectus nec rhoncus.

Cras porttitor a nisi at rutrum. Morbi suscipit posuere fermentum. Aenean ac nisl non felis faucibus rhoncus et in est. Phasellus varius, nibh et ornare porttitor, enim leo egestas dui, sed lacinia leo orci eget orci. Proin eu arcu urna. Nullam in bibendum tortor. Etiam iaculis bibendum purus, at auctor neque. Suspendisse varius tristique tortor eget elementum. Duis iaculis condimentum sem, eu dictum ipsum pulvinar semper. Sed viverra, neque non vestibulum scelerisque, massa ex mollis tellus, ac pharetra justo leo sit amet nibh. Nam dolor mauris, vestibulum sit amet rutrum non, porttitor eget odio. Fusce et massa non orci laoreet venenatis. Praesent ultrices bibendum volutpat.

I’m pretty sure Discourse limits the vertical size of the code blocks, so you’d never have a situation where you had to scroll five pages to get to the next post.

I had invert for that filter, but I took it off last night. I then used modify score: 1000, star article, and add label: Tech

So far today the articles it grabbed had the score, star, and label, but some were again missed. Plus the loads of stuff I didn’t want to see since I removed inverse match.

Update: I’m a fucking moron! I had another filter setup to delete stuff. It’s the filter that gets run first and it is for all feeds. I looked at it roughly 3 trillion times but didn’t see it. It being (c++|c#). I changed it to (c\++|c#). I tested it at regex101 and looks like it will NOW delete what I want. That was grabbing anything with c and deleting it. That makes sense why centos was not grabbed and actually deleted. It’s my only “combo” filter in delete, everything else is a single word.

Glad you found it out yourself. One note though:

The correct regex should be (c\+\+|c#) as c\++ will also match c++++ although you will very likely never come across this term. Using word boundaries (\b) for such short terms is also advisable, at least at the start if you also want to match something like c++ compiler or c# tips but want to avoid matches for Clean My PC++.

I went back and changed my filter to the screwed up version, then did the feed debug with your recommendation and it did prove that was the issue. Thanks for that tip!

Agreed, I thought about it after I made that change. Since the second + is gonna match on one or more. So I ended up going with exactly what you stated.

It’s been roughly 27 hours so far and my filters are spot on. Don’t see anything being missed. I can’t believe how dumb I was and didn’t see that issue.

Thanks again to you and JustAMac.