diff --git a/chat.html b/chat.html new file mode 100644 index 0000000..cef5b5a --- /dev/null +++ b/chat.html @@ -0,0 +1,728 @@ + + + + + + DeepSeek 对话 + + + +
+

+
+ +
+
+ 思考中 +
+
+
+ +
+
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/deepseek.ico b/deepseek.ico new file mode 100644 index 0000000..dbd9078 Binary files /dev/null and b/deepseek.ico differ diff --git a/logo.webp b/logo.webp new file mode 100644 index 0000000..25254d7 Binary files /dev/null and b/logo.webp differ diff --git a/server.py b/server.py new file mode 100644 index 0000000..104f82b --- /dev/null +++ b/server.py @@ -0,0 +1,88 @@ +import http.server +import socketserver +import webbrowser +import os +import sys +import threading +import time +import signal +import socket + +def resource_path(relative_path): + """获取资源的绝对路径""" + try: + # PyInstaller创建临时文件夹,将路径存储在_MEIPASS中 + base_path = sys._MEIPASS + except Exception: + base_path = os.path.abspath(".") + return os.path.join(base_path, relative_path) + +class CustomHandler(http.server.SimpleHTTPRequestHandler): + def __init__(self, *args, **kwargs): + # 使用resource_path获取正确的目录路径 + base_dir = resource_path(".") + super().__init__(*args, directory=base_dir, **kwargs) + +def is_port_in_use(port): + """检查端口是否被占用""" + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + try: + s.bind(('', port)) + return False + except socket.error: + return True + +def find_available_port(start_port): + """查找可用端口""" + port = start_port + while is_port_in_use(port): + port += 1 + return port + +# 全局变量存储实际使用的端口 +actual_port = None + +def start_server(): + global actual_port + # 查找可用端口 + actual_port = find_available_port(8000) + Handler = CustomHandler + + try: + with socketserver.TCPServer(("", actual_port), Handler) as httpd: + print("DeepSeek本地部署中...") + time.sleep(1) # 添加短暂延迟使提示更自然 + print("DeepSeek部署完毕.") + print("关闭窗口停止运行。") + httpd.serve_forever() + except Exception as e: + print(f"服务器启动错误: {e}") + sys.exit(1) + +def signal_handler(signum, frame): + sys.exit(0) + +def main(): + # 注册信号处理器 + signal.signal(signal.SIGINT, signal_handler) + + # 启动服务器线程 + server_thread = threading.Thread(target=start_server) + server_thread.daemon = False # 改为非守护线程 + server_thread.start() + + # 等待服务器启动和端口分配 + time.sleep(1) + + # 使用实际分配的端口打开浏览器 + webbrowser.open(f'http://localhost:{actual_port}/chat.html') + + try: + # 保持主线程运行 + while True: + time.sleep(1) + except KeyboardInterrupt: + sys.exit(0) + +if __name__ == '__main__': + main() \ No newline at end of file