-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapiplayer2yaml
executable file
·117 lines (99 loc) · 2.68 KB
/
apiplayer2yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/bash
set -o pipefail
MINUTES=1440
APIURL=
SCRIPT="`readlink -e $0`"
SCRIPTPATH="`dirname $SCRIPT`"
REFRESH=false;
FILEARG="$1";
if [ "$1" = "-r" ]; then
REFRESH=true;
FILEARG="$2";
fi
if [ "$FILEARG" = "" ] || [ ! -f "$FILEARG" ] ; then
echo $0: "Specify a player.dat File" >&2
exit 1;
fi
CURL=`which curl`
if [ $? -ne 0 ]; then
echo $0: "curl wasn't found on path" >&2
exit 1;
fi
if [ ! -f "$SCRIPTPATH/json2yaml" ]; then
echo $0: Cannot find "$SCRIPTPATH/json2yaml" >&2
exit 1;
fi
PLAYERDAT="`readlink -e "$FILEARG"`"
PLAYERDATPATH="`dirname $PLAYERDAT`"
UUID=`echo -n $FILEARG|grep -Eo '[^/]+$'|cut -d '.' -f 1|sed 's/-//g'`;
if [ ! -f "$PLAYERDATPATH/api-$UUID.yaml" ]; then
touch "$PLAYERDATPATH/api-$UUID.yaml"
if [ $? != 0 ]; then
echo $0: Unable to create file "$PLAYERDATPATH/api-$UUID.yaml" >&2
exit;
fi
fi
DATA=false
if [ -f "$PLAYERDATPATH/api-$UUID.yaml" ] && [ -s "$PLAYERDATPATH/api-$UUID.yaml" ]; then
DATA=true
fi
if [ ! -w "$PLAYERDATPATH/api-$UUID.yaml" ]; then
if [ $DATA = true ]; then
echo $0: "$PLAYERDATPATH/api-$UUID.yaml" had data, but was not writable... Nonfatal. >&2
REFRESH=false
else
echo $0: "$PLAYERDATPATH/api-$UUID.yaml" is not writable >&2
exit 1;
fi
fi
if [ $REFRESH = false ] && [ $DATA = false ]; then
REFRESH=true
fi
if [ $REFRESH = false ]; then
FINDFILEMOD=`find "$PLAYERDATPATH/api-$UUID.yaml" -mmin -$MINUTES`
if [ "$FINDFILEMOD" = "" ]; then
REFRESH=true
fi
fi
if [ $REFRESH = true ]; then
TEMPFILE="`tempfile -m 0644`"
"$CURL" -LsSf "https://sessionserver.mojang.com/session/minecraft/profile/$UUID">"$TEMPFILE"
C=$?
if [ $C -ne 0 ]; then
if [ $DATA = false ]; then
echo $0: Received non-zero exit status of from curl >&2
echo $RESPONSE >&2
exit $C;
else
echo $0: Received exit status of $C from curl but already have data, so Nonfatal. >&2
fi
else
if [ ! -s "$TEMPFILE" ]; then
#echo $0: "Received empty response from api for $UUID" >&2
echo "'id': '$UUID'">>"$TEMPFILE"
echo "'name': ">>"$TEMPFILE"
cp "$TEMPFILE" "$PLAYERDATPATH/api-$UUID.yaml";
else
TEMPFILE2="`tempfile -m 0644`"
cat "$TEMPFILE"|"$SCRIPTPATH/json2yaml"|grep -vE '^ *$' > "$TEMPFILE2"
E=$?
if [ $E -ne 0 ]; then
if [ $DATA = false ]; then
echo $0: Received non-zero exit status from "$SCRIPTPATH/json2yaml" >&2
cat "$TEMPFILE" >&2
cat "$TEMPFILE2" >&2
exit $E;
else
echo $0: Received exit status of $C from "$SCRIPTPATH/json2yaml" but already have data, so Nonfatal. >&2
cat "$TEMPFILE" >&2
cat "$TEMPFILE2" >&2
fi
rm "$TEMPFILE2";
else
mv "$TEMPFILE2" "$PLAYERDATPATH/api-$UUID.yaml";
fi
fi
fi
rm "$TEMPFILE"
fi
cat "$PLAYERDATPATH/api-$UUID.yaml"