Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ Legend: ✅ Confirmed working, ❔ Unconfirmed, - Not available in the store
| Hades | ✅ | ❔ |
| High on Life | ✅ | ❔ |
| Hi-Fi RUSH | ✅ | ❔ |
| Hollow Knight: Silksong | ✅ | ❔ |
| Hypnospace Outlaw | ✅ | ❔ |
| Just Cause 4 | ❔ | ❔ |
| Lies of P | ✅ | - |
Expand Down
6 changes: 6 additions & 0 deletions games.json
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,12 @@
"package": "KeplerInteractive.Expedition33_ymj30pw7xe604",
"handler": "coral-island"
},
// Hollow Knight: Silksong
{
"name": "Hollow Knight: Silksong",
"package": "TeamCherry.HollowKnightSilksong_y4jvztpgccj42",
"handler": "silk"
},
// One Lonely Outpost
{
"name": "One Lonely Outpost",
Expand Down
16 changes: 16 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import traceback
import uuid
import zipfile
import re
from datetime import datetime, timedelta, timezone
from pathlib import Path, PurePath
from typing import Any, Dict, List, Tuple
Expand Down Expand Up @@ -478,6 +479,21 @@ def get_save_paths(
fname = f"Backup/{fname.removeprefix('Backup')}"
fpath = container["files"][0]["path"]
save_meta.append((fname, fpath))

elif handler_name == "silk":
for container in containers:
folder_name: str = container["name"]
for file in container["files"]:
fname = file["name"]
if 'shared' in folder_name.lower() or 'save' in folder_name.lower():
zip_fname = f"{fname}"
elif 'restore' in folder_name.lower():
suffix = int(re.search(r'\d+', folder_name).group())
zip_fname = f"Restore_Points{suffix}/{fname}"
else:
zip_fname = f"{folder_name}/{fname}"
fpath = file["path"]
save_meta.append((zip_fname, fpath))

elif handler_name == "one-lonely-outpost":
# One Lonely Outpost on game pass stores its data in a single gzipped JSON file that
Expand Down