diff options
author | jomo <github@jomo.tv> | 2015-01-07 01:33:18 +0100 |
---|---|---|
committer | jomo <github@jomo.tv> | 2015-01-07 01:33:18 +0100 |
commit | 9230a048afcc148d778a20a0eb1a26de426e978e (patch) | |
tree | 16165f2986ce0bcb4f9e61b7c3ccaacc57376caf /check.py | |
parent | 7f97087ddbef83c7ae84a24dd448c235ec299850 (diff) |
improve check.py
Diffstat (limited to 'check.py')
-rw-r--r-- | check.py | 56 |
1 files changed, 45 insertions, 11 deletions
@@ -1,20 +1,51 @@ import json import urllib2 import datetime +import mysqlhack #pylint: disable = unused-import +from com.ziclix.python.sql import zxJDBC +from secrets import * from helpers import * # receive info based on the user's IP. information provided by ipinfo.io def ip_info(player): - data = json.load(urllib2.urlopen("http://ipinfo.io%s/json" % str(player.getAddress().getAddress()))) - return data + if player.isOnline(): + return json.load(urllib2.urlopen("http://ipinfo.io%s/json" % str(player.getAddress().getAddress()))) + else: + return None # receive first join date based on the player data (may not be accurate) def get_first_join(player): first_join = int(player.getFirstPlayed()) dt = datetime.datetime.fromtimestamp(first_join/1000.0) - return "%s-%s-%s %s:%s:%s" % (str(dt.year), str(dt.month), str(dt.day), str(dt.hour), str(dt.minute), str(dt.second)) + return dt.strftime("%Y-%m-%d %H:%M") + + +# receive last seen date based on the player data +def get_last_seen(player): + last_seen = int(player.getLastPlayed()) + dt = datetime.datetime.fromtimestamp(last_seen/1000.0) + return dt.strftime("%Y-%m-%d %H:%M") + + +# receive link and email from website +def get_website_data(player): + conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver") + curs = conn.cursor() + uuid = str(uid(player)).replace("-", "") + curs.execute("SELECT DISTINCT `id`, `email` FROM users WHERE `uuid` = ? LIMIT 1", (uuid),) + results = curs.fetchall() + curs.close() + conn.close() + return results + if len(results) > 0: + return { + "link": "http://redstoner.com/users/%s" % results[0], + "email": results[1] + } + else: + return {} # receive country based on the user's IP @@ -23,7 +54,7 @@ def get_country(data): def get_all_names(player): - uuid = str(player.getUniqueId()).replace("-", "") + uuid = str(uid(player)).replace("-", "") names = json.load(urllib2.urlopen("https://api.mojang.com/user/profiles/%s/names" % uuid)) # [ {"name": "some_name"}, {"name": "other_name"} ] return ", ".join([name["name"] for name in names]) @@ -37,16 +68,19 @@ def get_all_data(sender, player): try: msg(sender, "&7 -- Data provided by Redstoner") - msg(sender, "&6> UUID: &e%s" % str(player.getUniqueId())) + msg(sender, "&6> UUID: &e%s" % str(uid(player))) msg(sender, "&6> First joined: &7(y-m-d h:m:s) &e%s" % get_first_join(player)) - msg(sender, "") + msg(sender, "&6> Last seen: &7(y-m-d h:m:s) &e%s" % get_last_seen(player)) + website = get_website_data(player) + msg(sender, "&6> Website account: &e%s" % website.get("link")) + msg(sender, "&6> email: &e%s" % website.get("email")) msg(sender, "&7 -- Data provided by ipinfo.io") msg(sender, "&6> Country: &e%s" % get_country(data)) msg(sender, "&7 -- Data provided by Mojang") msg(sender, "&6> All ingame names used so far: &e%s" % get_all_names(player)) - except Exception as e: + except: # can throw exceptions such as timeouts when Mojang API is down - warn(e) + msg(sender, "&cSorry, something went wrong while fetching data") @hook.command("check", description="Displays useful stuff about a user", usage="/check <player>") @@ -55,11 +89,11 @@ def on_hook_command(sender, args): plugin_header(sender, "Check") msg(sender, "&7Please notice that the data may not be fully accurate!") - player = server.getPlayer(args[0]) if len(args) > 0 else None - if player is not None and is_player(player): + player = server.getOfflinePlayer(args[0]) if len(args) > 0 else None + if is_player(player): get_all_data(sender, player) else: - msg(sender, "&cLooks like this player is not online.") + msg(sender, "&cCouldn't find this player") else: msg(sender, "&4You don't have the required permissions to execute this command!") return True
\ No newline at end of file |