Skip to content

Complete solution to manage, organize and keep your local switch backup game library up to date . Cross platform, supports all game formats.

License

Notifications You must be signed in to change notification settings

trembon/switch-library-manager

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Switch library manager

Fork of Switch Library Manager created by giwty with continued improvements and changes

Easily manage your switch game backups

Image description

Image description

Image description

Features

  • 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

Keys (optional)

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.

Settings

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"]
}

Naming template

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)

Usage

Windows

  • 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

macOS or Linux

  • 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 containing switch-library-manager
    • chmod +x switch-library-manager to make it executable
    • Run `./switch-library-manager'

Console parameters

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

Building

  • 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 then mv $HOME/go/bin/astilectron-bundler .
  • Execute ./astilectron-bundler
  • Binaries will be available under output

Thanks

This program relies on blawar's titledb, to get the latest titles and versions.

About

Complete solution to manage, organize and keep your local switch backup game library up to date . Cross platform, supports all game formats.

Resources

License

Stars

Watchers

Forks

Languages

  • JavaScript 74.7%
  • CSS 17.4%
  • Go 7.0%
  • HTML 0.9%