Announcing Beeminder for Anki

Hmm, I can’t seem to reproduce it (when simulating upgrading to the latest version). So I’m not sure if this is a rare bug due to the upgrade path you took or something affecting all users.

I did make a small change to the new version in an attempt to fix this. If you have a backup from right before you upgraded, you could check if the bug still occurs with this version!

You could also try to “reset” the add-on from the settings menu and re-install it.

Thank you for trying to fix it! I used Anki’s menus to delete the add-on and reinstall it. Unfortunately, for both the previous version and the new beta, I now don’t have the “Setup Beeminder Sync” option. The original version gives me no error message, but also no setup settings; the beta gives an all new error message:

Traceback (most recent call last):
  File "aqt/progress.pyc", line 69, in handler
  File "aqt/main.pyc", line 110, in setupProfile
  File "aqt/main.pyc", line 234, in loadProfile
  File "anki/hooks.pyc", line 56, in repl
  File "/Users/lawrence/Documents/Anki/addons/beetime/__init__.py", line 47, in ankiwebSync
    syncDispatch(at='ankiweb')
  File "/Users/lawrence/Documents/Anki/addons/beetime/sync.py", line 66, in syncDispatch
    prepareApiCall(col, reportTimestamp, numberOfCards, timestampComment(comment, now, bc.get('reviewed', 'overwrite')), goal_type='reviewed')
  File "/Users/lawrence/Documents/Anki/addons/beetime/sync.py", line 109, in prepareApiCall
    incomingID = sendApi(user, token, slug, data, outgoingId)
  File "/Users/lawrence/Documents/Anki/addons/beetime/api.py", line 14, in sendApi
    response = apiCall("POST", user, token, slug, data, did)
  File "/Users/lawrence/Documents/Anki/addons/beetime/api.py", line 43, in apiCall
    raise Exception("transmission failed:", response.status, response.reason, response.read())
Exception: ('transmission failed:', 404, 'Not Found', '')

I took some screencaps in case something is odd about my setup:



I was using the previous deprecated odometer-style plugin until I switched to this one quite recently, but I am pretty sure it’s been comprehensively removed… I re-installed Anki itself and it’s up to date…

Oh! Sometimes it causes problems that I am not the admin on my laptop (I use parental controls on myself to make myself go to bed). Is there some place where it needs admin authentication but isn’t giving me the pop-up to provide it?

I’d really love to find a way to make this work (I can tip you for your programming time??) since I was getting a lot of mileage out of those Anki goals, which will lose their usefulness if I have to update them all manually. And right now things are borked enough that I apparently can’t even use the older version :frowning:

Any ideas about what to do?

1 Like

Thanks for your detective work! There’s a couple of issues here.

First is correctly and completely deleting the add-on. Anki makes this unnecessary difficult; using Anki’s menus like you did is not enough. Here’s a gem from Anki’s source code:

in the future, it would be nice to save the addon id and unzipped file list to the config so that we can clear up all files and check for updates

I’ll work on a procedure to remove all traces of the add-on. I have to resist the urge to do this quickly to avoid creating more problems, but it should be done later today.

Secondly, the new error might be caused by a bad connection or a problem with the add-on’s cache. One quick thing you can try is to temporarily set the add-on to upload multiple datapoints (and do a review or add a card before syncing). If that worked you can restore the setting again.

2 Likes

Updated to a version with slightly more informative error messaging and a (horrible) reset mechanism should you need it. I also removed the datapoint caching code in favour of using the awesome requestid API parameter. This might fix your 404 error as well.

Hopefully this one Just Works. However, should you still need to completely remove the add-on and go back to the previous version, the following steps should now work:

  1. Press Control+: (colon) in Anki
  2. Copy and paste the following code in the top-most pane:from beetime import * debug(reset=True)
  3. Press Control+Enter (to execute)
  4. Optionally send the output (in the lower pane) to me in a PM
  5. Then quit Anki and manually delete Beeminder_Sync.py and .pyc and the beetime/ folder in Anki’s addons folder

Also, the add-on shouldn’t need any admin privileges. And thanks for offering to tip! One of my goals was to make a small piece of software that people could love. But I had also been planning to offer some way to tip, just not yet!

2 Likes

I only just now had the chance to try this – and it works!! Thank you so much! :slight_smile:

One hiccup that I had was a slightly unhelpful error message when I first restarted Anki – it gave me the 404 and suggested checking my connection settings, but the problem was really that I needed to input my username and auth key into the “Setup Beeminder sync” panel – but when I checked the “Setup” panel it was obvious that that information was necessary so I fixed it quickly and easily. And now it works!!

Thank you again for rescuing these goals for me! :smiley:

2 Likes

I’ve been getting an error:

Something went wrong posting to oldmannick/anki.
Please check your connection and settings!
(422, 'Unprocessable Entity', '{"errors":"Duplicate request"}')

I have all boxes checked except ‘report zero value datapoints’ in the settings, and it syncs review time.

My Beeminder data points look like this, which isn’t the desired behavior (I want it to post the minutes I studied that day, not the total ever studied)

03 145.216666667 "studied 1316 cards in 145 minutes at 00:54:22"
05 156.083333333 "studied 1386 cards in 156 minutes at 01:29:06"
06 156.083333333 "studied 1386 cards in 156 minutes at 01:49:15"

Below is the error code I’m getting with Beeminder Beta add-on for Anki.
An error occurred in an add-on.
Please post on the add-on forum:
https://anki.tenderapp.com/discussions/add-ons

Traceback (most recent call last):
File “C:\Users\Chris\Documents\Anki\addons\beetime\settings.py”, line 137, in onAccept
self.onApply()
File “C:\Users\Chris\Documents\Anki\addons\beetime\settings.py”, line 170, in onApply
self.bc.store()
File “C:\Users\Chris\Documents\Anki\addons\beetime\config.py”, line 18, in store
self.save()
File “C:\Users\Chris\Documents\Anki\addons\beetime\config.py”, line 21, in save
self.col.setMod()
File “C:\cygwin\home\dae\win\build\pyi.win32\anki\outPYZ1.pyz/anki.collection”, line 110, in setMod
AttributeError: ‘NoneType’ object has no attribute ‘mod’

I have it working now. Here’s what I think solved it (not completely sure, though).
-Closed Anki
-Followed these steps from a previous post

  1. Deleted the linked Beeminder goal, and created a new one. In my case, I want to have Beeminder for Anki track the number of reviews I make each day.

  2. Installed Beeminder Beta.

  3. Closed and reopened Anki

  4. In Anki, Tools | Setup Beeminder sync
    input user name, API key. Checked Report zero value datapoints.
    clicked on the “Sync number of reviews” box and input the brand new beeminder goal
    Clicked OK (NOT Apply - seems I had problems with this before).

  5. Closed Anki and restarted

  6. It works! I’ve now checked the ‘Sync after synchronizing with AnkiWeb’ checkbox. As a test, I review one card, and manually do an Anki sync The dialog box shows Beeminder Sync automatically kicking in immediately after the Anki sync.

If I have Beeminder android app open, within seconds it has updated the review count (no manual sync needed from the Android app). Quite impressive! Many thanks for your add-on. I’ve tried other add-ons with no luck until yours came along!

3 Likes

How do you find out what your Beeminder API key is?

1 Like

You’ll see it at beeminder.com/api or https://www.beeminder.com/settings/advanced_settings if you’re signed in

1 Like

Thank you. I got it set up. However, it reports cumulative minutes every time I sync and so beeminder keeps thinking I’ve reviewed for thousands of minutes each day instead of 5-10.

I’ve spent some time digging around in the settings for my goal trying to find a way for it to accept cumulative data rather than additive and don’t see how to do it. How do I edit the goal to work with the data import?

2 Likes

In Terrifyingly Advanced Settings, you can convert a goal to a custom goal and then you’ll see a setting to turn off auto-summing. Custom goals are a Bee Plus premium feature. With the Infinibee plan you can create the goal as an odometer goal which doesn’t do auto-summing. If you don’t want to get a premium plan just to turn off auto-summing on one goal, email support and we’ll help. (You can also add the premium plan and then immediately remove it which will give you the premium perks for one month, if that seems more worth it.)

1 Like

Hi,
I’ve installed Beeminder-beta add on and when I set “use a single datapoint per day” I get an error.
The problem is when I add some cards in Anki and sync it, in Beeminder I see “added 10 cards”. And if I’ll add, for example, one more card, in Beeminder there will be another data logging “added 11 cards”. So I thought, that the single datapoint option can fix it, but I get an error in the add-on settings.
Cards additions and reviews are connected to the same beeminder goal. Tried to reinstall add-on, install previous version and reinstall Anki. It didn’t help.
Here is this error:

Traceback (most recent call last):
File “C:\Users\Michael\Documents\Anki\addons\beetime\settings.py”, line 137, in onAccept
self.onApply()
File “C:\Users\Michael\Documents\Anki\addons\beetime\settings.py”, line 170, in onApply
self.bc.store()
File “C:\Users\Michael\Documents\Anki\addons\beetime\config.py”, line 18, in store
self.save()
File “C:\Users\Michael\Documents\Anki\addons\beetime\config.py”, line 21, in save
self.col.setMod()
File “anki\collection.py”, line 110, in setMod
AttributeError: ‘NoneType’ object has no attribute ‘mod’

Also if it is possible to update setting and enable the single datapoint option, when I close the app and it is syncing, I get this error:

Thanks

1 Like

big time Anki user, just found out about this add on. First using it and got this

An error occurred in an add-on.
Please post on the add-on forum:
https://anki.tenderapp.com/discussions/add-ons

Traceback (most recent call last):
File “C:\Users\yoga\Documents\Anki\addons\beetime_init_.py”, line 25, in
mw.connect(manualSync, SIGNAL(“triggered()”), lambda: syncDispatch(at=‘manual’))
File “C:\Users\yoga\Documents\Anki\addons\beetime\sync.py”, line 58, in syncDispatch
prepareApiCall(col, reportTimestamp, numberOfCards, comment, goal_type=‘reviewed’)
File “C:\Users\yoga\Documents\Anki\addons\beetime\sync.py”, line 85, in prepareApiCall
newDatapointId = sendApi(user, token, slug, data, cachedDatapointId)
File “C:\Users\yoga\Documents\Anki\addons\beetime\api.py”, line 14, in sendApi
response = apiCall(“POST”, user, token, slug, data, did)
File “C:\Users\yoga\Documents\Anki\addons\beetime\api.py”, line 43, in apiCall
raise Exception(“transmission failed:”, response.status, response.reason, response.read())
Exception: (‘transmission failed:’, 404, ‘Not Found’, ‘{“error”:“resource not found”}’)

2 Likes

I just wanted to say that there are still people (like me) out there looking forward to Per-Deck reporting.

And thanks a lot for creating this add-on.

3 Likes

Thanks for creating this integration.

It seems like the poll that was posted above has closed, but I would love the historical feature. I review cards on my phone, and therefore cannot easily do this synchronization. It would be great if I could just synchronize once a week and get all the information from the reviews I had done on my phone.

1 Like

Hi

The plugin looks great, thanks for contributing.

I do however get the following after setup:
Something went wrong posting to [redacted]/redacted. Please check your connection and settings! (422, ‘Unprocessable Entity’, ‘{“errors”:“Duplicate request”}’)

Shoutout to @ianminds for this, this thing is pretty sweet.

Anyway I wanted to mind the number of new notes in a specific tag, and it was pretty easy to extend the plugin in to do this.

If anyone else is thinking about doing this for themself all you really have to do is throw together a relatively straightforward sql query.

The diff for what I did is at Add custom vocab goal (bc096c11) · Commits · Daniel / beetime · GitLab if you’d inspiration. Note that I have the agg function set to maximum on the goal so I didn’t have to worry about resubmitting and could take a couple extra shortcuts :slight_smile:

2 Likes

Do you prefer this Approval voting method over Instant Runoff voting? If so I’d be curious to hear why.

1 Like

Approval voting is much better than IRV. https://electology.org/approval-voting-versus-irv has a ton of reasons.

2 Likes