Version 2.0 - This new script is event-driven. It does nothing until the page actually changes.
1. Because the MutationObserver is notified by the browser the instant the DOM changes, it will find and click the button immediately upon its appearance. setInterval could have a delay of up to a second after the button appears.
2. I've updated the @match rules to be more specific to the pages where downloads actually happen. This prevents the script from running unnecessarily on other pages of the site.
The DOWNLOAD_BUTTON_SELECTORS array makes the script more robust. If the site changes one button's class, you can easily add the new selector to the list without rewriting the logic. I've pre-filled it with the most likely candidates.
3. Once the button is found and clicked, observer.disconnect() is called. This cleans up after our script, so it doesn't continue to watch for changes forever, saving system resources.