-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmetadata_file_handler.py
32 lines (27 loc) · 1.02 KB
/
metadata_file_handler.py
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
import json
from metadata_fetcher import ArxivPaper, GithubRepo
def load_metadata() -> dict:
"""Load existing metadata from file."""
try:
with open("metadata.json", "r") as f:
content = f.read().strip()
if content:
return json.loads(content)
else:
return {}
except FileNotFoundError:
return {}
except json.JSONDecodeError:
print("Warning: metadata.json is corrupted. Starting with empty metadata.")
return {}
def save_metadata(metadata: dict):
"""Save metadata to file."""
serializable_metadata = {}
for url, data in metadata.items():
if isinstance(data, (ArxivPaper, GithubRepo)):
serializable_metadata[url] = data.dict(exclude={"abstract", "readme"})
else:
# If it's already a dict (loaded from JSON), use it as is
serializable_metadata[url] = data
with open("metadata.json", "w") as f:
json.dump(serializable_metadata, f, default=str, indent=2)