Fork of Switch Library Manager created by giwty with continued improvements and changes
Easily manage your switch game backups
- Cross platform, works on Windows / Mac / Linux
- GUI and command line interfaces
- Scan your local switch backup library (NSP/NSZ/XCI)
- Read titleId/version by decrypting NSP/XCI/NSZ (requires prod.keys)
- If no prod.keys present, fallback to read titleId/version by parsing file name (example:
Super Mario Odyssey [0100000000010000][v0].nsp
). - Lists missing update files (for games and DLC)
- Lists missing DLCs
- Automatically organize games per folder
- Rename files based on metadata read from NSP
- Delete old update files (in case you have multiple update files for the same game, only the latest will remain)
- Delete empty folders
- Zero dependencies, all crypto operations implemented in Go
Having a prod.keys file will allow you to ensure the files you have a correctly classified. The app will look for the "prod.keys" file in the app folder or under ${HOME}/.switch/ You can also specify a custom location in the settings.json (see below)
Note: Only the header_key, and the key_area_key_application_XX keys are required.
During the App first launch a "settings.json" file will be created, that allows for granular control over the Apps execution.
You can customize the folder/file re-naming, as well as turn on/off features, and set specific title ids of DLC or updates to ignore.
{
"versions_json_url": "https://raw.githubusercontent.com/blawar/titledb/master/versions.json",
"versions_etag": "W/\"c3f5ecb3392d61:0\"",
"titles_json_url": "https://tinfoil.media/repo/db/titles.json",
"titles_etag": "W/\"4a4fcc163a92d61:0\"",
"prod_keys": "",
"folder": "",
"scan_folders": [],
"gui": false,
"debug": false, # Deprecated, no longer works
"check_for_missing_updates": true,
"check_for_missing_dlc": true,
"hide_missing_games": false, # hides the missing games tab
"hide_demo_games": false, # hide demo games from the list on the missing games tab
"organize_options": {
"create_folder_per_game": false,
"dlc_folder": "", # ex change to DLC to place DLC files in a separate folder
"updates_folder": "", # ex change to Updates to place update folder in a separate folder
"rename_files": false,
"delete_empty_folders": false,
"delete_old_update_files": false,
"folder_name_template": "{TITLE_NAME}",
"switch_safe_file_names": true,
"file_name_template": "{TITLE_NAME} ({DLC_NAME})[{TITLE_ID}][v{VERSION}]",
"process_when_missing_base_game": false # if you want to organize updates and dlcs without having the base game present
},
"scan_recursively": true,
"gui_page_size": 100,
"ignore_dlc_updates": false,
"ignore_dlc_title_ids": [], # Enter as a list of string, e.g. ["1234567890ABCDEF", "1234567890ABCDEE", "1234567890ABCDFF"]
"ignore_update_title_ids": [] # Enter as a list of string, e.g. ["1234567890ABCDEF", "1234567890ABCDEE", "1234567890ABCDFF"]
"ignore_file_types": [] # List of file types that should ignore the 'file type is not supported message', e.g. ["txt"]
}
The following template elements are supported:
- {TITLE_NAME} - game name
- {TITLE_ID} - title id
- {VERSION} - version id (only applicable to files)
- {VERSION_TXT} - version number (like 1.0.0) (only applicable to files)
- {REGION} - region
- {TYPE} - impacts DLCs/updates, will appear as ["UPD","DLC"]
- {DLC_NAME} - DLC name (only applicable to DLCs)
- Extract the zip file
- Double click the Exe file
- If you want to use command line mode, update the settings.json with
'GUI':false
- Open
cmd
- Run
switch-library-manager.exe
- Open
- Extract the zip file
- Double click the App file
- If you want to use command line mode, update the settings.json with
'GUI':false
- Open your Terminal
cd
to the folder containingswitch-library-manager
chmod +x switch-library-manager
to make it executable- Run `./switch-library-manager'
NOTE: parameters are only usable in command line mode, exept the parameter -m (mode) which will override the gui setting.
Name | Flag | Value | Description |
---|---|---|---|
Mode | -m | console/gui | Which mode to start the application in, overrides gui in settings.json |
NSP Folder | - | path | Path to the NSP folder, overrides folder in settings.json |
Recursive scan | -r | true/false | If recursive scan should be used for the NSP folder, overrides scan_recursively in settings.json |
Export CSV | -e | path | Which folder to output missing_updates, missing_dlcs and issues in CSV format |
- Install and setup Go
- Clone the repo:
git clone https://github.com/trembon/switch-library-manager.git
- Move into the src folder
cd src
- Get the bundler
go get -u github.com/asticode/go-astilectron-bundler/...
- Install bundler
go install github.com/asticode/go-astilectron-bundler/astilectron-bundler
- Copy bundler binary to the source folder
cd switch-library-manager
and thenmv $HOME/go/bin/astilectron-bundler .
- Execute
./astilectron-bundler
- Binaries will be available under output
This program relies on blawar's titledb, to get the latest titles and versions.