I made a script to calculate an user's karma

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)

petrescatraian,

@squaresinger Does it work with non-Lemmy software as well? 😁

squaresinger,

Which software? Probably it will not, unless their API works the same. It probably wouldn't be hard to adjust.

But since my Lemmy instance replicates your user account, I can run my script on my instance with your user name, and these are the results:

Post karma:     811
Comment carma:  1341
Total karma: 2152

petrescatraian,

@squaresinger that's what I was looking for, haha. Thanks for running this for me!

Edit: my oldest/main Reddit profile is from 2015 and I have ~19.000 total karma. I am on fedi for one year and I already have more than 10% of that amount. I'm quite impressed.

squaresinger,

No problem!

You might want to checkout this post: https://feddit.de/post/1185964

I made a Tampermonkey version of this. Just download the Tampermonkey extension for your browser, paste the script from the link to it, put in your user name and instance URL and it will show your karma next to your user name in the top right of the page.

petrescatraian,

@squaresinger never tried tampermonkey before. But it's wonderful 😁

squaresinger,

Hardly used it before, but it's a really good extension.

jerome,
jerome avatar

Please don't.

squaresinger,

Why not? You don't have to run the script. The script doesn't post or show the scores anywhere publicly. All it does is inform you of your current score, if you so desire to know it.

dancedancedance,

It looks like it'll hammer the server with a lot of requests for no real reason other than vanity.

The real fix would be to make a PR to add an endpoint to Lemmy that returns karma.

SBAC,

Please try to provide more constructive feedback, not all users share the same opinion as you.

Powderhorn,
@Powderhorn@beehaw.org avatar

I'm getting back into Python for unrelated reasons, and last I was using it, JSON wasn't on my radar yet.

I'm curious about the .json() method here, which seems to be exposing posts et al. for further manipulation without parsing. Is this really as simple as it appears?

realChem,
@realChem@beehaw.org avatar

I've not used requests, but yes their docs make it look like it really is that easy: https://requests.readthedocs.io/en/latest/user/quickstart/

Looks like the .json() call just returns a dictionary (or maybe a list of dictionaries), which means you can use all of python's normal dictionary methods to find the data you're looking for!

Powderhorn,
@Powderhorn@beehaw.org avatar

Thanks for the link! This looks like an absurdly powerful library for HTTP needs and output manipulation from the perspective of a scraping neophyte.

squaresinger,

Yes, it totally is that easy. At first I used an API wrapper library, but then I checked out the source and there is really no need for it since requests already handles basically everything. .json() takes the response body of the request and runs it through json.decode() and thus spits out a nice Python dict/list structure.

It is absurdly simple and powerful.

Grishaix,
@Grishaix@feddit.de avatar

Isn't that the same as "post_score" and "comment_score" in https://feddit.de/api/v3/user?username=Grishaix

squaresinger,

That would sound plausible, yes, but apparently it is not. For me, my post_score was ~20% less than the score of all my posts summed up, and my comment_score was ~95% less. I actually opened a bug report for that here: https://github.com/LemmyNet/lemmy/issues/3393

I just ran the script on your user. The API returns a post_score of 125, while the calculated score is 121. For the comment_score the API returned 83, while the calculated score is 397.

Grishaix,
@Grishaix@feddit.de avatar

Thanks for the clarification.

But to be honest, I'm still not quite sure if we really need this whole "internet points" thing.

CMLVI,
CMLVI avatar

It's an alright way to see if someone is commenting on good-faith or not. Anytime I saw someone saying highly controversial things, I'd check their account to see if they were just downvote collecting or actually held the view. It's harder to do that now; my account says I'm at like...-30 something, on a single comment that went beyond a few people's sensibilities. I could have put an /s on it but that defeats the purpose.

But anyone that looks at my profile now to make the "good faith" check will see me at -30, despite other contributions.

It is dumb how people worry about the number, but it does have other uses besides just a popularity indicator.

Teppic,
Teppic avatar

Seems like this is kbin Vs Lemmy difference, we at kbin get to see people's "reputation" (yes including Lemmy users ...with caveats) from this thread it seems Lemmy doesn't easily expose the same.

That said the reputation system is kbin is currently broken as upvotes don't count - it's a known bug which will no doubt be corrected soon.

CMLVI,
CMLVI avatar

I was under the impression that was how it was supposed to function; boosts were the upvote and downvote is the downvote, but boosts were weighted more heavily? Or something? Lmao it seems unnecessarily complicated, just stick with up or down.

Teppic,
Teppic avatar

Ernest switched the upvote from being boosts to favourites shortly before the Reddit exodus, he did this to better align with Lemmy.
Boosts and Favourites are both wider fediverse things - using them keeps compatibility there.

The switch is implemented in hot and top sorting (as you note I think a upvote/favourite counts 50% of a boost), but it sounds like reputation wasn't fixed at the same time, for now reputation is boosts less downvotes which Ernest himself has acknowledged doesn't make much sense.

It is still being discussed in the issues log!

https://codeberg.org/Kbin/kbin-core/issues/80

CMLVI,
CMLVI avatar

Oh awesome! Thank you for the info

squaresinger,

Yeah, it's only for each user to run if they want to. I like to. I don't care about others' score. It's just for me to know.

I've read the discussions on that topic, and I agree that it should not be publicly visible, at least not next to the posts. If at all maybe in the user profile. But honestly I don't care about that aspect.

I just want to know where I'm standing.

I've earned ~10% of my Reddit karma in just-over-two-weeks that I have been here, even though there are far fewer people here than on Reddit, so that's concerning ;)

But that's what I wanted to know and I go that info.

RandoCalrandian, (edited )
RandoCalrandian avatar

“An user” sounds weird

But it’s entirely grammatically correct not correct, just high school grammar level correct, english has exceptions to the "a/an" rule, thanks @Haus

Yet i still want to say “a user”

Fuck you, English

Haus,
Haus avatar

https://english.stackexchange.com/questions/105116/is-it-a-user-or-an-user

"An" goes before all words that begin with vowels:

An egg
With two exceptions:

When "u" makes the same sound as the "y" in you, or "o" makes the same sound as "w" in won, then "a" is used:

a union
a united front
a unicorn
a used napkin
a U.S. ship
a one-legged man

RandoCalrandian,
RandoCalrandian avatar

I'm not crazy!

noodlejetski,

it’s entirely grammatically correct

eeeehhhhhhhhhhhhh. the a/an rule is based on the first sound (phone?) of the word, not the spelling. hence "an hour", for example, where the H is silent, but "a heist" where it's voiced.

Sal,
@Sal@mander.xyz avatar

I think you left this line behind by accident:

l = Lemmy(INSTANCE_URL)

squaresinger,

You are right, I removed it ~20min before you posted, though. So I guess, the change wasn't synced to your instance yet. Interesting, that the syncing can take that long.

!deleted95653, (edited )

deleted_by_author

  • Loading...
  • melroy,
    @melroy@kbin.melroy.org avatar

    Me either... 9 hours later*

    Sal,
    @Sal@mander.xyz avatar

    Yeah, I still see the line now. I am not sure if this was a one-off, maybe the edit occurred when I rebooted the instance for a moment and the edit fell through the cracks… Or there might be an actual issue federating edits.

    Pekka,
    @Pekka@feddit.nl avatar

    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 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)

    squaresinger,

    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.

    Pekka,
    @Pekka@feddit.nl avatar

    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.

    nlm,
    @nlm@beehaw.org avatar

    Nice job and all.. but I really wish this wasn't a thing.

    Karma is something that should stay behind at Reddit imho, it just fosters karma whoring instead of actually contributing to a discussion.

    That's one of the things I liked best when I joined Lemmy, that there wasn't a visible karma counter on people's profiles.

    Anyway.. rant mode off.

    Still, neat job!

    Leafimo,

    but then how would you sell your 500k karma account to some shady company? /s

    nlm,
    @nlm@beehaw.org avatar

    Indeed :)

    LinkOpensChest_wav,
    @LinkOpensChest_wav@beehaw.org avatar

    I'm not sure they'd buy it. I guess maybe if they really wanted to promote certain job openings.

    ArtVandelay,

    deleted_by_author

  • Loading...
  • SenorBolsa,
    @SenorBolsa@beehaw.org avatar

    I'm probably going to do the same. I should just be confident in what I'm saying, at least to a reasonable degree, and not worry if others feel like they agree. (I'm pretty sure I'm mostly cool) but it is also nice to have a way of posting a simple positive reaction to a post without clogging up the thread with. "nice" "I agree" "cool beans" etc.

    I never really played the game though, apart from making posts I thought others would enjoy enough to upvote.

    squaresinger,

    I get the reasoning, I've read the discussions. Still I like the karma thing, not for showing it to other people, but to give me an overview over what I've been doing so far. It's kinda an activity meter for me, and a bit of feedback on how my posts are doing.

    I am on Stackoverflow, and obviously I was on Reddit. While I was there, I never actually looked at other people's karma, but my karma motivated me to be more engaged.

    Leafeytea,

    There are plenty of other ways to track how your posts are doing though, if by that you mean relevance, exposure, engagements, etc. On this, it was at least one aspect of positives that Twitter offered in terms of their Analytics feature. I guess we don't have the tools for something like that here but it might be a nice middle ground.

    For me, the entire concept of Karma from a Reddit fashion is that it completely blows up any notion of genuine discussions. It too often lead to people fishing for approval vs saying what they actually believe. Too many like minded people also following and posting after each other, ganging up on opinions opposite their own, hive mind issues everywhere. I tried to comment something similar about this on Kbin and immediately got down-voted for it, so it was pretty clear to me there are people who don't want to be told their karma was not a real measure of their value, nor of their contributions to the site.

    nlm,
    @nlm@beehaw.org avatar

    I can see the appeal.. I just don't like it myself. It's so easy for it to become a measuring stick or something you actually try to boost.

    For me the number of posts and comments on the profile is good enough :)

  • All
  • Subscribed
  • Moderated
  • Favorites
  • technology@beehaw.org
  • PowerRangers
  • DreamBathrooms
  • everett
  • magazineikmin
  • InstantRegret
  • ngwrru68w68
  • Youngstown
  • Durango
  • slotface
  • rosin
  • GTA5RPClips
  • tester
  • kavyap
  • thenastyranch
  • provamag3
  • mdbf
  • osvaldo12
  • ethstaker
  • vwfavf
  • cubers
  • normalnudes
  • tacticalgear
  • khanakhh
  • cisconetworking
  • modclub
  • Leos
  • anitta
  • megavids
  • All magazines