Fix issue with incomplete Steam profiles, fix to pep8 standards (except line length)
This commit is contained in:
parent
21d608763b
commit
963f512d1e
1 changed files with 58 additions and 52 deletions
|
@ -1,32 +1,20 @@
|
|||
from util import hook, http, web, text
|
||||
from util import hook, http, web, text, timesince
|
||||
from urllib import urlencode
|
||||
from datetime import datetime
|
||||
import re
|
||||
|
||||
|
||||
def db_init(db):
|
||||
db.execute("create table if not exists steam(nick primary key, acc)")
|
||||
db.commit()
|
||||
|
||||
def timesince(dt, default="just now"):
|
||||
now = datetime.utcnow()
|
||||
diff = now - dt
|
||||
periods = (
|
||||
(diff.days / 365, "year", "years"),
|
||||
(diff.days / 30, "month", "months"),
|
||||
(diff.days / 7, "week", "weeks"),
|
||||
(diff.days, "day", "days"),
|
||||
(diff.seconds / 3600, "hour", "hours"),
|
||||
(diff.seconds / 60, "minute", "minutes"),
|
||||
(diff.seconds, "second", "seconds"),
|
||||
)
|
||||
for period, singular, plural in periods:
|
||||
if period:
|
||||
return "%d %s ago" % (period, singular if period == 1 else plural)
|
||||
return default
|
||||
|
||||
@hook.command('sc', autohelp=False)
|
||||
@hook.command(autohelp=False)
|
||||
"""steamcalc [username] [currency] - Gets value of steam account and total hours played. Uses steamcommunity.com/id/<nickname>. Uses IRC nickname if none provided. """
|
||||
def steamcalc(inp, nick='', db=None):
|
||||
"""steamcalc <username> [currency] - Gets value of steam account and
|
||||
total hours played. Uses steamcommunity.com/id/<nickname>. Uses
|
||||
IRC nickname if none provided. """
|
||||
currencies = {'USD': 'us', 'euro1': "de", 'euro2': 'no',
|
||||
'pound': 'uk', 'rubles': 'ru', 'real': 'br',
|
||||
'yen': 'jp', 'dollars': 'us', 'german': 'de',
|
||||
|
@ -56,6 +44,10 @@ def timesince(dt, default="just now"):
|
|||
try:
|
||||
name = soup.findAll('h1', {'class': 'header-title'})[1].text
|
||||
status = soup.findAll('td')[7].text
|
||||
except Exception as e:
|
||||
print e
|
||||
return u"\x02Unable to retrieve info for %s!\x02 Is it a valid SteamCommunity profile username (%s)? " \
|
||||
"Check if your profile is private, or go here to search: %s" % (inp, web.isgd("http://steamcommunity.com/id/%s" % inp), web.isgd("http://steamdb.info/calculator/?" + urldata))
|
||||
if status == "Online":
|
||||
status = "\x033\x02Online\x02\x0f"
|
||||
elif status == "Offline":
|
||||
|
@ -66,19 +58,33 @@ def timesince(dt, default="just now"):
|
|||
status = "\x035\x02Busy\x02\x0f"
|
||||
elif "Looking to" in status:
|
||||
status = "\x036\x02%s\x02\x0f" % status
|
||||
worth = None
|
||||
timeonsteam = None
|
||||
gamesplayed = None
|
||||
try:
|
||||
twdata = soup.find('h1', {'class': 'header-title pull-right'}).find('a')['data-text'].split(", ")
|
||||
money = twdata[0].split("My #Steam account is worth ")[1]
|
||||
time = twdata[1].split("and I spent ")[1].split(" playing games!")[0]
|
||||
worth = "This Steam account is worth \x02%s\x02, and they've spent \x02%s\x02 playing games! " % (money, time)
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
timeonsteam = soup.findAll('i')[1].text[1:-1].split(" ")
|
||||
timestamp = datetime.strptime(timeonsteam[0]+" "+timeonsteam[1]+" "+timeonsteam[2] + " - " + timeonsteam[4]+" "+timeonsteam[5], "%B %d, %Y - %H:%M:%S UTC")
|
||||
timeonsteam = timesince(timestamp)
|
||||
timeonsteam = timesince.timesince(timestamp)
|
||||
timeonsteam = "Their Steam account was created %s ago! " % timeonsteam
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
totalgames = soup.find('b').text
|
||||
notplayed = soup.findAll('b')[1].text
|
||||
nppercent = soup.findAll('i')[3].text[1:-1]
|
||||
gamesplayed = "They have \x02%s games in their Steam library\x02, but \x02%s of them haven't been touched\x02! That's \x02%s\x02! " % (totalgames, notplayed, nppercent)
|
||||
except:
|
||||
pass
|
||||
if not dontsave:
|
||||
db.execute("insert or replace into steam(nick, acc) values (?,?)", (nick.lower(), inp))
|
||||
db.commit()
|
||||
return u"%s (%s): This Steam account is worth \x02%s\x02, and they've spent \x02%s\x02 playing games! Their Steam account was created %s! They have \x02%s games in their Steam library\x02, but \x02%s of them haven't been touched\x02! That's %s! %s" % (name, status, money, time, timeonsteam, totalgames, notplayed, nppercent, web.isgd("http://steamdb.info/calculator/?"+ urldata))
|
||||
except Exception as e:
|
||||
print e
|
||||
return u"\x02Unable to retrieve info for %s!\x02 Check that it's a valid Steam profile username (steamcommunity.com/id/<USERNAME>), check if your profile is private, or go here to search: %s" % (inp, web.isgd("http://steamdb.info/calculator/?"+ urldata))
|
||||
if not worth and not timeonsteam and not gamesplayed:
|
||||
return "I couldn't read the information for that user. %s" % web.isgd("http://steamdb.info/calculator/?" + urldata)
|
||||
return u"%s (%s): %s%s%s%s" % (name, status, worth if worth else "", timeonsteam if timeonsteam else "", gamesplayed if gamesplayed else "", web.isgd("http://steamdb.info/calculator/?" + urldata))
|
||||
|
|
Reference in a new issue