Skip to content

Instantly share code, notes, and snippets.

@meatyite
Created August 5, 2019 13:09
Show Gist options
  • Save meatyite/c63199a4c12a7a8c5f71dde7567939ef to your computer and use it in GitHub Desktop.
Save meatyite/c63199a4c12a7a8c5f71dde7567939ef to your computer and use it in GitHub Desktop.
Minecraft ebonics translation texture pack generator
"""
Retrieve a gizoogled string. Mostly adapted from a library written in ruby.
Optimized for python3.
SL4V DOES NOT OWN THIS MODULE.
I COULDN'T GET THIS TO INSTALL VIA PIP SO I JUST COPY PASTED IT FROM https://github.com/chafla/gizoogle-py
"""
import re
import bs4
from urllib import parse
import requests
import argparse
def text(input_text: str) -> str:
params = {"translatetext": input_text}
target_url = "http://www.gizoogle.net/textilizer.php"
resp = requests.post(target_url, data=params)
# the html returned is in poor form normally.
soup_input = re.sub("/name=translatetext[^>]*>/", 'name="translatetext" >', resp.text)
soup = bs4.BeautifulSoup(soup_input, "lxml")
giz = soup.find_all(text=True)
giz_text = giz[37].strip("\r\n") # Hacky, but consistent.
return giz_text
def link(dest_url: str) -> str:
params = {"search": dest_url}
return "http://www.gizoogle.net/tranzizzle.php?{}".format(parse.urlencode(params))
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Make some text a bit more gangster.")
parser.add_argument("-t", "--text", help="Process text through textilizer.")
parser.add_argument("-l", "--link", help="Gizoogle a website.")
args = parser.parse_args()
if args.text is not None:
print(text(args.text))
elif args.link is not None:
print(link(args.link))
else:
parser.print_help()
import gizoogle
import json
from os import makedirs
from time import sleep
class MinecraftVersionEbonicsTranslator:
def __init__(self, extracted_version_folder_name):
self.actual_folder_name = extracted_version_folder_name
self.new_folder_name = extracted_version_folder_name + " - Ebonics Texture Pack"
self.folder_name = extracted_version_folder_name + '/assets/minecraft'
def __translate_key(self, key):
original_value = self.lang_json[key]
self.lang_json[key] = gizoogle.text(self.lang_json[key])
print('Translated "{}" to "{}"'.format(original_value, self.lang_json[key]))
def __translate_language_json(self):
print("Translating language json.")
lang_json = open(self.folder_name + '/lang/en_us.json', 'rb').read().decode()
lang_json = json.loads(lang_json)
self.lang_json = lang_json
for key in lang_json.keys():
successful = False
while successful is False:
try:
self.__translate_key(key)
successful = True
except Exception as e:
print(str(e))
print("An error has occured. retrying from last translation within 5 seconds.")
sleep(5)
return self.lang_json
def __translate_plain_text(self, file_path):
return gizoogle.text(open(file_path, 'rb').read().decode())
def __translate_texts(self):
print("Translating credits.txt")
credits = self.__translate_plain_text(self.folder_name + '/texts/credits.txt')
print("Translating end.txt")
end = self.__translate_plain_text(self.folder_name + '/texts/end.txt')
print("Translating splashes.txt")
splashes = self.__translate_plain_text(self.folder_name + '/texts/splashes.txt')
print("Done translating.")
return credits, end, splashes
def __make_new_texture_dir(self):
makedirs(self.new_folder_name + '/assets/minecraft/lang')
makedirs(self.new_folder_name + '/assets/minecraft/texts')
def __write_text(self, text, path):
open(path, 'wb').write(text.encode())
def __write_texts(self, credits, end, splashes):
print("Writing credits.txt")
self.__write_text(credits, self.new_folder_name + '/assets/minecraft/texts/credits.txt')
print("Writing end.txt")
self.__write_text(end, self.new_folder_name + '/assets/minecraft/texts/end.txt')
print("Writing splashes.txt")
self.__write_text(splashes, self.new_folder_name + '/assets/minecraft/texts/splashes.txt')
def create_texture_pack(self):
credits, end, splashes = self.__translate_texts()
self.__make_new_texture_dir()
self.__write_texts(credits, end, splashes)
language_json = json.dumps(self.__translate_language_json(), indent=4)
print("Writing en_us.json")
self.__write_text(language_json, self.new_folder_name + '/assets/minecraft/lang/en_us.json')
if __name__ == "__main__":
ebonics_texturepack_generator = MinecraftVersionEbonicsTranslator('1.14.4')
ebonics_texturepack_generator.create_texture_pack()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment