Skip to content

Commit 3dabd05

Browse files
authored
Dev 3.2.9 (#26)
* improved rpc * Update dank.minecraft-server-scanner.py * Refactor terrain and entity generation in dank.game.py * Major overhaul of terrain and entity generation: switched to chunk-based terrain using Perlin noise, procedural texture and tree model generation, and improved player controls with stamina and camera tilt. * Updated dependencies and executor version to 3.2.9, added new requirements (perlin-noise, pillow), and improved error reporting and stats collection in executor.py. * Update dank.game.py * format every script * dankware.alwaysdata.net
1 parent bee4368 commit 3dabd05

16 files changed

+2008
-1490
lines changed

.vscode/settings.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
{
2-
"editor.formatOnSave": false,
3-
"editor.defaultFormatter": "charliermarsh.ruff",
2+
"editor.formatOnSave": true,
3+
"editor.codeActionsOnSave": {
4+
"source.organizeImports.ruff": "always"
5+
}
46
}

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676

7777
## ♦️ Anonymous Suggestions ♦️
7878

79-
- [Suggest new modules for the dank.tool!](https://dankware.onrender.com/dank-tool-suggestions)
79+
- [Suggest new modules for the dank.tool!](https://dankware.alwaysdata.net/dank-tool-suggestions)
8080

8181
<p>&nbsp;</p>
8282

@@ -130,7 +130,7 @@
130130
- Generates the specified amount of IPs and scans the default Minecraft server port 25565 (java) / 19132 (bedrock)
131131
- IPs are crafted in such a way that it is unique and avoids IPs that aren't valid / local IPs / will not have mc servers hosted on them
132132
- Prints server info including IP, version, number of players online, latency in ms, host city, host org, host domain, server description (gamemode, map, motd on bedrock)
133-
- You automatically contribute to the minecraft [java](https://dankware.onrender.com/minecraft-java-servers) and [bedrock](https://dankware.onrender.com/minecraft-bedrock-servers) server lists by scanning!
133+
- You automatically contribute to the minecraft [java](https://dankware.alwaysdata.net/minecraft-java-servers) and [bedrock](https://dankware.alwaysdata.net/minecraft-bedrock-servers) server lists by scanning!
134134
- Featured on [fmhy](https://fmhy.net/gaming-tools#minecraft-tools)
135135

136136
## ♦️ To Do ♦️

__modules__/dank.browser-backup.py

Lines changed: 70 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
1+
import datetime
12
import os
23
import sys
34
import winreg
45
import zipfile
5-
import datetime
6-
from psutil import process_iter
7-
from translatepy import Translator
8-
from dankware import cls, clr, err, rm_line, is_admin, export_registry_keys, get_path, red
96

7+
from dankware import clr, cls, err, export_registry_keys, get_path, is_admin, red, rm_line
8+
from psutil import process_iter
9+
from rich.align import Align
10+
from rich.console import Console
1011
from rich.live import Live
1112
from rich.panel import Panel
13+
from rich.progress import BarColumn, Progress, SpinnerColumn, TextColumn, TimeElapsedColumn, TimeRemainingColumn
1214
from rich.table import Table
13-
from rich.align import Align
14-
from rich.console import Console
15-
from rich.progress import Progress, SpinnerColumn, BarColumn, TextColumn, TimeRemainingColumn, TimeElapsedColumn
15+
from translatepy import Translator
16+
1617

1718
def translate(text):
1819
if DANK_TOOL_LANG:
19-
try: text = translator.translate(text, DANK_TOOL_LANG, 'en').result
20-
except: pass
20+
try:
21+
text = translator.translate(text, DANK_TOOL_LANG, "en").result
22+
except:
23+
pass
2124
return text
2225

26+
2327
def chrome_installed():
2428
try:
2529
reg_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe"
@@ -29,40 +33,46 @@ def chrome_installed():
2933
except FileNotFoundError:
3034
return False
3135

32-
def backup(browser, compression_level):
3336

37+
def backup(browser, compression_level):
3438
if browser == "Chrome":
35-
3639
path_to_backup = os.path.expandvars(r"%LOCALAPPDATA%\Google\Chrome\User Data")
3740

3841
# check if chrome is installed
3942

4043
if not chrome_installed():
41-
cls(); print(clr(f"\n - {translate('Chrome possibly not installed!')}",2))
44+
cls()
45+
print(clr(f"\n - {translate('Chrome possibly not installed!')}", 2))
4246

4347
# set path to backup
4448

4549
if not os.path.exists(path_to_backup):
46-
print(clr(f"\n - {translate('Invalid Path')}: {path_to_backup}\n",2))
50+
print(clr(f"\n - {translate('Invalid Path')}: {path_to_backup}\n", 2))
4751
while True:
48-
path_to_backup = input(clr(f" > {translate('Input user data folder path')}: ")); rm_line()
52+
path_to_backup = input(clr(f" > {translate('Input user data folder path')}: "))
53+
rm_line()
4954
if os.path.exists(path_to_backup) and r"Google\Chrome\User Data" in path_to_backup:
5055
break
5156

5257
# check if chrome is running
5358

5459
while True:
55-
cls(); chrome_running = False
56-
for proc in process_iter(['name']):
57-
if proc.info['name'] == 'chrome.exe':
58-
chrome_running = True; break
59-
if chrome_running: input(clr(f"\n > {translate('Chrome is running! Terminate it and press [ENTER]...')} ",2))
60-
else: break
60+
cls()
61+
chrome_running = False
62+
for proc in process_iter(["name"]):
63+
if proc.info["name"] == "chrome.exe":
64+
chrome_running = True
65+
break
66+
if chrome_running:
67+
input(clr(f"\n > {translate('Chrome is running! Terminate it and press [ENTER]...')} ", 2))
68+
else:
69+
break
6170

6271
# export registry keys
6372

64-
cls(); print(clr(f"\n - {translate('Exporting registry keys...')}"))
65-
export_registry_keys('HKEY_CURRENT_USER', r'Software\Google\Chrome\PreferenceMACs', export_path='chrome.reg')
73+
cls()
74+
print(clr(f"\n - {translate('Exporting registry keys...')}"))
75+
export_registry_keys("HKEY_CURRENT_USER", r"Software\Google\Chrome\PreferenceMACs", export_path="chrome.reg")
6676

6777
# compress files
6878

@@ -74,9 +84,11 @@ def backup(browser, compression_level):
7484
num_source_files += 1
7585

7686
now = datetime.datetime.now()
77-
zip_name = f'chrome_{now.strftime("%d-%m-%Y")}_{now.strftime("%I-%M-%S-%p")}.zip'
78-
instructions = translate(f'\n - [INSTRUCTIONS TO TRANSFER]: \n\n - Transfer {zip_name} to another computer\n - Install chrome\n - Exit chrome\n - Open windows explorer\n - Paste path [%LOCALAPPDATA%\\Google\\Chrome]\n - Delete the [User Data] folder\n - Move extracted [User Data] folder to [%LOCALAPPDATA%\\Google\\Chrome]\n - Run [chrome.reg]\n - Transfer Complete!')
79-
with open('instructions.txt', 'w', encoding='utf-8') as file:
87+
zip_name = f"chrome_{now.strftime('%d-%m-%Y')}_{now.strftime('%I-%M-%S-%p')}.zip"
88+
instructions = translate(
89+
f"\n - [INSTRUCTIONS TO TRANSFER]: \n\n - Transfer {zip_name} to another computer\n - Install chrome\n - Exit chrome\n - Open windows explorer\n - Paste path [%LOCALAPPDATA%\\Google\\Chrome]\n - Delete the [User Data] folder\n - Move extracted [User Data] folder to [%LOCALAPPDATA%\\Google\\Chrome]\n - Run [chrome.reg]\n - Transfer Complete!"
90+
)
91+
with open("instructions.txt", "w", encoding="utf-8") as file:
8092
file.write(instructions)
8193

8294
width = os.get_terminal_size().columns
@@ -86,7 +98,7 @@ def backup(browser, compression_level):
8698
progress_table.add_row(Panel.fit(job_progress, title="[bright_white]Jobs", border_style="red", padding=(1, 2)))
8799

88100
with Live(progress_table, refresh_per_second=10):
89-
with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED, True, compression_level, strict_timestamps=False) as zipf:
101+
with zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED, True, compression_level, strict_timestamps=False) as zipf:
90102
for root, dirs, files in os.walk(path_to_backup):
91103
for file in files:
92104
file_path = os.path.join(root, file)
@@ -102,49 +114,53 @@ def backup(browser, compression_level):
102114
os.remove("chrome.reg")
103115
os.remove("instructions.txt")
104116
os.system(f'explorer.exe "{os.getcwd()}"')
105-
cls(); input(clr(instructions + f"\n\n > {translate('Press [ENTER] once you have read the steps...')} "))
117+
cls()
118+
input(clr(instructions + f"\n\n > {translate('Press [ENTER] once you have read the steps...')} "))
106119

107-
#elif browser == "Firefox"
108-
#elif browser == "Opera":
109-
#elif browser == "Brave":
120+
# elif browser == "Firefox"
121+
# elif browser == "Opera":
122+
# elif browser == "Brave":
110123

111-
def main():
112124

125+
def main():
113126
global DANK_TOOL_LANG, translator
114127

115128
# check if translator is enabled (dank.tool.exe)
116129

117130
try:
118-
DANK_TOOL_LANG = os.environ['DANK_TOOL_LANG']
119-
if DANK_TOOL_LANG == 'en':
120-
DANK_TOOL_LANG = ''
131+
DANK_TOOL_LANG = os.environ["DANK_TOOL_LANG"]
132+
if DANK_TOOL_LANG == "en":
133+
DANK_TOOL_LANG = ""
121134
else:
122135
translator = Translator()
123136
except:
124-
DANK_TOOL_LANG = ''
137+
DANK_TOOL_LANG = ""
125138

126139
# banner, check if admin
127140

128141
cls()
129142
try:
130143
if not is_admin():
131144
raise RuntimeError(clr("Not executed as administrator! Exporting browser data and registry keys requires admin privileges!"))
132-
except Exception as exc: sys.exit(clr(err((type(exc), exc, exc.__traceback__)),2))
145+
except Exception as exc:
146+
sys.exit(clr(err((type(exc), exc, exc.__traceback__)), 2))
133147

134148
# folders
135149

136-
try: os.chdir(get_path('Documents'))
137-
except: os.chdir("C:\\")
138-
if not os.path.isdir('dank.browser-backup'):
139-
os.mkdir('dank.browser-backup')
140-
os.chdir('dank.browser-backup')
150+
try:
151+
os.chdir(get_path("Documents"))
152+
except:
153+
os.chdir("C:\\")
154+
if not os.path.isdir("dank.browser-backup"):
155+
os.mkdir("dank.browser-backup")
156+
os.chdir("dank.browser-backup")
141157

142158
# user input
143159

144-
browsers = ['Chrome']
160+
browsers = ["Chrome"]
145161
to_print = " - Supported Browsers: \n"
146162
for _, browser in enumerate(browsers):
147-
to_print += f"\n - [{_+1}] {browser}"
163+
to_print += f"\n - [{_ + 1}] {browser}"
148164

149165
banner = "\n\n\n _ _ _ _ _ \n _| |___ ___| |_ | |_ ___ ___ _ _ _ ___ ___ ___ ___| |_ ___ ___| |_ _ _ ___ \n| . | .'| | '_|_| . | _| . | | | |_ -| -_| _|___| . | .'| _| '_| | | . |\n|___|__,|_|_|_,_|_|___|_| |___|_____|___|___|_| |___|__,|___|_,_|___| _|\n |_| \n\n"
150166
Console().print(Align.center(banner), style="blink red", highlight=False)
@@ -154,11 +170,12 @@ def main():
154170
while True:
155171
choice = input(clr(f" > {translate('Enter choice')}: ") + red)
156172
if choice.isdigit() and int(choice) > 0 and int(choice) <= int(len(browsers)):
157-
choice = browsers[int(choice)-1]; break
173+
choice = browsers[int(choice) - 1]
174+
break
158175
rm_line()
159176

160-
#print("")
161-
#while True:
177+
# print("")
178+
# while True:
162179
# password = input(clr(" > Enter backup password: ") + red)
163180
# if password: break
164181
# rm_line()
@@ -167,12 +184,17 @@ def main():
167184
while True:
168185
compression_level = input(clr(f" > {translate('Compression level (Fast/Best)')} [1/2]: ") + red).lower()
169186
match compression_level:
170-
case '1' | 'fast': compression_level = 0; break
171-
case '2' | 'best': compression_level = 9; break
187+
case "1" | "fast":
188+
compression_level = 0
189+
break
190+
case "2" | "best":
191+
compression_level = 9
192+
break
172193
rm_line()
173194

174195
# backup
175196

176197
backup(choice, compression_level)
177198

199+
178200
main()

0 commit comments

Comments
 (0)