Because of the nature of the project, bridges will break for various reasons. Sites change, rate limits set in place, IPs get blocked, paywalls appear, HTML change slightly and so on. The issue tracker is full of broken bridges and IMHO the most important problem here. Wait for a user (Exceptions::buildPage()) is IMHO not the best option. Currently, the user is requested to open a Github issue, wait until @em92 will ping the author and wait until the author fixes the bug, then wait until the PR is merged and the updated image is pushed to Docker Hub.
I have a suggestion to improve that:
Automated tests for all bridges
The easiest way to check if a bridge is working properly, is to check if getItems() results in no error and contain at least one element with attributes. If the bridge needs parameters, the example parameter can be used for the test. For better checks, the crawling page itself can be checked, if the needed elements exists. Most bridges use HTML selectors (->find()) for grab the content from the HTML page. This selectors can be used for automated checks.
Generate a list of "broken" bridges
This automated tests can be executed in a regular interval and the result (a list of broken bridges) can be placed on a public place, so the instances can grab them and automatically disable that bridges. If we provide the Github username or an email of the authors of the bridges in the bridge itself, the author can be notified automatically. The inverse of that list can be used to generate the whitelist.default.txt file, which also increase the first impression after installing RSSBridge.
I think this will boost the overall user experience of RSSBridge, reduce the amount of issues in the issue tracker and speed up the interaction with the authors of the bridges.
Because of the nature of the project, bridges will break for various reasons. Sites change, rate limits set in place, IPs get blocked, paywalls appear, HTML change slightly and so on. The issue tracker is full of broken bridges and IMHO the most important problem here. Wait for a user (
Exceptions::buildPage()
) is IMHO not the best option. Currently, the user is requested to open a Github issue, wait until @em92 will ping the author and wait until the author fixes the bug, then wait until the PR is merged and the updated image is pushed to Docker Hub.I have a suggestion to improve that:
Automated tests for all bridges The easiest way to check if a bridge is working properly, is to check if
getItems()
results in no error and contain at least one element with attributes. If the bridge needs parameters, the example parameter can be used for the test. For better checks, the crawling page itself can be checked, if the needed elements exists. Most bridges use HTML selectors (->find()
) for grab the content from the HTML page. This selectors can be used for automated checks.Generate a list of "broken" bridges This automated tests can be executed in a regular interval and the result (a list of broken bridges) can be placed on a public place, so the instances can grab them and automatically disable that bridges. If we provide the Github username or an email of the authors of the bridges in the bridge itself, the author can be notified automatically. The inverse of that list can be used to generate the
whitelist.default.txt
file, which also increase the first impression after installing RSSBridge.I think this will boost the overall user experience of RSSBridge, reduce the amount of issues in the issue tracker and speed up the interaction with the authors of the bridges.