-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
120 lines (97 loc) · 4.02 KB
/
main.py
File metadata and controls
120 lines (97 loc) · 4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import requests
from bs4 import BeautifulSoup
import re
versions = ["1.17.1", "1.18", "1.18.1", "1.18.2", "1.19", "1.19.1", "1.19.2", "1.19.3", "1.19.4", "1.20", "1.20.1",
"1.20.2"]
obfuscated_functions = []
forge_functions = []
mojang_pattern = r'Mojang ([a-zA-Z0-9_]+)(.*+)'
obfuscated_pattern = r'Obfuscated ([a-zA-Z0-9_]+)(.*+)'
forge_pattern = r'Searge \(Forge\) ([a-zA-Z0-9_]+)(.*+)'
search_function_name = "getDescriptionId"
argument_size = 1
def printFunction(version_text):
r = requests.get(f'https://nms.screamingsandals.org/{version_text}/net/minecraft/world/item/Item.html')
html_doc = r.text
soup = BeautifulSoup(html_doc, 'html.parser')
uls = soup.find_all("ul", {"class": "list-unstyled"})
for loop in range(uls.__len__() - 1):
lis = uls[loop].findAll("li")
mojang_li = next(filter(lambda li: 'Mojang' in li.text, lis), None).text
obfuscated_li = next(filter(lambda li: 'Obfuscated' in li.text, lis), None).text
forge_li = next(filter(lambda li: 'Forge' in li.text, lis), None).text
mojang_match = re.search(mojang_pattern, mojang_li)
obfuscated_match = re.search(obfuscated_pattern, obfuscated_li)
forge_match = re.search(forge_pattern, forge_li)
if mojang_match:
mojang_function_name = mojang_match.group(1)
if mojang_function_name != search_function_name:
continue
mojang_function_argument_text = mojang_match.group(2)
mojang_function_arguments = mojang_function_argument_text.split(", ")
if "()" in mojang_function_argument_text and argument_size == 1:
continue
if len(mojang_function_arguments) > argument_size:
continue
mojang_text = f"{mojang_function_name}{mojang_match.group(2)}"
else:
continue
if obfuscated_match:
obfuscated_function_name = obfuscated_match.group(1)
obfuscated_functions.append(obfuscated_function_name)
obfuscated_text = f"{obfuscated_function_name}{obfuscated_match.group(2)}"
else:
continue
if forge_match:
forge_function_name = forge_match.group(1)
forge_functions.append(forge_function_name)
forge_text = f"{forge_function_name}{forge_match.group(2)}"
else:
continue
print(f"[{version}] {mojang_text}")
print(f" └ {obfuscated_text}")
print(f" └ {forge_text}")
print("")
# printFunction("1.17.1")
for version in versions:
printFunction(version)
def isEveryEqual(input_list):
if all(x == input_list[0] for x in input_list):
return True
else:
return False
print("")
if isEveryEqual(obfuscated_functions):
print("[Obfuscated] 모든 요소가 같습니다.")
else:
print("[Obfuscated] 모든 요소가 같지 않습니다.")
if isEveryEqual(forge_functions):
print("[Forge] 모든 요소가 같습니다.")
else:
print("[Forge] 모든 요소가 같지 않습니다.")
def printFunction2(version2):
r = requests.get(f'https://nms.screamingsandals.org/{version2}/net/minecraft/nbt/CompoundTag.html')
html_doc = r.text
soup = BeautifulSoup(html_doc, 'html.parser')
# print(soup.prettify())
lis = soup.findAll("li")
mojang_function = "remove"
forge_function = "m_128473_"
mojang_pattern = r'Mojang ([a-zA-Z0-9_]+)'
forge_pattern = r'Searge \(Forge\) ([a-zA-Z0-9_]+)'
for li in lis:
text = li.text
mojang_match = re.search(mojang_pattern, text)
forge_match = re.search(forge_pattern, text)
if mojang_match:
function = mojang_match.group(1)
if mojang_function != function:
continue
print(f"[{version}] {function}")
if forge_match:
function = forge_match.group(1)
if forge_function != function:
continue
forge_functions.append(function)
print(f"[{version}] {function}")
print("")