Code Monkey home page Code Monkey logo

switch-library-manager's Introduction

Switch library manager

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.

{
 "versions_etag": "W/\"c3f5ecb3392d61:0\"",
 "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,
 "organize_options": {
  "create_folder_per_game": false,
  "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}]"
 },
 "scan_recursively": true,
 "gui_page_size": 100
}

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)

Reporting issues

Please set debug mode to 'true', and attach the slm.log to allow for quicker resolution.

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
    • Optionally -f X:\folder\containing\nsp\files"
    • Optionally add -r to recursively scan for nested folders
    • Edit the settings.json file for additional options
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'
    • Optionally -f X:\folder\containing\nsp\files"
    • Optionally add -r to recursively scan for nested folders
    • Edit the settings.json file for additional options

Building

  • Install and setup Go
  • Clone the repo: git clone https://github.com/giwty/switch-library-manager.git
  • 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.

switch-library-manager's People

Contributors

giwty avatar mzino avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.