giwty / switch-library-manager Goto Github PK
View Code? Open in Web Editor NEWComplete solution to manage, organize and keep your local switch backup game library up to date . Cross platform, supports all game formats.
Complete solution to manage, organize and keep your local switch backup game library up to date . Cross platform, supports all game formats.
Currently having issues with it not reading XCI's properly.
In the previous version it read the XCI but couldn't read the DLC properly so said it was missing:
2020-09-25T08:26:32.550+0100 ERROR db/localSwitchFilesDB.go:310 [file:Super Smash Bros Ultimate [01006A800016E800][v1114112].xci] failed to read file [reason: no control.nacp found]
I have numerous issues like this now - in the previous versions these weren't here:
2020-09-25T08:26:24.019+0100 ERROR db/localSwitchFilesDB.go:310 [file:Captain Toad Treasure Tracker [01009BF0072D4800][v65536].xci] failed to read file [reason: no control.nacp found]
This may be related to the error on the website. Previously it was for one title but now it has gone up. All titles work fine:
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[1048576:{{0xc0001388c0 G:\sxos\xci} 0xc0051a4140}] map[] false 1048576}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[196608:{{0xc0001b03f0 G:\sxos\xci} 0xc0001bed40}] map[] false 196608}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[65536:{{0xc00017c2a0 G:\sxos\xci} 0xc000067c40}] map[] false 65536}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[327680:{{0xc00017c3f0 G:\sxos\xci} 0xc0051a48c0}] map[] false 327680}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[65536:{{0xc000139810 G:\sxos\xci} 0xc0001bf040}] map[] false 65536}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[65536:{{0xc000138380 G:\sxos\xci} 0xc00740b340}] map[] false 65536}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[589824:{{0xc000139960 G:\sxos\xci} 0xc0005681c0}] map[] false 589824}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[786432:{{0xc00017cd20 G:\sxos\xci} 0xc010498b00}] map[] false 786432}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[917504:{{0xc000139b90 G:\sxos\xci} 0xc0001bf200}] map[] false 917504}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[524288:{{0xc00017ce00 G:\sxos\xci} 0xc000067d40}] map[] false 524288}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[196608:{{0xc00017c1c0 G:\sxos\xci} 0xc0051a5980}] map[] false 196608}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[393216:{{0xc000139730 G:\sxos\xci} 0xc0051a4240}] map[] false 393216}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[983040:{{0xc00017d420 G:\sxos\xci} 0xc000569580}] map[] false 983040}
2020-09-25T08:26:37.417+0100 INFO process/incompleteTitleProcessor.go:28 !Missing base for game &{{{ } } false map[1114112:{{0xc00017c930 G:\sxos\xci} 0xc000568580}] map[] false 1114112}
Can you please add option for recursive dir scan? Right now you need to have NSP's in one big directory, but if you have each game in a separate dir and you set the scan path to the parent dir - the NSP Update won't find them.
I tried adding the prod.keys to the folder the .exe was in, the folder the games were in, a .switch folder in the .exe and games folders but still they wouldn't be found by the app.
Startup fails when running from a folder with spaces in the name, like "E:\My Switch Tools\switch-library-manager"
error:
failed to create logger - couldn't open sink "winfile:///E:\My Switch Tools\switch-library-manager.windows\slm.log": open E:: is a directorypanic: 1
goroutine 1 [running]:
main.createLogger(0xc00001caf0, 0x44, 0xc000158700, 0xc0002dc150)
/Users/twig/IdeaProjects/nsp-update/main.go:85 +0x416
main.main()
/Users/twig/IdeaProjects/nsp-update/main.go:43 +0x1aa
terminal gets stuck on this part and never launches the app, the previous releases are working perfectly
% /Applications/switch-library-manager.mac/switch-library-manager ; exit;
INFO[0000]astikit: starting worker...
Downloading/Validating electron files .. (can take 1-2min)
INFO[0000]astikit: worker is now waiting...
For instance, two copies of DOOM, one with title id 0100416004C00000 and the other with 0100D76006EF8000 were placed together
I just tried to run the 'exe', it loads but later says "Error: read ECONNRESET at TCP.onStreamRead (internal/stream_base_commons.js:183:27).
Also when I tried to use with "gui = false" it says:
Checking for missing updates
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x73098b]
goroutine 1 [running]:
github.com/giwty/switch-backup-manager/process.ScanForMissingUpdates(0xc005cc8870, 0xc0056d17a0, 0x0)
/Users/twig/IdeaProjects/nsp-update/process/incompleteTitleProcessor.go:29 +0x13b
github.com/giwty/switch-backup-manager/ui.processMissingUpdates(0xc005cf2c70, 0xc000352070)
/Users/twig/IdeaProjects/nsp-update/ui/cmd.go:129 +0x5d
github.com/giwty/switch-backup-manager/ui.ConsoleGUI()
/Users/twig/IdeaProjects/nsp-update/ui/cmd.go:114 +0x910
main.main()
/Users/twig/IdeaProjects/nsp-update/main.go:15 +0x60
Hope you can fix it, it's an incredible and useful program (used to use non-gui version 0.4 and recently discovered this but doesn't run properly).
Thanks for all!
When I try to rename a XCI files, the {type} appears as UPD despite this is the full game.
I try with a valid file (dump is valid according to nswdb.com).
Thanks.
Regards,
Mathieu
Hey! It's me again.. still wanna thank you for the app and your hard work!
With the latest version the app shows all the games in 0 value for the local version, also seems that it isn't showing 6 games (I have 106).
Tryed to change gui_page_size to 120 but still doesn't work.
Thanks in advance!
Regards
when I scan the games it indicates that they are all updated, I have it in nsz format and I know there are new updates for some games.
Hi, I successfully use this app to standard rename my xci/nsp files on mac. There's an annoying issue tough. FS service on the switch doesn't recognize all utf-8 special characters like the littles tm, r, c logos in filenames and refuse to show the files with them in, so we have to manually remove them from file name every time we need to transfer files to the switch. Would be nice to have a flag that when enabled skips, remove or remap them to standard characters during library organization.
{VERSION_TXT} does not work as expected on DLC. DLC {VERSION_TXT} is always the same as {VERSION_TXT} for the game update (or base if no update) regardless of DLC {VERSION}. It would be nice to suppress {VERSION_TXT} on base game and dlc. I like it for game updates only.
ERROR nsp-update/gui.go:273 unexpected EOF
also
error: read ecconnreset at tcp.onstreamread (internal/stream_base_commons.js:183:27)
have title and prod files from incognito 1.8.4 in my SLM folder.
log scans 2 files as you can see, there is only those 2 files but once i scan it throws the econnreset error at me and shows nothing in the gui, i reset the program and it needs me to point out the folder where i store the files again, ie deletes the settings i made to point the program to the folder to scan.
great concept but unfortunately its a useless program to me as it doesnt do anything atm, but im excited to see these bugs ironed out and to use this program, if it could scan the switch's memory card to inform of what updates are needed would be an amazing feature too. i thank you for putting the time into this program as it will be very handy to use once the bugs are ironed out.
Hi there mate,
Nice program you have here!
My only wish is that you add XCI/XCZ support for it to be perfect.
When using the organize button
If it's too much work, don't worry about it as it's likely a very niche use case, but could an option be added to print to console or log to a file the games that are not present in the library or if they need updates/dlc?
As I have stated before I'm working on archiving the switch library and this would be very useful as I get closer to having most of the games archived
It'll be useful if we can use {Region} and {Languages} in naming template.
Thanks.
Regards,
Mathieu
Perhaps replace illegal folder chars with a different char like a space or a -?
Every time I launch this app it gets stuck doing this, I have to close and reopen it for it to work. Waiting does nothing :(
Next launch tells me folder is not set and prod keys is missing. Finally the third launch it works just fine.
Exactly what the title says, not sure if its temporary or not, but it seems as if the database offered by tinfoil is encrypted, causing the program to error out after not finding what it expects in the file
Can you add another box for version number so that files can be renamed like
"{TITLE_NAME} [{DLC_NAME}][{TITLE_ID}][v{VERSION}][{VER_NUMBER}]"
A Hat in Time [010056E00853A800][v262144][1.0.4]
Also, is it possible to pull {VERSION} for DLC?
A Hat in Time [Nyakuza Metro][010056E00853B002][v65536]
Is it supposed to ignore DLC updates? I know I have some outdated DLCs but it only shows missing DLC.
The Legend of Zelda Breath of the Wild [The Legend of Zelda Breath of the Wild DLC Pack 1][01007EF00011F001][v196608][1.6.0].nsp
The Legend of Zelda Breath of the Wild [The Legend of ZeldaBreath of the Wild DLC Pack 2][01007EF00011F001][v196608][1.6.0].nsp
I guess this is Nintendo's fault.The titles.json has
"name": "The Legend of Zelda: \nBreath of the Wild DLC Pack 1",
"name": "The Legend of Zelda:\nBreath of the Wild DLC Pack 2",
so I end up with this after organization:
Super Mario Odyssey [0100000000010000][v0][1.0.0].nsp
SUPER MARIO ODYSSEY [0100000000010800][v262144][1.3.0].nsp
Changing the filename title name then running organization again fixed the problem.
You could work around this issue by first renaming all existing files by {TITLE_ID}{VERSION} then by file_name_template in settings.json. If folders already exist for games not created by your program you could also run into this problem with folders.
with previous settings file, brings up console, downloads lists, and then exits
without previous settings file, provisions files and then sits on a white screen
'2020/07/03 18:38:42 astikit: starting worker...
2020/07/03 18:38:42 Starting...
2020/07/03 18:38:42 Provisioning...
2020/07/03 18:38:42 Astilectron has already been provisioned to version 0.39.0, moving on...
2020/07/03 18:38:42 Electron has already been provisioned to version 7.1.10, moving on...
2020/07/03 18:38:42 Listening...
2020/07/03 18:38:42 Executing...
2020/07/03 18:38:42 Starting cmd C:\Users\AppData\Roaming\Switch Library Manager\vendor\electron-windows-amd64\electron.exe C:\Users\AppData\Roaming\Switch Library Manager\vendor\astilectron\main.js 127.0.0.1:11422 false
2020/07/03 18:38:42 Stdout says:
2020/07/03 18:38:42 Astilectron says: {"name":"app.event.ready","targetID":"app","displays":{"all":[{"id":2528732444,"bounds":{"x":0,"y":0,"width":1920,"height":1080},"workArea":{"x":0,"y":0,"width":1920,"height":1040},"accelerometerSupport":"unknown","monochrome":false,"colorDepth":24,"colorSpace":"{primaries:BT709, transfer:IEC61966_2_1, matrix:RGB, range:FULL}","depthPerComponent":8,"size":{"width":1920,"height":1080},"workAreaSize":{"width":1920,"height":1040},"scaleFactor":1,"rotation":0,"internal":false,"touchSupport":"unknown"},{"id":2779098405,"bounds":{"x":1920,"y":27,"width":1680,"height":1050},"workArea":{"x":1920,"y":27,"width":1680,"height":1010},"accelerometerSupport":"unknown","monochrome":false,"colorDepth":24,"colorSpace":"{primaries:BT709, transfer:IEC61966_2_1, matrix:RGB, range:FULL}","depthPerComponent":8,"size":{"width":1680,"height":1050},"workAreaSize":{"width":1680,"height":1010},"scaleFactor":1,"rotation":0,"internal":false,"touchSupport":"unknown"}],"primary":{"id":2528732444,"bounds":{"x":0,"y":0,"width":1920,"height":1080},"workArea":{"x":0,"y":0,"width":1920,"height":1040},"accelerometerSupport":"unknown","monochrome":false,"colorDepth":24,"colorSpace":"{primaries:BT709, transfer:IEC61966_2_1, matrix:RGB, range:FULL}","depthPerComponent":8,"size":{"width":1920,"height":1080},"workAreaSize":{"width":1920,"height":1040},"scaleFactor":1,"rotation":0,"internal":false,"touchSupport":"unknown"}},"supported":{"notification":true}}
2020/07/03 18:38:42 Sending to Astilectron: {"name":"window.cmd.create","targetID":"1","sessionId":"2","url":"w:\Console Files\Switch\nsp-update\web\app.html","windowOptions":{"center":true,"height":700,"title":"Switch Library Manager","width":700}}
2020/07/03 18:38:42 Astilectron says: {"name":"window.event.focus","targetID":"1"}
2020/07/03 18:38:43 Astilectron says: {"name":"window.event.did.finish.load","targetID":"1"}
2020/07/03 18:38:43 astikit: worker is now waiting...
2020/07/03 18:38:43 Astilectron says: {"name":"window.event.blur","targetID":"1"}'
The last issue was closed by @giwty Since I can't reopen it and you may have missed my reply I'm opening this one.
Although Japanese was taken care of part of the issue was unicode characters which have the same problem.
Additionally for people who do not want or need to transliterate or remove/convert unicode characters because they do not use any files locally on the Switch, I believe you should have these rename features as a switch in the json.
I have 3 game examples where the game name is either not detected, which leaves a folder name with just the titleid like "[0100E000089F2000]" for "Portal Knights (En,Fr,De,Es,It,Por,Ru,Kor) [0100E000089F2000] [v0]", or misdetected, , in which case it just leaves whatever it could detect, like "4 [010009400DD38000]" for "Rune Factory 4 Special (Kor) [010009400DD38000] [v0] (1G+1D)"
just noticed today that the app no longer reports missing or outdated dlc nsp's. Is this intentional or an error?
As part of the renaming process would it be possible to add support for renaming folders and files to be compatible with the Switch filesystem? It seems that it can't deal with unicode and Japanese characters and so on that are in many title names, if they are used locally on the Switch, on the SD card for example, then homebrew cannot deal with or see them. There are other storage methods that have issues with these characters too. Maybe a filter to change to characters and perhaps convert Japanese to Romaji.
Here is something of an explanation of the issue: switchbrew/libnx#90 (comment)
Hi
Don't mean to bombard you but I figure if I report them then you, at least, know. Nothing major at all so far.
Issue with setting the folder - it appears on the Update tab but not any other tab - might be nice to have an option where you can add multiple folders and it scans them. I know you can edit the json but this would be easier.
Perhaps something I'm missing but on the rename it seems to be v0 for everything - this is not the case. It also doesn't let me know about DLC installed (i.e. I'd expect something like:
Super Smash Brothers Ultimate (+1U +64DLC) v1114112 or something like that. The 1U would be the 1 update deployed and the 64DLC would be the 64 DLC files installed. I'm not sure if this is possible but other tools do this but then I started using yours to rename so it would be nice to have it in one place. It may be that I'm just missing something.
Thanks for your work on this.
Can game regions be added? I want to know if a game is available on other regions (USA, EUR, etc) or if it's the same for USA, EUR, etc ? Sometimes they have different versions of the same game.
Haven't quite found a reproc, but something about the current folder of files im working on causes the program to crash out with this error, perhaps an issue with a unopenable file? Not sure how much sanity checking you are doing
I'm running macOs 10.13.6 as my iMac mid 2011 only supports macOS High Sierra. Is it possible to make this app compatible with previous versions ? I'm getting a message that I can't run it because of my macOS version.
Would it be possible to add support for multicontent nsp files? I assume it would take extracting the titleids from the file itself since the file would have more than one title id at that point
Changing "scan_recursively": true, to "scan_recursively": false, makes it seem like the current game directory is empty when its not.
Would be great if we could add different folders, even if they are on different hard disks, at the same time for the app to scan.
One might have games on drive A and updates on drive B so having the ability to add both folders or even more would do the trick.
Program looks amazing in PowerShell and Command Prompt, but if you use the Terminal Beta that Microsoft have been testing to eventually replace the other two, the program ends up looking really weird. Either something to do with the way you handle coloring the background or the padding goes haywire and the program just ends up a jumbled mess. Can supply screenshots if needed
Hi,
First I'd like to thank you for providing this great app.
I would like to report a bug. The feature to delete old update files is not working for me.
I have "delete_old_update_files": true
in the configuration file, old update files are detected and listed in the Issues tab, but they aren't deleted. I've been manually deleting them, based on the list in Issues tab.
I'm running the macOS GUI version on macOS Catalina (10.15.7).
I suspected this may be a permissions problem. In fact, in order for Switch Library Manager to run at all, I had to put it in the Applications folder. I doesn't launch at all from the Downloads folder.
Thanks again.
SLM will scan all of my files. Most of them it will successfully read. Some of them it will not.
My environment: Ubuntu Linux 20.04. I'm scanning files on a mounted drive.
Checking the debug log, a successful read looks like this:
2020-09-30T09:54:37.043-0700 DEBUG nsp-update/gui.go:386 process process:BOXBOY plus BOXGIRL [010018300D006000][v0].nsp (55/220)
And a failed read looks like this:
2020-09-30T09:54:37.043-0700 DEBUG nsp-update/gui.go:386 process process:Baba Is You [01002CD00A51C000][v0].nsp (56/220)
2020-09-30T09:54:37.059-0700 ERROR db/localSwitchFilesDB.go:325 [file:Baba Is You [01002CD00A51C000][v0].nsp] failed to read NSP [reason: open /mnt/roms/Nintendo Switch/nsp/base/Baba Is You [01002CD00A51C000][v0].nsp: interrupted system call]
github.com/giwty/switch-library-manager/db.(*LocalSwitchDBManager).getGameMetadata
/Users/twig/IdeaProjects/nsp-update/db/localSwitchFilesDB.go:325
github.com/giwty/switch-library-manager/db.(*LocalSwitchDBManager).processLocalFiles
/Users/twig/IdeaProjects/nsp-update/db/localSwitchFilesDB.go:195
github.com/giwty/switch-library-manager/db.(*LocalSwitchDBManager).CreateLocalSwitchFilesDB
/Users/twig/IdeaProjects/nsp-update/db/localSwitchFilesDB.go:112
main.(*GUI).buildLocalDB
/Users/twig/IdeaProjects/nsp-update/gui.go:371
main.(*GUI).handleMessage
/Users/twig/IdeaProjects/nsp-update/gui.go:198
github.com/asticode/go-astilectron.(*Window).OnMessage.func1.1
/Users/twig/go/pkg/mod/github.com/asticode/[email protected]/window.go:431
github.com/asticode/go-astilectron.(*dispatcher).dispatch.func1
/Users/twig/go/pkg/mod/github.com/asticode/[email protected]/dispatcher.go:62
Suggestion is to have the app retry when a read fails for any reason.
go get -u github.com/giwty/switch-library-manager
cannot find package "github.com/schollz/progressbar/v2" in any of:
c:\go\src\github.com\schollz\progressbar\v2 (from $GOROOT)
Could a option be added to use the local file instead of trying to update? For when the website is having issues or the user doesnt have internet for some other reason
Is it possible to add support for the NSZ files?
When I am updating some of the files I have to close and re-open the program before it detects changes.
A rescan button would make it much easier. Also, on launch, it doesn't do a proper rescan sometimes.
Are the console commands no longer a thing? I use the program from PowerShell, and now instead of getting any output to the console I just get immediately returned with the output happening in the background, with no output on the console
Is it possible to add a new TAB that lists new base game revisions available on the market ? Example:
Super_Mario_Odyssey_v001_NSW-JRP > this is rev001 of the cartridge. rev000 is Super.Mario.Odyssey.NSW-BigBlueBox
The.Legend.of.Zelda.Breath.of.the.Wild.v002.NSW-BigBlueBox > this is rev002 (1.5.0)
edit: would also like to know the selected few games that have physical (cartridge) releases vs eShop releases which can have different revisions as well.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.