You've already forked QWeatherReporter
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c9ec788cd3 | ||
|
|
30240033cf | ||
|
|
f986a037a8 | ||
|
|
1b96caf719 | ||
|
|
df1d5a13b4 | ||
|
|
2c111536c7 | ||
|
|
1bedb05ac1 | ||
|
|
fd10791baa | ||
|
|
98b4b9305b | ||
|
|
62d08096b3 | ||
|
|
c32efe4b44 | ||
|
|
9e3f866fb8 | ||
|
|
e8b1a910ae |
@@ -1,7 +1,7 @@
|
||||
<p align="center">
|
||||
<a href="https://github.com/MarkusJoe/QWeather">
|
||||
<img src="https://img.shields.io/badge/Python-3.10.x-blue.svg" alt="PythonVersion">
|
||||
<img src="https://img.shields.io/badge/release-3.1.1b-green.svg" alt="QWeatherVersion">
|
||||
<img src="https://img.shields.io/badge/release-3.1.3b-green.svg" alt="QWeatherVersion">
|
||||
<img src="https://img.shields.io/badge/LINCESE-Apache2.0-orange.svg" alt="LICENSE">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -103,7 +103,12 @@ client-settings:
|
||||
# [选填/只能一个] 开启本地网页快速查看天气
|
||||
# 默认: False
|
||||
# 可选: "True" "False"
|
||||
webserver: false
|
||||
webservice: false
|
||||
|
||||
# [必填/只能一个] 是否使用SSL 连接到邮箱服务器
|
||||
# 默认 True
|
||||
# 可选: "True" "False"
|
||||
SSL: True
|
||||
|
||||
|
||||
# [标识/不填] 仅作用户读取标识
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# @File Name: information.py
|
||||
|
||||
import requests
|
||||
from core import read_config
|
||||
from core.read_config import read_config
|
||||
|
||||
|
||||
class WeatherInfo:
|
||||
|
||||
@@ -13,7 +13,7 @@ import time
|
||||
level = read_config()[2]['level']
|
||||
|
||||
date_format = '%H:%M:%S'
|
||||
info_format_console = '%(log_color)s[%(asctime)s] |%(filename)s[ %(lineno)-3s] |%(levelname)-8s |%(message)s'
|
||||
info_format_console = '%(log_color)s[%(asctime)s] |%(filename)s[%(lineno)-3s] |%(levelname)-8s |%(message)s'
|
||||
info_format_file = '[%(asctime)s] |%(filename)s[%(funcName)sline:%(lineno)d] |%(levelname)-8s |%(message)s'
|
||||
formatter = ColoredFormatter(fmt=info_format_console,
|
||||
datefmt=date_format,
|
||||
|
||||
@@ -13,9 +13,10 @@ from concurrent.futures import ProcessPoolExecutor
|
||||
from core.logger import Logger
|
||||
from core.language import Language
|
||||
from core.settings import change_settings
|
||||
from lib import webserver
|
||||
from core.read_config import read_config
|
||||
from core.sendmail import Mail
|
||||
from lib.get_host_ip import get_host_ip
|
||||
from lib import webservice
|
||||
|
||||
|
||||
def check_time():
|
||||
@@ -105,16 +106,18 @@ def main():
|
||||
Logger.debug(f'{language["debug_done"]}')
|
||||
sys.exit(0)
|
||||
case 'setting':
|
||||
change_settings()
|
||||
Logger.debug(f'{language["debug_done"]}')
|
||||
case _:
|
||||
if check_config():
|
||||
setting()
|
||||
else:
|
||||
change_settings()
|
||||
Logger.debug(f'{language["debug_done"]}')
|
||||
case _:
|
||||
pass
|
||||
|
||||
processes.submit(check_time)
|
||||
if settings[2]['webserver']:
|
||||
processes.submit(webserver.process_request())
|
||||
if settings[2]['webservice']:
|
||||
Logger.info(f'{language["webservice_ip"]}:{get_host_ip()}:7898')
|
||||
processes.submit(webservice.process_request())
|
||||
|
||||
time_count = 0
|
||||
while True:
|
||||
|
||||
20
lib/get_host_ip.py
Normal file
20
lib/get_host_ip.py
Normal file
@@ -0,0 +1,20 @@
|
||||
# -- coding:utf-8 --
|
||||
# @Author: markushammered@gmail.com
|
||||
# @Development Tool: PyCharm
|
||||
# @Create Time: 2021/12/21
|
||||
# @File Name: get_host_ip.py
|
||||
|
||||
import socket
|
||||
|
||||
|
||||
def get_host_ip():
|
||||
"""
|
||||
查询本机ip地址
|
||||
:return: ip
|
||||
"""
|
||||
ip_s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
ip_s.connect(('8.8.8.8', 80))
|
||||
ip = ip_s.getsockname()[0]
|
||||
ip_s.close()
|
||||
|
||||
return ip
|
||||
@@ -3,7 +3,7 @@
|
||||
# @Author: markushammered@gmail.com
|
||||
# @Development Tool: PyCharm
|
||||
# @Create Time: 2021/12/18
|
||||
# @File Name: webserver.py
|
||||
# @File Name: webservice.py
|
||||
|
||||
|
||||
import socket
|
||||
@@ -11,14 +11,21 @@ import sys
|
||||
from core.logger import Logger
|
||||
from core.read_config import read_config
|
||||
from core.information import WeatherInfo
|
||||
from core.language import Language
|
||||
|
||||
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.bind(('localhost', 7898))
|
||||
server.listen(5)
|
||||
|
||||
language = Language()
|
||||
|
||||
|
||||
def build_html():
|
||||
"""
|
||||
构建html主体
|
||||
:return:
|
||||
"""
|
||||
settings = read_config()
|
||||
city = settings[3]['city-name']
|
||||
mode = settings[1]['mode']
|
||||
@@ -289,16 +296,20 @@ def build_html():
|
||||
|
||||
|
||||
def process_request():
|
||||
"""
|
||||
处理请求
|
||||
:return:
|
||||
"""
|
||||
try:
|
||||
while True:
|
||||
c, a = server.accept()
|
||||
data = str(c.recv(1024)).split(':')[0][6:][:-17]
|
||||
html = build_html()
|
||||
if data == '/':
|
||||
if data == '/': # 判断用户请求的目标是否为根目录, 如果是则返回html; 如果不是则继续判断
|
||||
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:
|
||||
else: # 继续判断用户请求的文件是否存在
|
||||
try:
|
||||
with open(f'.{data}', 'rb') as f:
|
||||
c.send('HTTP1.1/ 200 OK\r\n\r\n'.encode('utf-8'))
|
||||
@@ -308,8 +319,8 @@ def process_request():
|
||||
c.send(f'HTTP1.1/ 404 Not Found\r\n\r\n{html}'.encode('utf-8'))
|
||||
c.close()
|
||||
except BrokenPipeError:
|
||||
Logger.critical('Link speed was too fast! Subprocess:webserver exited')
|
||||
Logger.critical(f'{language["connection_speed_too_fast"]}')
|
||||
sys.exit(1)
|
||||
except IOError:
|
||||
Logger.critical('An IO Error')
|
||||
Logger.critical(f'{language["an_io_error"]}')
|
||||
sys.exit(1)
|
||||
@@ -31,5 +31,8 @@
|
||||
"language_not_filled": "Language hasn't filled, default: zh_cn.",
|
||||
"no_location": "You haven't fill the location in the config file.",
|
||||
"change_setting": "You are changing setting.",
|
||||
"exit": "Exited."
|
||||
"exit": "Exited.",
|
||||
"webservice_ip": "Local webservice ip",
|
||||
"connection_speed_too_fast": "Connection speed is too fast, subprocess: webservice has exited.",
|
||||
"an_io_error": "An IO error."
|
||||
}
|
||||
|
||||
@@ -30,5 +30,8 @@
|
||||
"language_file_read_successfully": "多语言模块加载成功",
|
||||
"language_not_filled": "语言选项为填写完成或填写错误, 默认zh_cn",
|
||||
"change_setting": "更改设置",
|
||||
"exit": "已退出"
|
||||
"exit": "已退出",
|
||||
"webservice_ip": "webservice地址",
|
||||
"connection_speed_too_fast": "连接速度过快, 子进程:webservice.py 已退出",
|
||||
"an_io_error": "一个IO错误"
|
||||
}
|
||||
Reference in New Issue
Block a user