From 71bebbeb097b8cb6ec3ec902621bb17c65dd7dfb Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Wed, 8 Oct 2014 16:31:14 +0200 Subject: [PATCH] Update the stuff --- README | 13 ++++++++ update_skins_db.sh | 78 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 update_skins_db.sh diff --git a/README b/README index 7df2d89..ff45c16 100644 --- a/README +++ b/README @@ -10,6 +10,19 @@ To download the latest skins you need to run: "./update_from_db.py" OR the win32.NET client +Licenses: +-------- + +cornernote: + Lua source code (GPLv3) + +Fritigern: + update_skins_db.sh (CC-BY-NC-SA 4.0) + +Krock: + Lua source code (GPLv3) + MT_skins_updater.exe (WTFPL) + Credits: -------- RealyBadAngel unified_inventory and Zeg9 skinsdb diff --git a/update_skins_db.sh b/update_skins_db.sh new file mode 100644 index 0000000..8bf9e1a --- /dev/null +++ b/update_skins_db.sh @@ -0,0 +1,78 @@ +#!/bin/bash +#### +# Licenced under Attribution-NonCommercial-ShareAlike 4.0 International +# http://creativecommons.org/licenses/by-nc-sa/4.0/ +#### ATTENTION #### +## This script requires that jq and coreutils are installed on your system ## +## In Debian-based distros, open a terminal and run +## sudo apt-get install jq coreutils +################### + +# == Set variables === +# ==================== +NUMPAGES="1" # Number of pages. Default is 1 page +PERPAGE="2000" # Number of items per page. Default is 2000. +JSONURL="http://minetest.fensta.bplaced.net/api/get.json.php?getlist&page=$NUMPAGES&outformat=base64&per_page=$PERPAGE" # The URL to the database +PREVIEWURL="http://minetest.fensta.bplaced.net/skins/1/" # The url to the location of the previews. +temp=$PWD/tmp # Where the temp folder will be. Default is $PWD/tmp, which means that the tmp folder will be put in the current folder +METADEST=$PWD/u_skins/meta # This is the folder where the meta data will be saved +TEXTUREDEST=$PWD/u_skins/textures # This is the folder where the skins and the previews will be saved + + +# === Make a bunch of folders and download the db === +# =================================================== +if [ -d "$temp" ]; then + rm -r $temp # If the temp dir exists we will remove it and its contents. +fi +mkdir $temp # Make a new temp dir. Redundant? No. We will get rid of it later. + +if [ ! -d "$METADEST" ]; then # Check to see if the meta dir exists, and if not, create it + mkdir $METADEST +fi + +if [ ! -d "$TEXTUREDEST" ]; then # Check to see if the textures dir exists, and if not, create it + mkdir $TEXTUREDEST +fi + +wget $JSONURL -O $temp/rawdb.txt # Download the entire database + + +# === Do the JSON thing === +# ========================= +i="0" # This will be the counter. +while [ "$ID" != "null" ] # Repeat for as long as there is data to process + do + ID=$(cat $temp/rawdb.txt | jq ".skins[$i].id") + + # The next lines are kinda complex. sed is being used to strip the quotes from the variables. I had help... + meta_name=$(echo $(cat $temp/rawdb.txt | jq ".skins[$i].name") | sed -e 's/^"//' -e 's/"$//') + meta_author=$(echo $(cat $temp/rawdb.txt | jq ".skins[$i].author") | sed -e 's/^"//' -e 's/"$//') + meta_license=$(echo $(cat $temp/rawdb.txt | jq ".skins[$i].license") | sed -e 's/^"//' -e 's/"$//') + + if [[ "$ID" != "null" ]]; then # Check to see if ID has a value + echo "#"$ID "name:" $meta_name "author:" $meta_author "license:" $meta_license # Verbosity to show that the script is working. + + echo $meta_name > $METADEST/character_$ID.txt # Save the meta data to files, this line overwrites the data inside the file + echo $meta_author >> $METADEST/character_$ID.txt # Save the meta data to files, this line is added to the file + echo $meta_license >> $METADEST/character_$ID.txt # Save the meta data to files, and this line is added to the file as well. + + + # === Extract and save the image from the JSON file === + # ====================================================== + skin=$(echo $(cat $temp/rawdb.txt | jq ".skins[$i].img") | sed -e 's/^"//' -e 's/"$//') # Strip the quotes from the base64 encoded string + echo $skin | base64 --decode > $TEXTUREDEST"/character_"$ID".png" # Decode the string, and save it as a .png file + + + # === Download a preview image whilst we're at it === + # ==================================================== + wget -nv $PREVIEWURL/$ID".png" -O $TEXTUREDEST"/character_"$ID"_preview.png" # Downloads a preview of the skin that we just saved. + + fi + i=$[$i+1] # Increase the counter by one. + done + +# === Now we'll clean up the mess === +# =================================== +rm -r $temp # Remove the temp dir and its contents. + +exit # Not strictly needed, but i like to use it to wrap things up.