this post was submitted on 28 Jun 2023
33 points (100.0% liked)

Technology

37735 readers
45 users here now

A nice place to discuss rumors, happenings, innovations, and challenges in the technology sphere. We also welcome discussions on the intersections of technology and society. If it’s technological news or discussion of technology, it probably belongs here.

Remember the overriding ethos on Beehaw: Be(e) Nice. Each user you encounter here is a person, and should be treated with kindness (even if they’re wrong, or use a Linux distro you don’t like). Personal attacks will not be tolerated.

Subcommunities on Beehaw:


This community's icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.

founded 2 years ago
MODERATORS
 

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)
top 50 comments
sorted by: hot top controversial new old
[–] nlm 107 points 1 year ago (6 children)

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@feddit.de 12 points 1 year ago (1 children)

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

[–] nlm 5 points 1 year ago (1 children)
[–] LinkOpensChest_wav 4 points 1 year ago

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

[–] squaresinger@feddit.de 5 points 1 year ago (2 children)

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.

[–] nlm 16 points 1 year ago

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

load more comments (1 replies)
[–] animist@lemmy.one 5 points 1 year ago

Agreed 100%

load more comments (3 replies)
[–] maegul@lemmy.ml 22 points 1 year ago* (last edited 1 year ago) (1 children)

Yea, as said by @nlm@beehaw.org it's best that reddit is just left behind ... we don't need to recreate everything it did, and there's plenty of scope to try and create new things here on the fediverse not seen before or, at least to make lemmy better in lots of ways that make sense.

Alternative web-based PWA front ends, community discovery, contributing to the source code of the platform itself, moderation tooling (a big one), making donations easier for users, devs and admins (big one too), documentation and tutorials for new users or those looking to use the API (bet you're well placed for that one) ... etc.

[–] squaresinger@feddit.de 9 points 1 year ago (1 children)

Yeah, this was just a little exercise while getting into the API. I'm looking into making a simple mod bot, if I actually get around to it.

Regarding Karma: I don't care at all for other peoples' karma. Never have, also on Reddit and Stackexchange.

But I do like to kinda see my progress. With Karma I can see how well I am doing in the community in general. And it motivates me to put out more decent content.

I don't really get Karma farming though. Karma is inherently meaningless, so there is no reason to farm it.

[–] maegul@lemmy.ml 6 points 1 year ago (1 children)

I'm with you (and I hope my post didn't come of as too harsh ... you're making tools for users which is awesome!).

And you're right to point out that this is just for personal use. And karma is useful for letting you know how your communities feel about you. For me, I scroll through my posts in my profile page and just scan the scores to get a feel for whether I've pissed anyone off gotten some traction for some reason.

If someone is posting more often than me, I can see how your tool would be useful.

Still, I feel there are questions to be asked about whether it's healthy, but that's me ... you do you!!

Also ... kbin actually has a karma feature like on reddit. You might find it useful.

[–] squaresinger@feddit.de 5 points 1 year ago (1 children)

I am spending too much time on Lemmy as is :)

What I really found interesting, also compared to Reddit, is how few of my posts/comments actually have downvotes.

[–] maegul@lemmy.ml 5 points 1 year ago (1 children)

Yea ... it's interesting isn't it ... what happens when the "engagement rage" is taken out of the room.

Politeness and consideration ... helluva drug!

For instance, I disliked the push to bring a reddit feature to here, mostly out of a feeling that there might be a bit too much "lets keep this is much like reddit as possible" developing, just enough to think about downvoting this post for a second, but realised it would have way too mean and that a post expressing my disagreement was plenty while you were doing genuinely interesting and useful work.

On reddit, sadly, I probably would have downvoted, moved on and not thought twice.

[–] squaresinger@feddit.de 4 points 1 year ago

I think, part of the equation might also be that the split between upvotes and downvotes is shown directly. On Reddit, if someone has a comment score of 1, you never know if that's because nobody cares enough to vote at all, or because there's a 50:50 split of up- and downvotes.

So if you downvote here, it is instantly visible and not as anonymous.

Also, if a post has a score of -5 on Reddit, you'd assume that everyone hates that post. But here you'd see that actually 50 people upvoted it and 55 downvoted it.

Just for numerical context: Out of my 15 posts only 3 have any downvotes at all. Out of my 332 comments, only 27 have any downvotes.

Compared with 15/15 posts with upvotes and 240/332 comments that have upvotes.

[–] jerome@kbin.social 15 points 1 year ago (2 children)
[–] squaresinger@feddit.de 3 points 1 year ago (1 children)

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 4 points 1 year ago

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.

load more comments (1 replies)
[–] Pekka@feddit.nl 6 points 1 year ago* (last edited 1 year ago) (1 children)

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)

[–] squaresinger@feddit.de 2 points 1 year ago (1 children)

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@feddit.nl 3 points 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.

[–] Powderhorn 3 points 1 year ago (2 children)

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 3 points 1 year ago (1 children)

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 4 points 1 year ago

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

load more comments (1 replies)
[–] Grishaix@feddit.de 3 points 1 year ago (1 children)

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

[–] squaresinger@feddit.de 4 points 1 year ago (1 children)

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@feddit.de 6 points 1 year ago (2 children)

Thanks for the clarification.

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

[–] CMLVI@kbin.social 2 points 1 year ago (1 children)

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@kbin.social 1 points 1 year ago* (last edited 1 year ago) (1 children)

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@kbin.social 1 points 1 year ago (1 children)

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@kbin.social 2 points 1 year ago* (last edited 1 year ago) (1 children)

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@kbin.social 1 points 1 year ago

Oh awesome! Thank you for the info

[–] squaresinger@feddit.de 1 points 1 year ago

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.

[–] Sal@mander.xyz 3 points 1 year ago* (last edited 1 year ago) (1 children)

I think you left this line behind by accident:

l = Lemmy(INSTANCE_URL)

[–] squaresinger@feddit.de 3 points 1 year ago (3 children)

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.

[–] Sal@mander.xyz 3 points 1 year ago (2 children)

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.

[–] squaresinger@feddit.de 3 points 1 year ago

Huh, that's strange. Yeah, that might be. Should investigate further.

load more comments (1 replies)
load more comments (2 replies)
[–] TheOneCurly@lemmy.theonecurly.page 1 points 1 year ago (1 children)

You've got a slight error in what you posted. l = Lemmy(INSTANCE_URL) isn't needed and breaks the script. Probably a remnant of something else you were doing?

[–] squaresinger@feddit.de 3 points 1 year ago* (last edited 1 year ago)

Yes, sorry, you are right. This line doesn't matter anymore. I removed it.

[–] petrescatraian@libranet.de 1 points 1 year ago (1 children)

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

[–] squaresinger@feddit.de 2 points 1 year ago (1 children)

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@libranet.de 2 points 1 year ago* (last edited 1 year ago) (1 children)

@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@feddit.de 2 points 1 year ago (1 children)

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@libranet.de 2 points 1 year ago (1 children)

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

[–] squaresinger@feddit.de 1 points 1 year ago

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

[–] haxe11 1 points 1 year ago

Kagi and I love it so far.

load more comments
view more: next ›