summaryrefslogtreecommitdiff
path: root/updater/MT_skins_updater.cs
diff options
context:
space:
mode:
authorbell07 <web.alexander@web.de>2018-08-20 07:13:08 +0200
committerGitHub <noreply@github.com>2018-08-20 07:13:08 +0200
commit4c3072ba8ba1ea298e6a8b155a7d2a12e45018b4 (patch)
tree8669e77db39b7527a7252fb35aa8998a5acb1a1d /updater/MT_skins_updater.cs
parentfa5b3029fdae22ac6c177e9f842194776ec0dfed (diff)
parent169721840e797d6cf3b40f4fc6534ad200ea777a (diff)
Merge pull request #20 from bell07/remove_updatersHEADorigin/masterorigin/HEADmaster
remove all updater
Diffstat (limited to 'updater/MT_skins_updater.cs')
-rw-r--r--updater/MT_skins_updater.cs200
1 files changed, 0 insertions, 200 deletions
diff --git a/updater/MT_skins_updater.cs b/updater/MT_skins_updater.cs
deleted file mode 100644
index 021a999..0000000
--- a/updater/MT_skins_updater.cs
+++ /dev/null
@@ -1,200 +0,0 @@
-using System;
-//Json.NET library (http://json.codeplex.com/)
-using Newtonsoft.Json;
-using System.Collections.Generic;
-using System.Net;
-using System.IO;
-
-// MT skins updater for the skins mod
-// Creator: Krock
-// License: zlib (http://www.zlib.net/zlib_license.html)
-namespace MT_skins_updater {
- class Program {
- static void Main(string[] args) {
- Console.WriteLine("Welcome to the MT skins updater!");
- Console.WriteLine("# Created by: Krock (2014-07-10)");
- Engine e = new Engine();
- Console.WriteLine(@"Path to the skins mod: (ex. 'E:\Minetest\mods\skinsdb\skins\')");
- string path = Console.ReadLine();
- Console.WriteLine("Start updating at page: ('0' to update everything)");
- int page = getInt(Console.ReadLine());
- e.Start(path, page);
- Console.WriteLine("Press any key to exit.");
- Console.ReadKey(false);
- }
- public static int getInt(string i) {
- int ret = 0;
- int.TryParse(i, out ret);
- return (ret > 0)? ret : 0;
- }
- }
- class Engine {
- string root = "http://minetest.fensta.bplaced.net";
- bool alternate = true; //should it use the special version of medadata saving?
-
- public void Start(string path, int page) {
- if (path.Length < 5) {
- Console.WriteLine("Too short path. STOP.");
- return;
- }
- if (path[path.Length - 1] != '\\') {
- path += '\\';
- }
- if(!Directory.Exists(path + "meta")){
- Console.WriteLine("Folder 'meta' not found. STOP.");
- return;
- }
- if(!Directory.Exists(path + "textures")){
- Console.WriteLine("Folder 'textures' not found. STOP.");
- return;
- }
- WebClient cli = new WebClient();
- //add useragent to identify
- cli.Headers.Add("User-Agent", "MT_skin_grabber 1.1");
-
- bool firstSkin = true;
- List<string> skin_local = new List<string>();
- int pages = page,
- updated = 0;
-
- for (; page <= pages; page++) {
- string contents = "";
- try {
- contents = cli.DownloadString(root + "/api/get.json.php?getlist&page=" + page);
- } catch(WebException e) {
- Console.WriteLine("Whoops! Error at page ID: " + page + ". WebClient sais: " + e.Message);
- Console.WriteLine("Press any key to skip this page.");
- Console.ReadKey(false);
- continue;
- }
- Data o = JsonConvert.DeserializeObject<Data>(contents);
- if (o.pages != pages) {
- pages = o.pages;
- }
-
- Console.WriteLine("# Page " + page + " (" + o.per_page + " skins)");
- for (int i = 0; i < o.skins.Length; i++) {
- int id = o.skins[i].id;
- if(o.skins[i].type != "image/png"){
- Console.WriteLine("Image type '" + o.skins[i].type + "' not supported at skin ID: " + id);
- Console.WriteLine("Press any key to continue.");
- Console.ReadKey(false);
- continue;
- }
- //eliminate special chars!
- o.skins[i].name = WebUtility.HtmlDecode(o.skins[i].name);
- o.skins[i].author = WebUtility.HtmlDecode(o.skins[i].author);
-
- //to delete old, removed skins
- if (firstSkin) {
- firstSkin = false;
-
- string[] files = Directory.GetFiles(path + "textures\\");
- for (int f = 0; f < files.Length; f++) {
- string[] filePath = stringSplitLast(files[f], '\\'),
- fileName = stringSplitLast(filePath[1], '.'),
- fileVer = stringSplitLast(fileName[0], '_');
- if (fileVer[1] == "" || fileVer[0] != "character") continue;
-
- int skinNr = Program.getInt(fileVer[1]);
- if (skinNr <= id) continue;
- skin_local.Add(fileName[0]);
- }
- } else skin_local.Remove("character_" + id);
-
- //get file size, only override changed
- FileInfo localImg = new FileInfo(path + "textures\\character_" + id + ".png");
- byte[] imageData = Convert.FromBase64String(o.skins[i].img);
- bool isDif = true;
- if (localImg.Exists) isDif = (Math.Abs(imageData.Length - localImg.Length) >= 3);
-
- if (isDif) {
- File.WriteAllBytes(localImg.FullName, imageData);
- imageData = null;
- //previews
- try {
- cli.DownloadFile(root + "/skins/1/" + id + ".png", path + "textures\\character_" + id + "_preview.png");
- } catch (WebException e) {
- Console.WriteLine("Whoops! Error at skin ID: " + id + ". WebClient sais: " + e.Message);
- Console.WriteLine("Press any key to continue.");
- Console.ReadKey(false);
- }
- } else {
- Console.WriteLine("[SKIP] character_" + id);
- continue;
- }
-
- string meta = "";
- if (!alternate) {
- meta = "name = \"" + o.skins[i].name + "\",\n";
- meta += "author = \"" + o.skins[i].author + "\",\n";
- meta += "comment = \"" + o.skins[i].license + '"';
- } else {
- meta = o.skins[i].name + '\n' + o.skins[i].author + '\n' + o.skins[i].license;
- }
- File.WriteAllText(path + "meta\\character_" + id + ".txt", meta);
- updated++;
- Console.WriteLine("[" + id + "] " + shorten(o.skins[i].name, 20) + "\t by: " + o.skins[i].author + "\t (" + o.skins[i].license + ")");
- }
- }
- foreach (string fileName in skin_local) {
- if(File.Exists(path + "textures\\" + fileName + ".png")) {
- File.Delete(path + "textures\\" + fileName + ".png");
- }
- if(File.Exists(path + "textures\\" + fileName + "_preview.png")) {
- File.Delete(path + "textures\\" + fileName + "_preview.png");
- }
- if(File.Exists(path + "meta\\" + fileName + ".txt")) {
- File.Delete(path + "meta\\" + fileName + ".txt");
- }
- Console.WriteLine("[DEL] " + fileName + " (deleted skin)");
- }
- Console.WriteLine("Done. Updated " + updated + " skins!");
- }
- string shorten(string inp, int len) {
- char[] shr = new char[len];
- for (int i = 0; i < len; i++) {
- if (i < inp.Length) {
- shr[i] = inp[i];
- } else shr[i] = ' ';
- }
- return new string(shr);
- }
-
- string[] stringSplitLast(string path, char limiter) {
- int found = 0;
- int totalLen = path.Length - 1;
- for (int i = totalLen; i >= 0; i--) {
- if (path[i] == limiter) {
- found = i;
- break;
- }
- }
- if (found == 0) {
- return new string[] { "", "" };
- }
-
- int len = totalLen - found;
- char[] str_1 = new char[found],
- str_2 = new char[len];
-
- for (int i = 0; i < path.Length; i++) {
- if (i == found) continue;
- if (i < found) {
- str_1[i] = path[i];
- } else {
- str_2[i - found - 1] = path[i];
- }
- }
- return new string[] { new string(str_1), new string(str_2) };
- }
- }
- class Data {
- public Skins_data[] skins;
- public int page, pages, per_page;
- }
- class Skins_data {
- public string name, author, uploaded, type, license, img;
- public int id, license_id;
- }
-}