Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -170,19 +170,40 @@ def generate_world_save_filename(username="User", world_name="World"):
|
|
170 |
return f"{WORLD_STATE_FILE_MD_PREFIX}{clean_world}_by_{clean_user}_{timestamp}_{rand_hash}.md"
|
171 |
|
172 |
def parse_world_filename(filename):
|
|
|
173 |
basename = os.path.basename(filename)
|
|
|
174 |
if basename.startswith(WORLD_STATE_FILE_MD_PREFIX) and basename.endswith(".md"):
|
175 |
-
|
|
|
|
|
176 |
if len(parts) >= 5 and parts[-3] == "by":
|
177 |
-
timestamp_str = parts[-2]
|
178 |
-
|
179 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
return {"name": world_name or "Untitled", "user": username, "timestamp": timestamp_str, "dt": dt_obj, "filename": filename}
|
181 |
-
|
182 |
-
|
183 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
return {"name": basename.replace('.md','').replace(WORLD_STATE_FILE_MD_PREFIX, ''), "user": "Unknown", "timestamp": "Unknown", "dt": dt_fallback, "filename": filename}
|
185 |
|
|
|
186 |
|
187 |
def save_world_state_to_md(target_filename_base):
|
188 |
"""Saves the current cached world state to a specific MD file."""
|
|
|
170 |
return f"{WORLD_STATE_FILE_MD_PREFIX}{clean_world}_by_{clean_user}_{timestamp}_{rand_hash}.md"
|
171 |
|
172 |
def parse_world_filename(filename):
|
173 |
+
"""Extracts info from filename if possible, otherwise returns defaults."""
|
174 |
basename = os.path.basename(filename)
|
175 |
+
# Check prefix and suffix
|
176 |
if basename.startswith(WORLD_STATE_FILE_MD_PREFIX) and basename.endswith(".md"):
|
177 |
+
core_name = basename[len(WORLD_STATE_FILE_MD_PREFIX):-3]
|
178 |
+
parts = core_name.split('_')
|
179 |
+
# Check if structure matches Name_by_User_Timestamp_Hash
|
180 |
if len(parts) >= 5 and parts[-3] == "by":
|
181 |
+
timestamp_str = parts[-2]
|
182 |
+
username = parts[-4]
|
183 |
+
world_name = " ".join(parts[:-4]) # Join potential name parts
|
184 |
+
dt_obj = None
|
185 |
+
try: # Try parsing timestamp
|
186 |
+
dt_obj = datetime.strptime(timestamp_str, '%Y%m%d_%H%M%S')
|
187 |
+
dt_obj = pytz.utc.localize(dt_obj) # Assume UTC
|
188 |
+
except (ValueError, pytz.exceptions.AmbiguousTimeError, pytz.exceptions.NonExistentTimeError):
|
189 |
+
dt_obj = None # Parsing failed
|
190 |
+
# Return result if standard format parsed okay
|
191 |
return {"name": world_name or "Untitled", "user": username, "timestamp": timestamp_str, "dt": dt_obj, "filename": filename}
|
192 |
+
|
193 |
+
# Fallback for unknown format or if parsing above failed
|
194 |
+
# print(f"Using fallback parsing for filename: {basename}") # Debug log
|
195 |
+
dt_fallback = None # Initialize on its own line
|
196 |
+
try: # Start try block on its own line
|
197 |
+
# Indented block under try
|
198 |
+
mtime = os.path.getmtime(filename)
|
199 |
+
dt_fallback = datetime.fromtimestamp(mtime, tz=pytz.utc)
|
200 |
+
except Exception: # Except aligned with try
|
201 |
+
# Indented block under except
|
202 |
+
pass # Ignore errors getting mtime
|
203 |
+
# Return statement aligned with the function's fallback logic scope
|
204 |
return {"name": basename.replace('.md','').replace(WORLD_STATE_FILE_MD_PREFIX, ''), "user": "Unknown", "timestamp": "Unknown", "dt": dt_fallback, "filename": filename}
|
205 |
|
206 |
+
|
207 |
|
208 |
def save_world_state_to_md(target_filename_base):
|
209 |
"""Saves the current cached world state to a specific MD file."""
|