forked from AlianBlank/download.unity.com
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdecode_html.py
More file actions
146 lines (130 loc) · 5.69 KB
/
decode_html.py
File metadata and controls
146 lines (130 loc) · 5.69 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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import json
from bs4 import BeautifulSoup
# generate md file
def generate(_dict):
result = []
line = ['', "\n# Unity Version :" + _dict['version_code'], "\tPublish Date :" + _dict['version_build_date'],
"\n> Unity Hub : " + _dict['unity_hub_url'], '\n\n']
# for big_version_key, big_version_value in _dict.items():
# for version_value in _dict.items():
platform = _dict['platform']
if platform.get('win') is not None:
win_list = platform['win']
line.append('## Windows \n\n')
for item in win_list:
line.append("> " + item['key'] + ' ' + item['value'] + '\n\n')
if platform.get('mac') is not None:
mac_list = platform['mac']
line.append('## Mac \n\n')
for item in mac_list:
line.append("> " + item['key'] + ' ' + item['value'] + '\n\n')
if platform.get('linux') is not None:
linux_list = platform['linux']
line.append('## Linux \n\n')
for item in linux_list:
line.append("> " + item['key'] + ' ' + item['value'] + '\n\n')
result.append(''.join(line))
return '\n\n'.join(result)
# decode
def decode(text):
soup = BeautifulSoup(text, "html.parser")
for version in [
"download-archive-6000",
"download-archive-2023",
"download-archive-2022",
"download-archive-2021",
"download-archive-2020",
"download-archive-2019",
"download-archive-2018",
"download-archive-2017",
"download-archive-5",
]:
# print(version)
version_list = soup.select("#" + version + " > div > div[class='download-release-wrapper']")
result = ''
json_result = []
for version_ele in version_list:
# print(version_ele)
version_value = {'version_code': "", 'version_build_date': "", 'unity_hub_url': "",
'platform': {'win': [], 'mac': []}}
# 获取到了版本号
version_code = version_ele.select("div[class='release-title']")
if len(version_code):
version_value['version_code'] = version_code[0].get_text()
# print(version_code[0].get_text())
# get publish date
version_build_date = version_ele.select("div[class='release-date']")
if len(version_build_date):
version_value['version_build_date'] = version_build_date[0].get_text()
# print(version_build_date[0].get_text())
# Unity Hub
unity_hub = version_ele.select("a[class='btn btn-blue']")
if len(unity_hub) > 0:
version_value['unity_hub_url'] = unity_hub[0]["href"]
version_select_win_box = version_ele.select(
"div[class='release-win dropdown']"
)
for version_platform in version_select_win_box:
# get platform
platform = version_platform.select("div[class='label']")
temp_list = []
if len(platform):
# win
version_value['platform']['win'] = temp_list
for target_list in version_platform.select("ul a"):
temp_list.append(
{
'key': target_list.get_text().replace("\n", "").replace(" ", ""),
'value': target_list["href"]
}
)
version_select_mac_box = version_ele.select(
"div[class='release-mac dropdown']"
)
for version_platform in version_select_mac_box:
# get platform
platform = version_platform.select("div[class='label']")
temp_list = []
if len(platform):
# mac
version_value['platform']['mac'] = temp_list
for target_list in version_platform.select("ul a"):
temp_list.append(
{
'key': target_list.get_text().replace("\n", "").replace(" ", ""),
'value': target_list["href"]
}
)
version_select_linux_box = version_ele.select(
"div[class='release-linux dropdown']"
)
for version_platform in version_select_linux_box:
# get platform
platform = version_platform.select("div[class='label']")
temp_list = []
if len(platform):
# linux
version_value['platform']['linux'] = temp_list
for target_list in version_platform.select("ul a"):
temp_list.append(
{
'key': target_list.get_text().replace("\n", "").replace(" ", ""),
'value': target_list["href"]
}
)
res = generate(version_value)
result += res + '\n'
json_result.append(version_value)
# save list
fo = open(version + ".md", "w+", encoding="utf-8")
fo.write(result)
# close file
fo.close()
fo = open(version + ".json", "w+", encoding="utf-8")
fo.write(json.dumps(json_result, indent=2))
# close file
fo.close()
f = open("download.html", "r", encoding='utf-8')
download_web_text = f.read()
decode(download_web_text)
print('ok')