summaryrefslogtreecommitdiff
path: root/check.py
diff options
context:
space:
mode:
authorjomo <github@jomo.tv>2015-01-07 01:33:18 +0100
committerjomo <github@jomo.tv>2015-01-07 01:33:18 +0100
commit9230a048afcc148d778a20a0eb1a26de426e978e (patch)
tree16165f2986ce0bcb4f9e61b7c3ccaacc57376caf /check.py
parent7f97087ddbef83c7ae84a24dd448c235ec299850 (diff)
improve check.py
Diffstat (limited to 'check.py')
-rw-r--r--check.py56
1 files changed, 45 insertions, 11 deletions
diff --git a/check.py b/check.py
index 89ecb2f..a1eb9e4 100644
--- a/check.py
+++ b/check.py
@@ -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