-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig_manager.py
More file actions
93 lines (75 loc) · 3.23 KB
/
Copy pathconfig_manager.py
File metadata and controls
93 lines (75 loc) · 3.23 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
import json
import os
import random
import re
import string
import requests # 添加 requests 库以支持 HTTP 请求
class ConfigManager:
CONFIG_FILE = "config.json"
def __init__(self):
self.config = self.load_config()
def load_config(self):
if os.path.exists(self.CONFIG_FILE):
with open(self.CONFIG_FILE, 'r') as file:
return json.load(file)
return {
"server_address": "",
"api_key": "",
"device_id": self.generate_device_id(),
"devices": [],
"time_tables": [],
"location_id": "" # 添加location_id默认值
}
def save_config(self):
with open(self.CONFIG_FILE, 'w') as file:
json.dump(self.config, file, indent=4)
def generate_device_id(self):
return ''.join(random.choices(string.ascii_uppercase + string.digits, k=16))
def set_server_address(self, address):
self.config["server_address"] = address
def set_api_key(self, key):
self.config["api_key"] = key
def set_remote_video_url(self, url):
self.config["remote_video_url"] = url
def set_device_id(self, device_id):
if re.match(r'^[A-Z0-9]{16}$', device_id):
self.config["device_id"] = device_id
else:
raise ValueError("Device ID must be 16 characters long and contain only uppercase letters and digits.")
def add_device(self, device_id):
if re.match(r'^[A-Z0-9]{16}$', device_id) and device_id not in self.config["devices"]:
self.config["devices"].append({"device_id": device_id})
def remove_device(self, device_id):
self.config["devices"] = [device for device in self.config["devices"] if device["device_id"] != device_id]
def is_valid_device(self, device_id):
return any(device["device_id"] == device_id for device in self.config["devices"])
def set_time_tables(self, time_tables):
self.config["time_tables"] = time_tables
def get_config(self):
return self.config
def fetch_user_data(self):
server_address = self.config["server_address"]
api_key = self.config["api_key"]
url = f"{server_address}api/get_user_data?user_token={api_key}"
try:
print(f"Fetching user data from {url}") # 添加日志记录
response = requests.get(url)
response.raise_for_status()
data = response.json()
# 提取云端数据中的 devices 和 time_tables
cloud_data = data.get("data", {})
devices = cloud_data.get("devices", [])
time_tables = cloud_data.get("time_tables", [])
# 更新本地配置
self.set_devices(devices)
self.set_time_tables(time_tables)
self.save_config()
print("User data fetched and saved successfully") # 添加日志记录
except requests.exceptions.RequestException as e:
print(f"Error fetching user data: {e}")
def set_devices(self, devices):
self.config["devices"] = devices
def set_time_tables(self, time_tables):
self.config["time_tables"] = time_tables
def set_location_id(self, location_id):
self.config["location_id"] = location_id