jscher2000 Moderator


Okay, that's interesting. I don't have Tor installed, but I will try to test.

Are changes required to the @include list?


I'm not familiar with that site. When I look at the description on this page, it definitely sounds like the watch list is oriented toward shows they recognize as a series: http://www.tvmaze.com/features

Are there other pages that have the missing information about "specials" you've watched? It's sometimes possible to pull another page in the background and insert some of its contents into the page you're currently viewing. Could be a lot of work...


Why would the site only allow downloads in Chrome? Did you contact them about this problem?


Could I suggest truncating the IP addresses sent to Google Analytics? The benefit of this is that you won't need to worry about responding to requests to coax Google to delete data associated with a specific IP address. While you may lose some precision in your geographic statistics, that level of detail may not be particularly relevant/useful anyway.

You just need to add:

ga('set', 'anonymizeIp', true);

immediately before:

ga('send', 'pageview');

See:


Firefox does not allow WebExtensions to have random access to the hard drive. Storage interfaces are tightly constrained for security reasons.


You probably need a different approach for that.

Firefox extensions (such as Greasemonkey, Tampermonkey, Violentmonkey) cannot write to the desktop without displaying a download dialog, so it's not possible to write a userscript to do that, either.

The exception is those extensions which manipulate an external program (so called "native application"). Maybe there is one along the lines you're interested in. If not, perhaps an external program like AutoHotKey can do it.


By the way, user scripts are written in JavaScript and some things they do involve CSS. For example, by adding a class name to an element, the script can take advantage of a CSS rule that will hide that element.

So there are quite a few things to learn, and unfortunately, this script is a terrible example! The code was built up a little at a time over many years so it's hard to follow. I should take a programming class some time.


Hello, thank you for your comment. I think it's possible to change the way the first list works. Instead of:

  • Block List => notice
  • Perma-ban => invisible
  • default => show

You could:

  • Whitelist => show
  • Perma-ban => invisible
  • default => notice

Since I search for very different things all the time, that wouldn't really work for me, but if you are always searching for the same thing and really only want to see sites you trust on that topic, maybe then it would work.

I think it would be best if someone makes a copy of the script and rewrites it to work that way. It would be very complicated to have the same script work both ways. At least it seems complicated to me (I'm not a programmer).


Conversion is a hidden feature of userstyles.org. Let's say you have this URL:

https://userstyles.org/styles/152417/dashed-green-outline-on-focused-element

The URL to generate a userscript is:

https://userstyles.org/styles/userjs/152417/dashed-green-outline-on-focused-element.user.js

As a bookmarklet:

javascript:var parts=location.href.split('/styles/'); location.href=parts[0]+'/styles/userjs/'+parts[1]+'.user.js'; void 0;

You can convert a few to see the pattern the site uses. It hink you need to manually generate @include/@match for styles that use a regex with @-moz-document.



This seems to be mostly working.

There are three unusual features of Baidu:

(1) The domain is not coded into the title link. Instead, the script needs to read the green text below the excerpt. Sometimes this text is incomplete and ends with "...". Since there is no convenient way for the script to learn the full domain, the script records the ... and will use that in matching the green text. Sometimes, you end up needing to block two different domains:

(2) Baidu removes the MutationObserver object, which is how scripts normally detect changes to the page, such as new results when you click page 2+. So the script needs to use an older technology that can slow down the site called a DOM mutation listener. There might be a better way to work around this, but this seems to work for now.

(3) When loading new results, Baidu removes the style rules and forms added by the script, so those need to be reinjected. This is why you currently cannot move the Manage Hiding button to the top or bottom on pages 2+ of your results. I will try to fix that later.

Please post feedback on how it works for you.



Sorry, I just realized you were talking about a different script, so never mind on the link in my previous reply.




Thanks. I don't know how I missed that. I found it easier to stop using GM_addStyle() across the board than to figure out function hoisting. New version posted.


Hi Marti, I think having it right there on the script edit page is a good idea, more convenient.


Your block list is stored in a SQLite database. Here's how you can extract it.

(1) Open an online SQLite database viewer such as: https://inloop.github.io/sqlite-viewer/

Keep this tab open because we are going to drag and drop a file onto it

(2) Open your currently active Firefox profile folder. This article has the steps: https://support.mozilla.org/kb/profiles-where-firefox-stores-user-data

Size this window so you can see the SQLite site behind it

(3) Double-click into the gm_scripts folder, then scroll down to the Google_Hit_Hider_by_Domain_(Search_Filter_Block_Sites).db file (sometimes the .db extension is not visible, but it will have a different icon from the folder of a similar name)

(4) Drag the database file onto the SQLite viewer page and it should immediately extract five data fields. The one you want is hideyhosts -- you can paste it into the Import panel of GHHbD running in Tampermonkey or Violentmonkey.


Oops, never mind. The left side has the info from the script; the Author Tools defaults to MIT regardless.



Hi Marti, the reason for the restriction was people stealing script metadata blocks on userscripts.org and replacing the script contents with FB account hijackers. Without a license violation, it wasn't obvious how to get those taken down. That kind of behavior hopefully is not occurring on this site.