Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Nsx Library Manager Switch: Difference between revisions

From GameBrew
Created page with "{{Infobox Switch Homebrews |title=Nsx Library Manager |image=nsxlibrarymanagerswitch.png |description=Another Lib Manager for NSP NSZ files. |author=ivaano |lastupdated=2024/02/01 |type=PC Utilities |version=0.3.1 |license=MIT |download=https://dlhb.gamebrew.org/switchhomebrews/nsxlibrarymanagerswitch.7z |website=https://gbatemp.net/threads/nsx-library-manager.646336/ |source=https://github.com/ivaano/NsxLibraryManager |donation= }} {{#seo: |title=Switch Homebrew PC Tool..."
 
No edit summary
 
(11 intermediate revisions by 2 users not shown)
Line 4: Line 4:
|description=Another Lib Manager for NSP NSZ files.
|description=Another Lib Manager for NSP NSZ files.
|author=ivaano
|author=ivaano
|lastupdated=2024/02/01
|lastupdated=2025/07/24
|type=PC Utilities
|type=PC Utilities
|version=0.3.1
|version=0.5.3
|license=MIT
|license=MIT
|download=https://dlhb.gamebrew.org/switchhomebrews/nsxlibrarymanagerswitch.7z
|download=https://dlhb.gamebrew.org/switchhomebrews/nsxlibrarymanagerswitch.7z
Line 19: Line 19:
|image_alt=Nsx Library Manager
|image_alt=Nsx Library Manager
}}
}}
The Nsx Library Manager is a homebrew tool designed for managing and visualizing a Nintendo Switch library. It organizes files and creates a comprehensive database. The tool was created out of a desire for a data grid that allows easy filtering and sorting of games, and it offers the added convenience of server-based access from any device.
The Nsx Library Manager is a PC utility to organize and visualize a Nintendo Switch library. The tool was created out of a desire for a data grid that allows easy filtering and sorting of games, and it offers the added convenience of server-based access from any device.


== Features ==
== Features ==
* Web interface.
* Web interface.
* API for searching, and refresh reload library.
* Runs on Windows, Linux and Mac.
* Runs on Windows, Linux and Mac.
* Supports NSP, NSZ, XCI, XCZ files.
* Supports NSP, NSZ, XCI, XCZ files.
Line 35: Line 36:
* Local TitleDb, no need to download it every time.
* Local TitleDb, no need to download it every time.


== Requirements ==
==Installation==
Requirements:
* dotnet 8.0
* dotnet 8.0
* a recent browser (didn't worked on Edge 13)
* a recent browser (didn't worked on Edge 13)
* prod.keys
* prod.keys


== Install ==
[https://github.com/ivaano/NsxLibraryManager/blob/master/README.md Installation guide.]
* Download the [https://github.com/ivaano/NsxLibraryManager/releases latest release]
* Extract the zip/gz file
* Create <code>titledb\config.json</code> and customize it to your needs:
** <code>TitleDatabase</code>: Path where the db file is going to be stored, this is required and must end with <code>.db</code>. '''Use a fast drive for this file, like a NVMe'''.
** <code>LibraryPath</code>: Path to your library.
** <code>Recursive</code>: If true, it will search recursively in the library path.
** <code>TitleDbPath</code>: Path where we are going to download titledb json Files to add them to the db.
** <code>RegionUrl</code>: Url to download the region file.
** <code>CnmtsUrl</code>: Url to download the cnmts file.
** <code>VersionUrl</code>: Url to download the version file.
** <code>Regions</code>: List of regions to download.
** <code>ProdKeys</code>: Path to your prod.keys file, if this value is not set, program will look in the same folder as the executable, or you can put them in <code>$HOME/.switch/prod.keys</code>.
* Alternative to creating the file manually, run the application once and it will create a default config file you can use the the browser to edit it.
 
'''Warning - Be sure that the paths you put on <code>config.json</code> are valid, the application doesn't create the paths if they don't exists'''.
 
'''Note - Please use absolute paths, relative paths might not work because the function to build paths is a little wonky for example <code>~/Library</code> will not work as expected on linux, as the final result will be <code>/ApplicationPath/~/Library</code> instead of <code>/home/user/Library</code>'''.
 
== Docker ==
* Download the latest release
* Extract the zip/gz file
* build the image <code>docker build -t nsxlibrarymanager .</code>
* you can mount the keys, titledb and library folders to the container, for example: -<code>docker run --name nsxlibrarymanager -p 8080:8080 --mount type=bind,source=/home/ivan/nsxlib/keys,target=/app/keys --mount type=bind,source=/home/ivan/nsxlib/library,target=/app/library nsxlibrarymanager</code>
 
== Usage ==
* Run the <code>NsxLibraryManager.exe</code> file.
* If you are running it for the first time, you will need to download the region, cnmts and version files.
* Open your browser and go to http://localhost:5000.
* On first run you will need to update titledb, go to Titledb and click on '''Update Titledb''' button.
* After that, go to Library and click on '''Reload Library'''
* If new files are added to your library, you can use the '''Refresh Library''' button to update the database.
* Reload Library will drop the table and create it again.
 
'''Tip - To setup the port or the listening address, you can use the <code>--urls</code> parameter, for example <code>./NsxLibraryManager.exe --urls http://*:6666</code> will listen on any interface on port 6666'''.


==Screenshots==
==Screenshots==
Line 92: Line 60:


https://dlhb.gamebrew.org/switchhomebrews/nsxlibrarymanagerswitch-08.png
https://dlhb.gamebrew.org/switchhomebrews/nsxlibrarymanagerswitch-08.png
== TODO ==
* Implement the file organizer.
* Support more Regions.
* Ability to add custom information to each title (favorite, rating).
* Ability to download and store banners and screenshots locally.
* Optimization.


==Changelog==
==Changelog==
'''v0.5.3'''
* This release adds some fixes and a new endpoint in the API:
** [https://github.com/ivaano/NsxLibraryManager/issues/109 #109] A new renamer endpoint was added, this will trigger bundle or package renames
** [https://github.com/ivaano/NsxLibraryManager/issues/71 #71] A change was made to avoid removing files with no titleid when doing a refresh
** [https://github.com/ivaano/NsxLibraryManager/issues/96 #96] A fix was made to use titledb region when running the rename process, as the region will come from titledb instead of the file this should solve most of the issues related to regions.
** Some minor fixes and improvements has been made and some libraries have been updated.
* To upgrade just close the app copy the your data and config folders and run, if you are using a container just pull the latest image.
* What's Changed
** features/renamer-api-endpoint by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/111 #111]
** Setting titled.Region to fileInfo to fix renamer issues with region by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/112 #112]
** Refresh now checks if the file was already on the library, so if the filename doesn't include titleId, it wont be removed. by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/113 #113]
** Adding a check for titledb.sql version number, if is larger or shorter than a SHA5, is not going to save it as this causes confusion. by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/114 #114]
'''v0.5.2'''
* Features/api by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/107 #107].
* Assembly version update by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/108 #108].
'''v0.5.1'''
* Features/api by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/101 #101].
* Features/api by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/102 #102].
* warning-cleanup by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/103 #103].
* Warning cleanup by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/104 #104].
* Disable RowSelectOnClick for library, use row checkbox instead. by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/105 #105].
'''v0.5.0'''
* Added new feature to persist user data on library reloads by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/87 #87].
* Adding assembly version to NavLayout by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/88 #88].
* Fix &quot;in&quot; folder permissions by [https://github.com/MasterPhooey @MasterPhooey] in [https://github.com/ivaano/NsxLibraryManager/pull/89 #89].
* Features/webhook-on-library-load by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/91 #91].
* Features/release-date-missing-dlc-updates by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/92 #92].
'''v0.4.7'''
* Docker compose by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/84 #84].
* Added release date to title page missing update and missing dlc. by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/85 #85].
'''v0.4.5'''
* This is a support release, no new features were added just some bugfixes to address issue [https://github.com/ivaano/NsxLibraryManager/issues/78 #78] and probably [https://github.com/ivaano/NsxLibraryManager/issues/71 #71].
'''v0.4.4'''
* Features/multiple library paths by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/74 #74].
* Code cleanup by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/75 #75].
* updating assembly version by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/76 #76].
'''v0.4.3'''
* Features/nsw releases support by @ivaano in [https://github.com/ivaano/NsxLibraryManager/pull/67 #67].
* Adding a file Icon if title is not found to titledb by @ivaano in [https://github.com/ivaano/NsxLibraryManager/pull/68 #68].
'''v0.4.2'''
* This release adds a new feature to transfer titles on your library to an anonymous FTP server, you can queue many titles, this feature will select only the base title, the latest owned update and all the owned dlcs, it will create a list of files and a background service will start sending the files to the ftp server.
* You can copy your previous database over this new release to keep your user settings.
'''v0.4.1'''
* This release is a fix on the CI pipeline, no new changes have been added to the app, just matching the assembly info, but now new releases will be tagged properly and you can get the right image
'''v0.4.0.2'''
* Content rating in library by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/60 #60]
* Content rating in library by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/61 #61]
'''v.0.4.0.1'''
* readme screenshots update by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/56 #56]
* Readme update by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/57 #57]
* File structure organization by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/58 #58]
* Age rating in library by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/59 #59]
'''v0.4.0'''
* Fix docker permissions problem by [https://github.com/Darkangeel-hd @Darkangeel-hd] in [https://github.com/ivaano/NsxLibraryManager/pull/26 #26]
* Publish to GHCR by [https://github.com/markp-mckinney @markp-mckinney] in [https://github.com/ivaano/NsxLibraryManager/pull/39 #39]
* Features/sqlite version by [https://github.com/ivaano @ivaano] in [https://github.com/ivaano/NsxLibraryManager/pull/55 #55]
* Library now show title categories
* No need to edit config.json file anymore, download the app and run it, the configuration can be done on the settings page
* New standalone renamer called bundle renamer, this renamer focus is to have all the related titles (base, patch, addon) in one place.
* New placeholders to the package renamer, package rename is used if you want to have your titles organized by conten type.
* New Library renamer, for now this will only work with the new collections field, collections is a user generated input so you can group titles
* by collection, it works like the bundle renamer you can have all related titles in one place and group them together by collection.
* Delete empty folders after the rename process has run, this is per renamer and you can enable disable this feature.
* Better handling of invalid characters when renaming.
* Titlecase naming for folders of renamed titles.
* Improvements to the age rating system, now instead of just the age the esrb will be shown on detail title.
* Added ability to filter by titleid or name in GameList and GameCard pages, making it easier to find your games.
* Added more fields to the library grid.
* Added new Find Duplicates function, it will find all titles that are the same, useful for removing old patches or duplicate titles, the delete has * A backup function so anything you delete is moved to the backup folder.
* Added the ability to rate your library titles
* Added the ability to export/import your data (user rating, and title collections), so if you want to reload the database you don't lose your ratings.
'''v0.3.1'''
'''v0.3.1'''
*Config save fix by @ivaano
*Config save fix by @ivaano.
'''v0.3.0'''
'''v0.3.0'''
* Libraries updates
* Libraries updates.
* Dockerfile modification
* Dockerfile modification.
* Titledb Insertbulk reduced to chunks of 1k to decrease memory while importing
* Titledb Insertbulk reduced to chunks of 1k to decrease memory while importing.
* Titles that are not in cnmt are marked as unknown, marking them as base if titleid ends in 000
* Titles that are not in cnmt are marked as unknown, marking them as base if titleid ends in 000.
* TitleDb Categories filter
* TitleDb Categories filter.
* Saving grid settings on library grid
* Saving grid settings on library grid.
* Rename now creates subdirectories if needed
* Rename now creates subdirectories if needed.
* Config now read from config directory the default will be titledb so it can be mounted in docker.
* Config now read from config directory the default will be titledb so it can be mounted in docker.
'''v0.2.0'''
'''v0.2.0'''
* License by @ivaano
* License by @ivaano.
* Renamer initial release by @ivaano
* Renamer initial release by @ivaano.
* Settings moved to config by @ivaano
* Settings moved to config by @ivaano.
'''v0.0.1'''
'''v0.0.1'''
* First Release.
* First Release.
**Features/odata service
**Features/odata service.
**Features/component refactor
**Features/component refactor.
**Libhac Update
**Libhac Update.
**Deltas for faster library updates
**Deltas for faster library updates.
**Dashboard
**Dashboard.
**Added game list page, and game card to easy browse games in library
**Added game list page, and game card to easy browse games in library.
**Library Title detail moda
**Library Title detail moda.
**Move title detail in library to a modal
**Move title detail in library to a modal.
**Versions update
**Versions update.
**Readme updates
**Readme updates.


== Credits ==
== Credits ==
* [https://github.com/Thealexbarney/LibHac Libhac] For the amazing library to read nintendo switch files.
* [https://github.com/Thealexbarney/LibHac Libhac] For the amazing library to read nintendo switch files.
* [https://github.com/blawar/titledb Titledb] For the excellent database with all the information.
* [https://github.com/blawar/titledb Titledb] For the excellent database with all the information.
* [https://www.litedb.org LiteDb]
* [https://github.com/radzenhq/radzen-blazor Radzen.Blazor]
* [https://github.com/radzenhq/radzen-blazor Radzen.Blazor]


== External links ==
== External links ==
* Gbatemp - https://gbatemp.net/threads/nsx-library-manager.646336/
* GitHub - https://github.com/ivaano/NsxLibraryManager
* Github - https://github.com/ivaano/NsxLibraryManager
* GBAtemp - https://gbatemp.net/threads/nsx-library-manager.646336/

Latest revision as of 02:58, 26 July 2025

Nsx Library Manager
General
Authorivaano
TypePC Utilities
Version0.5.3
LicenseMIT License
Last Updated2025/07/24
Links
Download
Website
Source

The Nsx Library Manager is a PC utility to organize and visualize a Nintendo Switch library. The tool was created out of a desire for a data grid that allows easy filtering and sorting of games, and it offers the added convenience of server-based access from any device.

Features

  • Web interface.
  • API for searching, and refresh reload library.
  • Runs on Windows, Linux and Mac.
  • Supports NSP, NSZ, XCI, XCZ files.
  • Read a folder and analyze all the files.
  • Extract metadata from the files, like name, size, titleId, publisher and Icon.
  • Use titledb to aggregate more information.
  • Create a database with all the information.
  • Shows a list or grid of all your games.
  • Filter by name, publisher, size, titleId, region, type, etc.
  • Sort by name, publisher, size, titleId, region, type, etc.
  • List missing DLC or updates for your games.
  • Local TitleDb, no need to download it every time.

Installation

Requirements:

  • dotnet 8.0
  • a recent browser (didn't worked on Edge 13)
  • prod.keys

Installation guide.

Screenshots

nsxlibrarymanagerswitch-01.png

nsxlibrarymanagerswitch-02.png

nsxlibrarymanagerswitch-03.png

nsxlibrarymanagerswitch-04.png

nsxlibrarymanagerswitch-05.png

nsxlibrarymanagerswitch-06.png

nsxlibrarymanagerswitch-07.png

nsxlibrarymanagerswitch-08.png

Changelog

v0.5.3

  • This release adds some fixes and a new endpoint in the API:
    • #109 A new renamer endpoint was added, this will trigger bundle or package renames
    • #71 A change was made to avoid removing files with no titleid when doing a refresh
    • #96 A fix was made to use titledb region when running the rename process, as the region will come from titledb instead of the file this should solve most of the issues related to regions.
    • Some minor fixes and improvements has been made and some libraries have been updated.
  • To upgrade just close the app copy the your data and config folders and run, if you are using a container just pull the latest image.
  • What's Changed
    • features/renamer-api-endpoint by @ivaano in #111
    • Setting titled.Region to fileInfo to fix renamer issues with region by @ivaano in #112
    • Refresh now checks if the file was already on the library, so if the filename doesn't include titleId, it wont be removed. by @ivaano in #113
    • Adding a check for titledb.sql version number, if is larger or shorter than a SHA5, is not going to save it as this causes confusion. by @ivaano in #114

v0.5.2

v0.5.1

v0.5.0

  • Added new feature to persist user data on library reloads by @ivaano in #87.
  • Adding assembly version to NavLayout by @ivaano in #88.
  • Fix "in" folder permissions by @MasterPhooey in #89.
  • Features/webhook-on-library-load by @ivaano in #91.
  • Features/release-date-missing-dlc-updates by @ivaano in #92.

v0.4.7

  • Docker compose by @ivaano in #84.
  • Added release date to title page missing update and missing dlc. by @ivaano in #85.

v0.4.5

  • This is a support release, no new features were added just some bugfixes to address issue #78 and probably #71.

v0.4.4

v0.4.3

  • Features/nsw releases support by @ivaano in #67.
  • Adding a file Icon if title is not found to titledb by @ivaano in #68.

v0.4.2

  • This release adds a new feature to transfer titles on your library to an anonymous FTP server, you can queue many titles, this feature will select only the base title, the latest owned update and all the owned dlcs, it will create a list of files and a background service will start sending the files to the ftp server.
  • You can copy your previous database over this new release to keep your user settings.

v0.4.1

  • This release is a fix on the CI pipeline, no new changes have been added to the app, just matching the assembly info, but now new releases will be tagged properly and you can get the right image

v0.4.0.2

v.0.4.0.1

v0.4.0

  • Fix docker permissions problem by @Darkangeel-hd in #26
  • Publish to GHCR by @markp-mckinney in #39
  • Features/sqlite version by @ivaano in #55
  • Library now show title categories
  • No need to edit config.json file anymore, download the app and run it, the configuration can be done on the settings page
  • New standalone renamer called bundle renamer, this renamer focus is to have all the related titles (base, patch, addon) in one place.
  • New placeholders to the package renamer, package rename is used if you want to have your titles organized by conten type.
  • New Library renamer, for now this will only work with the new collections field, collections is a user generated input so you can group titles
  • by collection, it works like the bundle renamer you can have all related titles in one place and group them together by collection.
  • Delete empty folders after the rename process has run, this is per renamer and you can enable disable this feature.
  • Better handling of invalid characters when renaming.
  • Titlecase naming for folders of renamed titles.
  • Improvements to the age rating system, now instead of just the age the esrb will be shown on detail title.
  • Added ability to filter by titleid or name in GameList and GameCard pages, making it easier to find your games.
  • Added more fields to the library grid.
  • Added new Find Duplicates function, it will find all titles that are the same, useful for removing old patches or duplicate titles, the delete has * A backup function so anything you delete is moved to the backup folder.
  • Added the ability to rate your library titles
  • Added the ability to export/import your data (user rating, and title collections), so if you want to reload the database you don't lose your ratings.

v0.3.1

  • Config save fix by @ivaano.

v0.3.0

  • Libraries updates.
  • Dockerfile modification.
  • Titledb Insertbulk reduced to chunks of 1k to decrease memory while importing.
  • Titles that are not in cnmt are marked as unknown, marking them as base if titleid ends in 000.
  • TitleDb Categories filter.
  • Saving grid settings on library grid.
  • Rename now creates subdirectories if needed.
  • Config now read from config directory the default will be titledb so it can be mounted in docker.

v0.2.0

  • License by @ivaano.
  • Renamer initial release by @ivaano.
  • Settings moved to config by @ivaano.

v0.0.1

  • First Release.
    • Features/odata service.
    • Features/component refactor.
    • Libhac Update.
    • Deltas for faster library updates.
    • Dashboard.
    • Added game list page, and game card to easy browse games in library.
    • Library Title detail moda.
    • Move title detail in library to a modal.
    • Versions update.
    • Readme updates.

Credits

  • Libhac For the amazing library to read nintendo switch files.
  • Titledb For the excellent database with all the information.
  • Radzen.Blazor

External links

Advertising: