Userscripts [e.g. Memrise Turbo and Memrise Timer Disabler] and some userstyles stopped working with today's web update

WORKING: Patched “Timer Disabler” V0.1.6 by Kai Krause:

I tested this disabled (paused) timer from the updated V0.1.6 script:

  • without “Memrise Turbo” (quick jumping to next question; might work a bit better with single word courses - audio has sync (wait) problem with longer sentences)
  • Memrise’s default enabled “Auto Accept”
  • turned on “Auto Correct” for diacritics (strict-typing) by Cooljingle
  • enabled “All typing” by Cooljingle
  • activated “Audio Provider” by Cooljingle

with

Now the jump to the next question with Memrise’s default enabled “Auto accept” (green highlighting of the correct answer) works much better for me when the “Memrise Turbo” script is NOT activated, as the Memrise’s code has a working WAIT function to finish audio play of a FULL (longer) sentence answer for the current question, whereas the “Memrise Turbo” user script quickly jumps to the next question but still plays the audio from the (previous) answer before.

This is quite irritating to me for the PT BR 1-7 + PT BR Basic courses which teach longer sentences.

If you do not want to have the jumping to the next question:
You can try the (todays) updated two “Auto accept Disabler” scripts by stream_nine90 which overwrite the BIND listener to deactivate the Memrise default code: Get rid of the auto-accept in the web-version - #18 by stream_nine90

3 Likes

The timer disabler patch by Kai Krause isn’t working for me. I wonder why.

Good question.

Are you using Tampermonkey or Greasemonkey?
Firefox or Chrome?

It is still working for me with Firefox V52.6.0 and latest Tampermonkey.

Have you alternatively tried Cooljingle’s “Memrise Turbo” and patched (as previously suggested) out the one other line so you could disable the jumping to the next question?

Both scripts use different timer code concepts…

2 Likes

I got it. I turned off the original script and am only using the patch. The timer still shows up, but it doesn’t count down, so… fine for now haha.

Thanks again for linking it.

1 Like

I noticed there is only a little problem with the timer disabler from Kai Krause if you use actively the Memrise pause feature on the web portal.

It somehow magically continues (very slowly) counting down if you wait / pause for too long when you switch to another browser tab and interrupt your 100 words review session :frowning:

This definitely has not happend with the old code and available Memrise API cancel() function.

Eliminating the cancel() function - without providing a really reliable workaround by the programmers - made another horrible “improvement” to me for the web portal.

I definitely have been regularly using the PAUSE feature when I have to review all those longer phrases/sentences for the offical PT BR 1-7 courses in a 100 words session with “all typing”.

I’ve noticed that too, but you can avoid it if you pause AFTER you’ve entered a correct answer. Pause on the green highlight, and the counter won’t go down.

1 Like

Memrise didn’t remove the cancel function. It’s still there all well and good. The only problem is, that the timer object is not a property of the garden object anymore but instead gets passed into a top level function as an argument. The reason for this is that Memrise switched their code to using ES Modules for most of their objects. The bundler then takes all of those modules and creates a top level function where each of the modules gets passed as an object to that function. The timer is the object with key 71 in the modules argument (the argument i in the function topmost function t in the script loaded from https://static.memrise.com/learning/dist/js/learning-session-f9dda4e90e13.js. Unfortunately, there is no way to access local variables or even variables from the closure of a given function, so you can’t extract the modules from the outside. You’d have to be able to change the actual code at the textual level, not at runtime. Seeing how I made a Chrome extension that changes a lot about Memrise’ inner workings, that was almost finished (a few months ago) and now I wanted to actually complete it, just to find out today, that Memrise has screwed me over again, ruining my day, I can tell you, that I’m much more upset about this change than most other people would be. Now about that code change on the textual level… I might actually have to do that, because I can’t accept months of work to be voided like that. Unfortunately I have lots of assignments to do for my University, so I don’t think that’s gonna happen any time soon, though. I just thought to myself “Hey, remember that Memrise project? Let’s quickly finish that thing”, and now this. I’m angry at Memrise for not thinking of their community of paying customers at all when making these changes to their code. My disappointment is immeasurable and my day is ruined.

3 Likes

If you are working with Kai Krause’s Timer Disabler script V0.2.3 you now need to patch it if you are working with Tampermonkey.

The below match header is also fully compatible with DECKS so I had to remove “www.” so it also matches “decks.”

Replace the two old header matches “http+https://.memrise.com/” with this:

// @match          http://*.memrise.com/course/*/garden/learn/*
// @match          https://*.memrise.com/course/*/garden/learn/*
// @match          http://*.memrise.com/course/*/garden/classic_review/*
// @match          https://*.memrise.com/course/*/garden/classic_review/*
// @match          https://*.memrise.com/course/*/garden/difficult_words/*
// @match          http://*.memrise.com/garden/review/*
// @match          https://*.memrise.com/garden/review/*

Starting today (this evening) I get a red error console event message that the variable “MEMRISE.garden._events” can not be found for the callback when I am loading the dashboard.

Previously ~1-2 or 3 weeks ago I had to uncomment the three following lines (with //) because of “variable not found” error messages.

    // (you need to keep this, still works)
    MEMRISE.garden._events.pause[0](); 
                // uncomment or delete these three lines as they will all result with Tampermonkey in "variable unknown" error messages:
		// MEMRISE.garden.session.timer.countdown = false;
		// MEMRISE.garden.$speedbg[0] = "";
		// MEMRISE.garden.$speedtimer = {}

Memrise staff seems to have updated their web code again.