Homebrew RELEASE NSP Indexer

  • Thread starter Thread starter proconsule54
  • Start date Start date
  • Views Views 50,969
  • Replies Replies 215
  • Likes Likes 15

proconsule54

Well-Known Member
Member
Joined
Nov 5, 2019
Messages
942
Reaction score
1,976
Trophies
2
Age
45
XP
3,990
Country
Italy
Hi all, i wrote a simple indexer for nsp (xci nsz xcz also)
It is a simple PHP that parse directory with nsp files and show it as a list retriving img from N cdn and info from tinfoil json

preview.jpg


hope you like it, post suggestion and bugs here or on github

here is the link

https://github.com/proconsule/nspindexer
 
It's a personal preference, but you could display a more human readable form of the version string. In your example, monster hunter is 393216 which is 0x60000. bit shift it right 16 bits ( >> 16) or divide it by 65536 to get the patch number, which in this case is 6.
 
Sure nice suggestion, the update is currently only a regex of the filename. I'll do it in the next commit.
Tanks for the code hint :)
 
I am adding support for tinfoil and DBI remote install with $_GET parameters
if you add ?tinfoil=true or ?DBI=true the script generate json or directory listing so it can be used with this great switch homebrew

tinfoil json example:
0
url "http://10.34.0.2/switch/data/games/MONSTER HUNTER RISE[0100B04011742000][US][v0].nsp#MONSTER+HUNTER+RISE%5B0100B04011742000%5D%5BUS%5D%5Bv0%5D.nsp"
size 7051860928
1
url "http://10.34.0.2/switch/data/games/MONSTER HUNTER RISE[0100B04011742800][US][v393216].nsp#MONSTER+HUNTER+RISE%5B0100B04011742800%5D%5BUS%5D%5Bv393216%5D.nsp"
size 3491320256

If there is any suggestion or feature add let me know
Enjoy

PS I tested my script on Debian with apache, hope this works on other OS / webserver but is not tested
 
Last edited by proconsule54,
  • Like
Reactions: proconsule54
Changelog:

Added tinfoil json generation using index.php?tinfoil=true (tested working on tinfoil 12.10)
Added update version tooltip (tanks @falcorr for the suggestion)
Added directory listing like generation for future use with DBI Installer (not working right now waiting for the author to support it) with index.php?DBI=true
preview2.jpg

Enjoy!
 
DBI works with apache directory listing. If you want it to work with your script make your script work as apache directory listing.
You are right, maybe a misunderstanding. I wrote (not working right now waiting for the author to support it) because there is an hard check for url ending with / in DBI so is impossible to write url with index.php?DBI=true that create a webpage like apache directory listing.
I really love DBI Installer and tanks for your hard work on it.

preview3.jpg
 
Last edited by proconsule54,
@duckbill007 tried with ending / but it doesn't show in DBI Home screen

Home server=ApacheHTTP|http://10.34.0.2/switch/?DBI=true/
end this way
Home server=ApacheHTTP|http://10.34.0.2/switch/index.php?DBI=true/

maybe the ? mess something in url check.

Since DBI is close source (legitimate choice) i can't figure out why isn't showing the home server in main menu of DBI

how is checked the URL? just a check on last char or with some c or c++ function?
how is retrived the html of directory listing? curl or some custom code?
 
Last edited by proconsule54,
Code:
std::vector<std::string> parts;
dbi::utils::split(source, "|", parts);
if (parts.size() != 2)
{
continue;
}
if (parts[0] == "ApacheHTTP")
{
std::string url = parts[1];
dbi::utils::trim(url);
if (dbi::utils::endsWith(url, "/"))
{
addSeparator = true;
addMenuItem(std::make_unique<MenuItem>(name, false, [url]() {

--------------------- MERGED ---------------------------

Listing retrieved by curl

--------------------- MERGED ---------------------------

Make sure that you have
Code:
; Browse and install files from configured network sources
Network=true
in config

--------------------- MERGED ---------------------------

If Network=false then sockets are not initialized at all and network sources are not even parsed.
 
  • Like
Reactions: proconsule54
@duckbill007 Tanks for sharing code, sure Network is true in my config, i have another Home server pointing to apache directory listing for debugging
looking at code the menu item is added after checking the dbi::utils::endsWith function and the url is trimmed with dbi::utils::trim(url);
before this check.

if possible that "?" char can mess the trim function in some way leading to fail endswith check?

if you pass http://10.34.0.2/switch/index.php?DBI=true/ to the trim function it returns the same url?

Edit:
Or maybe the dbi::utils::split(source, "|", parts); split it in some unexpected way so parts count will fail?

Sorry to bother you but this make me crazy :)
 
Last edited by proconsule54,
Yes i tried and is the =
Without it is added to main menu.

Probably you don't care about it but since all $_GET parmaters in url are with = you can, when you have some free time, to check only the first = leaving url as it is

For my script is not a problem i can do without it but can be useful for others

Edit.
All ok, Home server shown in menu and nsp are correctly listed, but no download.
On Browser link are correctly and it download.

since href in html is only part of real url how DBI generate the download link to be used by downloader?
it uses home server url plus the href?
Tanks
 
Last edited by proconsule54,
Yes i suspected that, browser automagicaly remove index.php plus any GET arguments and so realtive path will work but DBI don't do this.
it is not a criticism to DBI it works on directory list as expected, but it can't be any workaround for that i can do.

Just to know since you have implemented it there is any type of directory listing that DBI actually support that have full path into href?

Tanks a lot for your time.
 

Site & Scene News

Popular threads in this forum