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

l = Lemmy(INSTANCE_URL)

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
    1
    ·
    1 year ago

    Ah yes, it is returned in both the PersonView and the LocalPersonView. From what I understood that was only reporting the local score of the person. I’m not sure what was meant with that. Your home instance would know about the post score and comment score you get from other instances, otherwise you could not see those votes.

    For other instances it would make sense if the scores would not be correct (if they have to do their own calculations). As they might not receive updates from all communities where you receive votes. They will only receive updates if they are federated with the instance and at least one user on their instance follows that community.