diff --git a/res/basic-resources/sunrise.png b/res/basic-resources/sunrise.png
index 5cbe9f7..12f419a 100644
Binary files a/res/basic-resources/sunrise.png and b/res/basic-resources/sunrise.png differ
diff --git a/res/basic-resources/sunset.png b/res/basic-resources/sunset.png
index 2e8a73d..874f204 100644
Binary files a/res/basic-resources/sunset.png and b/res/basic-resources/sunset.png differ
diff --git a/test.py b/test.py
new file mode 100644
index 0000000..292bd1a
--- /dev/null
+++ b/test.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2021/12/18
+# @File Name: test.py
\ No newline at end of file
diff --git a/tests/webserver.py b/tests/webserver.py
new file mode 100644
index 0000000..00c0420
--- /dev/null
+++ b/tests/webserver.py
@@ -0,0 +1,301 @@
+#!/usr/bin/env python3
+# -- coding:utf-8 --
+# @Author: markushammered@gmail.com
+# @Development Tool: PyCharm
+# @Create Time: 2021/12/18
+# @File Name: web_weather.py
+
+import socket
+from core.logger import Logger
+from core.read_config import read_config
+from core.information import WeatherInfo
+
+server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+server.bind(('127.0.0.1', 7898))
+server.listen(5)
+
+
+def build_html():
+ settings = read_config()
+ city = settings[3]['city-name']
+ mode = settings[1]['mode']
+ match mode:
+ case 'dev':
+ dev_weather = WeatherInfo().dev_version()
+ dates = dev_weather[0]
+ day_weathers = dev_weather[1]
+ night_weathers = dev_weather[2]
+ highest_temps = dev_weather[3]
+ lowest_temps = dev_weather[4]
+ icons = dev_weather[5]
+ sunset = dev_weather[6]
+ sunrise = dev_weather[7]
+ humidity = dev_weather[8]
+ wind_speed = dev_weather[9]
+ wind_scale = dev_weather[10]
+ wind_dir = dev_weather[11]
+ uv_index = dev_weather[12]
+ cloud = dev_weather[13]
+ pressure = dev_weather[14]
+ vis = dev_weather[15]
+
+ html = f"""
+
+
+
+
+ Title
+
+ 地区:{city}
+
+
+
+ | | 日期 |
+ | 天气 |
+ | 最低温度 |
+ | 最高温度 |
+
+
+
+ | 今天 |
+ {day_weathers[0]} /{night_weathers[0]}
+  | {lowest_temps[0]}℃ |
+ {highest_temps[0]}℃ |
+
+
+ | {dates[1]} |
+ {day_weathers[1]} /{night_weathers[1]}
+  | {lowest_temps[1]}℃ |
+ {highest_temps[1]}℃ |
+
+
+ | {dates[2]} |
+ {day_weathers[2]} /{night_weathers[2]}
+  | {lowest_temps[2]}℃ |
+ {highest_temps[2]}℃ |
+
+
+ | {dates[3]} |
+ {day_weathers[3]} /{night_weathers[3]}
+  | {lowest_temps[3]}℃ |
+ {highest_temps[3]}℃ |
+
+
+ | {dates[4]} |
+ {day_weathers[4]} /{night_weathers[4]}
+  | {lowest_temps[4]}℃ |
+ {highest_temps[4]}℃ |
+
+
+ | {dates[5]} |
+ {day_weathers[5]} /{night_weathers[5]}
+  | {lowest_temps[5]}℃ |
+ {highest_temps[5]}℃ |
+
+
+ | {dates[6]} |
+ {day_weathers[6]} /{night_weathers[6]}
+  | {lowest_temps[6]}℃ |
+ {highest_temps[6]}℃ |
+
+
+
+
+ | |
+
+
+ | 风速/风级/风向 |
+ 相对湿度 |
+ 紫外线 |
+
+
+ | {wind_speed}m/s {wind_scale} {wind_dir} |
+ {humidity}% |
+ {uv_index} |
+
+
+ | |
+
+
+ | 能见度 |
+ 大气压强 |
+ 相对云量 |
+
+
+ | {vis}km |
+ {pressure}hPa |
+ {cloud}% |
+
+
+
+
+ | |
+
+
+  |
+ |
+  |
+
+
+ | {sunrise} |
+ --------------- |
+ {sunset} |
+
+
+ """
+ return html
+ case 'free':
+ dev_weather = WeatherInfo().free_version()
+ dates = dev_weather[0]
+ day_weathers = dev_weather[1]
+ night_weathers = dev_weather[2]
+ highest_temps = dev_weather[3]
+ lowest_temps = dev_weather[4]
+ icons = dev_weather[5]
+ sunset = dev_weather[6]
+ sunrise = dev_weather[7]
+ humidity = dev_weather[8]
+ wind_speed = dev_weather[9]
+ wind_scale = dev_weather[10]
+ wind_dir = dev_weather[11]
+ uv_index = dev_weather[12]
+ cloud = dev_weather[13]
+ pressure = dev_weather[14]
+ vis = dev_weather[15]
+
+ html = f"""
+
+
+
+
+ Title
+
+ 地区:{city}
+
+
+
+ | | 日期 |
+ | 天气 |
+ | 最低温度 |
+ | 最高温度 |
+
+
+
+ | 今天 |
+ {day_weathers[0]} /{night_weathers[0]}
+  | {lowest_temps[0]}℃ |
+ {highest_temps[0]}℃ |
+
+
+ | {dates[1]} |
+ {day_weathers[1]} /{night_weathers[1]}
+  | {lowest_temps[1]}℃ |
+ {highest_temps[1]}℃ |
+
+
+ | {dates[2]} |
+ {day_weathers[2]} /{night_weathers[2]}
+  | {lowest_temps[2]}℃ |
+ {highest_temps[2]}℃ |
+
+
+
+ | |
+
+
+ | 风速/风级/风向 |
+ 相对湿度 |
+ 紫外线 |
+
+
+ | {wind_speed}m/s {wind_scale} {wind_dir} |
+ {humidity}% |
+ {uv_index} |
+
+
+ | |
+
+
+ | 能见度 |
+ 大气压强 |
+ 相对云量 |
+
+
+ | {vis}km |
+ {pressure}hPa |
+ {cloud}% |
+
+
+
+
+ | |
+
+
+  |
+ |
+  |
+
+
+ | {sunrise} |
+ --------------- |
+ {sunset} |
+
+
+ """
+ return html
+ case _:
+ return "You hadn't selected a mode"
+
+
+def process_request():
+ while True:
+ c, a = server.accept()
+ data = str(c.recv(1024)).split(':')[0][6:][:-17]
+ html = build_html()
+ if data == '/':
+ c.send('HTTP1.1/ 200 OK\r\n\r\n'.encode('utf-8'))
+ c.send(html.encode('utf-8'))
+ Logger.info(f'{a}: Get {data} --by browser')
+ else:
+ print(data)
+ try:
+ with open(f'.{data}', 'rb') as f:
+ c.send('HTTP1.1/ 200 OK\r\n\r\n'.encode('utf-8'))
+ c.send(f.read())
+ Logger.info(f'{a}: Get {data} --by browser')
+ except FileNotFoundError:
+ c.send(f'HTTP1.1/ 404 Not Found\r\n\r\n{html}'.encode('utf-8'))
+ c.close()