awacke1 commited on
Commit
3d6e88e
·
verified ·
1 Parent(s): c305d1d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -10
app.py CHANGED
@@ -107,25 +107,38 @@ def generate_world_save_filename(username="User", world_name="World"):
107
  return f"{WORLD_STATE_FILE_MD_PREFIX}{clean_world}_by_{clean_user}_{timestamp}_{rand_hash}.md"
108
 
109
  def parse_world_filename(filename):
110
- """Extracts info from filename (Name, User, Time, Hash)."""
111
  basename = os.path.basename(filename)
 
112
  if basename.startswith(WORLD_STATE_FILE_MD_PREFIX) and basename.endswith(".md"):
113
- core = basename[len(WORLD_STATE_FILE_MD_PREFIX):-3] # Remove prefix/suffix
114
- parts = core.split('_') # Split by underscore
115
- if len(parts) >= 5 and parts[-3] == "by": # Expect Name_by_User_Timestamp_Hash
 
116
  timestamp_str = parts[-2]
117
  username = parts[-4]
118
- world_name = " ".join(parts[:-4]) # Join name parts
119
  dt_obj = None
120
- try: dt_obj = pytz.utc.localize(datetime.strptime(timestamp_str, '%Y%m%d_%H%M%S'))
121
- except Exception: dt_obj = None
 
 
 
122
  return {"name": world_name or "Untitled", "user": username, "timestamp": timestamp_str, "dt": dt_obj, "filename": filename}
123
 
124
- # Fallback
125
- dt_fallback = None; try: mtime = os.path.getmtime(filename); dt_fallback = datetime.fromtimestamp(mtime, tz=pytz.utc)
126
- except Exception: pass
 
 
 
 
 
 
 
127
  return {"name": basename.replace('.md','').replace(WORLD_STATE_FILE_MD_PREFIX, ''), "user": "Unknown", "timestamp": "Unknown", "dt": dt_fallback, "filename": filename}
128
 
 
129
  def save_world_to_md(target_filename_base, world_data_dict):
130
  """Saves the provided world state dictionary to a specific MD file."""
131
  save_path = os.path.join(SAVED_WORLDS_DIR, target_filename_base)
 
107
  return f"{WORLD_STATE_FILE_MD_PREFIX}{clean_world}_by_{clean_user}_{timestamp}_{rand_hash}.md"
108
 
109
  def parse_world_filename(filename):
110
+ """Extracts info from filename if possible, otherwise returns defaults."""
111
  basename = os.path.basename(filename)
112
+ # Check prefix and suffix
113
  if basename.startswith(WORLD_STATE_FILE_MD_PREFIX) and basename.endswith(".md"):
114
+ core_name = basename[len(WORLD_STATE_FILE_MD_PREFIX):-3]
115
+ parts = core_name.split('_')
116
+ # Check if structure matches Name_by_User_Timestamp_Hash
117
+ if len(parts) >= 5 and parts[-3] == "by":
118
  timestamp_str = parts[-2]
119
  username = parts[-4]
120
+ world_name = " ".join(parts[:-4]) # Join potential name parts
121
  dt_obj = None
122
+ try: # Try parsing timestamp
123
+ dt_obj = datetime.strptime(timestamp_str, '%Y%m%d_%H%M%S')
124
+ dt_obj = pytz.utc.localize(dt_obj) # Assume UTC
125
+ except (ValueError, pytz.exceptions.AmbiguousTimeError, pytz.exceptions.NonExistentTimeError):
126
+ dt_obj = None # Parsing failed
127
  return {"name": world_name or "Untitled", "user": username, "timestamp": timestamp_str, "dt": dt_obj, "filename": filename}
128
 
129
+ # Fallback for unknown format or if parsing above failed
130
+ # This section runs if the 'if' conditions above weren't fully met
131
+ # print(f"Using fallback parsing for filename: {basename}") # Debugging log
132
+ dt_fallback = None
133
+ try: # Try getting modification time
134
+ mtime = os.path.getmtime(filename)
135
+ dt_fallback = datetime.fromtimestamp(mtime, tz=pytz.utc)
136
+ except Exception: # Ignore errors getting mtime
137
+ pass
138
+ # CORRECTED INDENTATION: This return belongs to the main function scope for the fallback case
139
  return {"name": basename.replace('.md','').replace(WORLD_STATE_FILE_MD_PREFIX, ''), "user": "Unknown", "timestamp": "Unknown", "dt": dt_fallback, "filename": filename}
140
 
141
+
142
  def save_world_to_md(target_filename_base, world_data_dict):
143
  """Saves the provided world state dictionary to a specific MD file."""
144
  save_path = os.path.join(SAVED_WORLDS_DIR, target_filename_base)