Just save this as karma.py and run it with Python 3.6 or higher.

import requests
import math

INSTANCE_URL = "https://feddit.de"
TARGET_USER = "ENTER_YOUR_USERNAME_HERE"

LIMIT_PER_PAGE = 50

res = requests.get(f"{INSTANCE_URL}/api/v3/user?username={TARGET_USER}&limit={LIMIT_PER_PAGE}").json()

totalPostScore = 0
totalCommentScore = 0
page = 1
while len(res["posts"])+len(res["comments"]) > 0:
	totalPostScore += sum([ x["counts"]["score"] for x in res["posts"] ])
	totalCommentScore += sum([ x["counts"]["score"] for x in res["comments"] ])
	
	page += 1
	res = requests.get(f"{INSTANCE_URL}/api/v3/user?username={TARGET_USER}&limit={LIMIT_PER_PAGE}&page={page}").json()
 
print("Post karma:    ", totalPostScore)
print("Comment karma: ", totalCommentScore)
print("Total karma:   ", totalPostScore+totalCommentScore)
  • Pekka@feddit.nl
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    1 year ago

    MLem (the iOS Lemmy app) was also showing the user karma (but I think it was only showing karma gained on the local instance). So I guess this is nice for people that like to know their karma.

    I also agree with @nlm@beehaw.org that we should leave this as a thing for yourself. The Lemmy API should not bother with reporting user karma as It would be way too easy to cheat for people with singe person instances. (and of course the toxicity that comes with karma)

    • Square Singer@feddit.deOP
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      The API actually already reports something that looks like karma (it’s called post_score and comment_score for the user in question), but for some reason that value is quite off. Not sure why.

      So for example, the post score that is reported for my user is ~20% lower than what you get if you sum all the post scores up, while the comment score is ~95% too low.