Mercurial > codedump
annotate getskin.py @ 133:0d8eabdd12ab default tip
create: write H:MM:SS timestamps, add option to fill with gaussian-blur instead of black
many albums are longer than one hour so writing H:MM:SS is a
necessity. if anything there will just be verbose info that
isn't important for my use-case.
however the gaussian-blur is simply broken. It works, and it plays
locally just fine, but YouTube in particular elongates the video
to fit the full width. I'm not entirely sure why it does this, but
it makes it useless and ugly.
| author | Paper <paper@tflc.us> |
|---|---|
| date | Sat, 03 Jan 2026 20:25:38 -0500 |
| 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) |
