mirror of
https://github.com/minetest-mods/skinsdb.git
synced 2024-12-23 07:50:18 +01:00
1.0
This commit is contained in:
parent
039f49f408
commit
5e58108006
48
generate_previews.sh
Executable file
48
generate_previews.sh
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# This script is used to generate the previews needed by the mod
|
||||||
|
# It requires blender with the latest python API (2.6x is tested)
|
||||||
|
# A script that works with older blenders and, maybe, without python, is available in older commits.
|
||||||
|
# This script can also use pngcrush and imagemagick to reduce output size,
|
||||||
|
# please enable them if you want to push to the git repository of the mod.
|
||||||
|
# Pngcrush output will be written to .previews/pngcrush_output
|
||||||
|
# Warning: any file in .previews/ and u_skins/textures might be deleted without asking.
|
||||||
|
PNGCRUSH=true
|
||||||
|
IMAGEMAGICK=true
|
||||||
|
cd .previews
|
||||||
|
rm ../u_skins/textures/*_preview*.png # Remove all previous previews
|
||||||
|
blender -b skin_previews.blend --python-text "Generate previews" > /dev/null
|
||||||
|
if $IMAGEMAGICK
|
||||||
|
then echo "Stripping metadata from generated files..."
|
||||||
|
else echo "Moving files..."
|
||||||
|
fi
|
||||||
|
rm -rf output # remove my output
|
||||||
|
mkdir -p output
|
||||||
|
for i in blender_out/character_*_00.png;
|
||||||
|
do
|
||||||
|
out_name=$(basename $i | sed -e 's/_00.png//g')
|
||||||
|
out_file=output/"$out_name"_preview.png
|
||||||
|
if $IMAGEMAGICK
|
||||||
|
then
|
||||||
|
convert -strip $i $out_file
|
||||||
|
else
|
||||||
|
mv $i $out_file
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for i in blender_out/character_*_01.png;
|
||||||
|
do
|
||||||
|
out_name=$(basename $i | sed -e 's/_01.png//g')
|
||||||
|
out_file=output/"$out_name"_preview_back.png
|
||||||
|
if $IMAGEMAGICK
|
||||||
|
then
|
||||||
|
convert -strip $i $out_file
|
||||||
|
else
|
||||||
|
mv $i $out_file
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if $PNGCRUSH
|
||||||
|
then
|
||||||
|
echo "Running pngcrush..."
|
||||||
|
pngcrush -d ../u_skins/textures/ output/*_preview*.png 2> pngcrush_output
|
||||||
|
else mv output/*_preview*.png ../u_skins/textures/
|
||||||
|
fi
|
||||||
|
echo "Done !"
|
0
modpack.txt
Normal file
0
modpack.txt
Normal file
59
set_meta.sh
Executable file
59
set_meta.sh
Executable file
@ -0,0 +1,59 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
SPRITES=$(find -regextype sed -regex '.*/player_[0-9]\{1,\}.png' | sort -V)
|
||||||
|
MODELS=$(find -regextype sed -regex '.*/character_[0-9]\{1,\}.png' | sort -V)
|
||||||
|
function ask_for_meta {
|
||||||
|
convert $2 -scale 100x200 /tmp/skins_set_meta
|
||||||
|
SNAME=$(basename $1)
|
||||||
|
SNAME=${SNAME%.*}
|
||||||
|
METAFILE=u_skins/meta/$SNAME.txt
|
||||||
|
FORCE=$3
|
||||||
|
if $FORCE || ! [ -f $METAFILE ]
|
||||||
|
then
|
||||||
|
echo $METAFILE
|
||||||
|
YADOUT=$(yad --form --image=/tmp/skins_set_meta --field $SNAME:LBL --field=Name --field=Author --field=Description --field=Comment)
|
||||||
|
if [ -z "$YADOUT" ]; then exit; fi # canceled
|
||||||
|
OIFS="$IFS"
|
||||||
|
IFS='|'
|
||||||
|
read -a VALUES <<< "$YADOUT"
|
||||||
|
IFS="$OIFS"
|
||||||
|
NAME=${VALUES[1]}
|
||||||
|
AUTHOR=${VALUES[2]}
|
||||||
|
DESCRIPTION=${VALUES[3]}
|
||||||
|
COMMENT=${VALUES[4]}
|
||||||
|
if [ -n "$NAME" ] && [ -n "$AUTHOR" ]
|
||||||
|
then
|
||||||
|
echo -n > $METAFILE # clear it
|
||||||
|
echo 'name = "'$NAME'",' >> $METAFILE
|
||||||
|
echo 'author = "'$AUTHOR'",' >> $METAFILE
|
||||||
|
# only write description and comment if they are specified
|
||||||
|
if [ -n "$DESCRIPTION" ]
|
||||||
|
then
|
||||||
|
echo 'description = "'$DESCRIPTION'",' >> $METAFILE
|
||||||
|
fi
|
||||||
|
if [ -n "$COMMENT" ]
|
||||||
|
then
|
||||||
|
echo 'comment = "'$COMMENT'",' >> $METAFILE
|
||||||
|
fi
|
||||||
|
echo "Saved !"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
if [ -z $1 ]
|
||||||
|
then
|
||||||
|
for i in $SPRITES
|
||||||
|
do
|
||||||
|
ask_for_meta $i $i false
|
||||||
|
done
|
||||||
|
for i in $MODELS
|
||||||
|
do
|
||||||
|
ask_for_meta $i ${i%.*}_preview.png false
|
||||||
|
done
|
||||||
|
else
|
||||||
|
if [ -f ${1%.*}_preview.png ]
|
||||||
|
then
|
||||||
|
ask_for_meta $1 ${1%.*}_preview.png true
|
||||||
|
else
|
||||||
|
ask_for_meta $1 $1 true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
rm /tmp/skins_set_meta
|
46
update_from_db.py
Executable file
46
update_from_db.py
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
from http.client import HTTPConnection
|
||||||
|
import json
|
||||||
|
import base64
|
||||||
|
|
||||||
|
server = "minetest.fensta.bplaced.net"
|
||||||
|
skinsdir = "u_skins/textures/"
|
||||||
|
metadir = "u_skins/meta/"
|
||||||
|
i = 1
|
||||||
|
pages = 0
|
||||||
|
|
||||||
|
c = HTTPConnection(server)
|
||||||
|
def addpage(page):
|
||||||
|
global i, pages
|
||||||
|
print( "Page: "+str(page))
|
||||||
|
try:
|
||||||
|
c.request("GET","/api/get.json.php?getlist&page="+str(page)+"&outformat=base64")
|
||||||
|
r = c.getresponse()
|
||||||
|
except StandardError:
|
||||||
|
c.request("GET","/api/get.json.php?getlist&page="+str(page)+"&outformat=base64")
|
||||||
|
r = c.getresponse()
|
||||||
|
if r.status != 200:
|
||||||
|
print("Error", r.status)
|
||||||
|
exit(r.status)
|
||||||
|
data = r.read().decode()
|
||||||
|
l = json.loads(data)
|
||||||
|
if not l["success"]:
|
||||||
|
print("Success != True")
|
||||||
|
exit(1)
|
||||||
|
pages = int(l["pages"])
|
||||||
|
for s in l["skins"]:
|
||||||
|
f = open(skinsdir+"character_"+str(i)+".png",'wb')
|
||||||
|
f.write(base64.b64decode(s["img"]))
|
||||||
|
f.close()
|
||||||
|
f = open(metadir+"character_"+str(i)+".txt",'w')
|
||||||
|
f.write('name = "'+s["name"]+'",\n')
|
||||||
|
f.write('author = "'+s["author"]+'",\n')
|
||||||
|
f.write('comment = "'+s["license"]+'",\n')
|
||||||
|
f.close()
|
||||||
|
i = i + 1
|
||||||
|
addpage(1)
|
||||||
|
if pages > 1:
|
||||||
|
for p in range(pages-1):
|
||||||
|
addpage(p+2)
|
||||||
|
print("Skins have been updated. Please run ./generate_previews.sh")
|
||||||
|
|
45
update_from_db2.py
Executable file
45
update_from_db2.py
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
#from http.client import HTTPConnection
|
||||||
|
import json
|
||||||
|
import base64
|
||||||
|
import requests
|
||||||
|
|
||||||
|
server = "minetest.fensta.bplaced.net"
|
||||||
|
skinsdir = "u_skins/textures/"
|
||||||
|
metadir = "u_skins/meta/"
|
||||||
|
i = 1
|
||||||
|
pages = 0
|
||||||
|
|
||||||
|
#c = HTTPConnection(server)
|
||||||
|
def addpage(page):
|
||||||
|
global i, pages
|
||||||
|
print( "Page: "+str(page))
|
||||||
|
try:
|
||||||
|
#c.request("GET","/api/get.json.php?getlist&page="+str(page)+"&outformat=base64")
|
||||||
|
#r = c.getresponse()
|
||||||
|
r = requests.get("http://"+str(server)+"/api/get.json.php?getlist&page="+str(page)+"&outformat=base64")
|
||||||
|
except StandardError:
|
||||||
|
print("Error", r.status)
|
||||||
|
exit(r.status)
|
||||||
|
data = r.text
|
||||||
|
l = json.loads(data)
|
||||||
|
if not l["success"]:
|
||||||
|
print("Success != True")
|
||||||
|
exit(1)
|
||||||
|
pages = int(l["pages"])
|
||||||
|
for s in l["skins"]:
|
||||||
|
f = open(skinsdir+"character_"+str(i)+".png",'wb')
|
||||||
|
f.write(base64.b64decode(s["img"]))
|
||||||
|
f.close()
|
||||||
|
f = open(metadir+"character_"+str(i)+".txt",'w')
|
||||||
|
f.write('name = "'+s["name"]+'",\n')
|
||||||
|
f.write('author = "'+s["author"]+'",\n')
|
||||||
|
f.write('comment = "'+s["license"]+'",\n')
|
||||||
|
f.close()
|
||||||
|
i = i + 1
|
||||||
|
addpage(1)
|
||||||
|
if pages > 1:
|
||||||
|
for p in range(pages-1):
|
||||||
|
addpage(p+2)
|
||||||
|
print("Skins have been updated. Please run ./generate_previews.sh")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user