Mercurial > codedump
annotate getskin.py @ 129:8c39820da60a
add decode-mixed-mode.c
this decodes macintosh mixed-mode procedure types. It currently
only supports stack-based procedures :)
| author | Paper <paper@tflc.us> | 
|---|---|
| date | Sun, 19 Oct 2025 22:48:24 -0400 | 
| parents | eac6dae753ca | 
| children | 
| rev | line source | 
|---|---|
| 
44
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
1 # minecraft skin fetcher | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
2 # by Paper, 2021-07-13 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
3 # this only really exists as reference to a possible java implementation | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
4 # (for those beta versions of minecraft that don't support UUIDs) | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
5 # however, i do not have any java experience, like, at all | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
6 # so that'll be fun! | 
| 
118
 
eac6dae753ca
*: major cleanup
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents: 
44 
diff
changeset
 | 
7 # | 
| 
 
eac6dae753ca
*: major cleanup
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents: 
44 
diff
changeset
 | 
8 # update 2023-03-03: it was never written LOL | 
| 
44
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
9 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
10 import argparse | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
11 import base64 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
12 import cv2 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
13 import json | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
14 import numpy | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
15 import urllib.request | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
16 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
17 def get_status_code(mcign): | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
18 return urllib.request.urlopen(f"https://api.mojang.com/users/profiles/minecraft/{mcign}").getcode() | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
19 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
20 # parse arguments | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
21 parser = argparse.ArgumentParser() | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
22 parser.add_argument('-c', '--crop', help='crops your skin to 64x32, for beta versions', action="store_true") | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
23 parser.add_argument('-u', '--username', help='minecraft in-game name') | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
24 args = parser.parse_args() | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
25 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
26 # parse username, probably unnecessarily long but idc | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
27 if args.username: | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
28 myname = args.username | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
29 try: | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
30 statuscode = get_status_code(myname) | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
31 except: | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
32 myname = input("What is your Minecraft username?: ") | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
33 statuscode = get_status_code(myname) | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
34 finally: | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
35 while statuscode == 204: | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
36 myname = input("What is your Minecraft username?: ") | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
37 statuscode = get_status_code(myname) | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
38 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
39 skinlink = json.loads(base64.b64decode(json.loads(urllib.request.urlopen(f'https://sessionserver.mojang.com/session/minecraft/profile/{json.loads(urllib.request.urlopen("https://api.mojang.com/users/profiles/minecraft/{0}".format(myname)).read().decode("utf-8"))["id"]}').read().decode("utf-8"))["properties"][0]["value"]).decode("utf-8"))["textures"]["SKIN"]["url"] # get your free long lines here! | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
40 skin = numpy.asarray(bytearray(urllib.request.urlopen(skinlink).read()), dtype="uint8") | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
41 skin = cv2.imdecode(skin, cv2.IMREAD_UNCHANGED) | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
42 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
43 # this is worthless if your skin is already 64x32 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
44 if args.crop: | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
45 skin = skin[0:32, 0:64] | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
46 | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
47 # write the final skin | 
| 
 
190ac0f669c6
Upload getskin.py
 
Paper <37962225+mrpapersonic@users.noreply.github.com> 
parents:  
diff
changeset
 | 
48 cv2.imwrite("skin.png", skin) | 
