How much reputation does a steam user have?
Python 3, 73 bytes
I'm sure this answer is garbage and will be beaten soon, but there's no other python answers yet
lambda x:sum(["- +".index(i[0])-1for i in x.split('\n')if i[1:4]=="rep"])
Use like this:
f = lambda x:sum(["- +".index(i[0])-1for i in x.split('\n')if i[1:4]=="rep"])
print(f("PUT INPUT HERE"))
Fetching from steam
Here's some sample code which fetches the first 100 comments from KennyS' profile and calculates his rep.
import requests
from bs4 import BeautifulSoup
# Kenny's profile as Steam ID 64
# You can adjust this to whatever numbers you want
STEAM_PROFILE_URL = "76561198024905796"
payload = {"start" : 0, "count" : 100}
r = requests.post("http://steamcommunity.com/comment/Profile/render/{}/-1/".format(STEAM_PROFILE_URL), payload)
# Comments are html inside a json object
soup = BeautifulSoup(r.json()["comments_html"], "html.parser")
# Get raw text for every comment.
# The " ".join() strips out the newlines and tabs which are part of html
comments = [" ".join(s.text.split()) for s in soup.find_all("div", {"class" : "commentthread_comment_text"})]
calculateRep = lambda x:sum(["- +".index(i[0])-1for i in x.split('\n')if i[1:4]=="rep"])
print(calculateRep("\n".join(comments)))
Perl 5, 25 bytes
24 bytes of code + -p
flag.
$\+=/^\+rep /-/^-rep /}{
Try it online!
/^\+rep /
returns 1
if the line starts with +rep
; /^-rep /
returns 1
if the line starts with -rep
(so only one of them will be one at most). We use $\
to store the result, as it is implicitly printed at the end (thanks to -p
flag and those unmatched }{
).
05AB1E, 18 16 17 bytes
Saved 2 bytes thanks to Okx
+1 byte due to change in spec where rep now need to be followed by a space.
|vy5£„+-S„·Ý «QÆO
Try it online!
Explanation
|v # for each line of input
y5£ # get the first 4 chars of input
„+-S„·Ý « # push the list ['+rep ','-rep ']
Q # check each for equality
# results in either [1,0] for +rep, [0,1] for -rep or [0,0] for others
Æ # reduce by subtraction, gives either 1, -1 or 0
O # sum