Giter Site home page Giter Site logo

epicpkmn11 / dsidl Goto Github PK

View Code? Open in Web Editor NEW
16.0 2.0 5.0 2.53 MB

A simple QR based file downloader for the DSi

License: GNU General Public License v3.0

Makefile 0.48% Python 0.06% C 98.83% C++ 0.63%
c cpp downloader nintendo-dsi hacktoberfest

dsidl's Introduction

DSi Downloader

Build status on GitHub Actions Gitpod ready-to-code

A simple app to download a file from a URL in a QR code on the Nintendo DSi.

Screenshot of the main menu

Usage

  1. Add a Wi-Fi network in System Settings under "Advanced Settings"
    • Due to compatibility issues in the dsiwifi library not all routers will work, WEP/open routers also likely don't work at all
  2. Open dsidl and wait for it to load, if it gets stuck you can reload it while holding SELECT to view more detailed logging information
  3. Create a QR code for what you want to download and scan it with your DSi
    • The QR code must contain a URL or JSON script, if not either of those the text will simply be printed out
  4. Choose the directory to save to, edit the file name if needed, and your file will start downloading
  5. You're done!

Building

  1. Install devkitPro pacman
  2. Run:
    sudo dkp-pacman -S nds-dev nds-zlib
    (On Windows it's pacman instead of sudo dkp-pacman, command may vary on Linux)
  3. Run:
    make

Credits

dsidl's People

Contributors

epicpkmn11 avatar merith-tk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

dsidl's Issues

[Feature] Pre-downloading

Since downloading larger files (such as videos) may take a longer time to download, it would be nice if there were a prompt (or just doing it by default) to download it to a temp folder prior to choosing a directory & filename, then renaming & moving it to the chosen directory once it's done downloading, saving the user a bit of time (especially if they have a very specific naming structure and such).

[feature] [unlikely] allow advanced format to contain text data

basically, for the advanced format, instead of linking to an specific file (which repeated connections and downoading for small files slows down)
Instead allow up to say... 8kb of text to be inside the advanced json as an text string rather than the url string (url takes priority)

[bug] doesn't work without logging activated

In my experience, when I hold select and start dsidl, it takes some time but eventually it works and I can use the application, but if i don't it just doesn't connect and nothing happens, even the wifi indicator doesn't blink at all.

tested on dsi xl, wpa2 psk

[improvement] Alter dsidl:src scheme to be an bit more verbose if possible

the idea is that we should alter the scheme to allow preventing downloading already existing files, provided an hash is provided (something basic like an md5?)

proposed altered format

{
	"dsidl": 1,
	"script": {
		"/program.nds": {
			"url": "https://github.com/Merith-TK/dsidl/releases/download/release-test/dsidl.dsi",
			"hash" : "2480be6feacb4c14564ca4922abfd852" // again, md5 hash
			"overwrite": false // if hash matches, dont overwrite
		},
		"/program.config": {
			"url": "https://example.com/program.config",
			"overwrite": false // in this case, if file matches, do not overwrite
		}
	}
}

if hash does not match, re-download the file,
this can save time should someone use the dsidl:src format for multiple files,

Path selection cuts off trailing slash before the filename

I seem to have run into a bug that cuts off the trailing slash before the filename in any directory that isn't root. In the attached image, I am trying to download a file into my "Homebrew" folder. This occurs every time I try to download.

PXL_20240115_221625889 RAW-01 COVER

Thanks for the great program!

[Feature] Manual url input

I haven't had much success with QR recognition off of phone screen, so it got me thinking.

Requesting option to just input url via touch keyboard.
Now the tool can work as a wget too.

[Bug] Long filenames from QR do not scroll

QR codes in which the file name is rather long (such as the one attached below) don't allow you to scroll the text to see the beginning of the filename when setting a name, you can only see the end of it, so you kind of have to type it blind.

image

Fails to start camera

It's stuck at "Starting camera..." and with verbose logging on it's the same.
Im running hiyaCFW/unlaunch with TWImenu++ on the DSi XL.

[bug] Cannot download folders using advanced `dsidl:src` format

{ "dsidl:src" : "https://cdn.merith.xyz/dsi/_test_dir_/dsidl.json" }
{"dsidl":1,"script":{"root-file.txt":{"url":"https://cdn.merith.xyz/dsi/_test_dir_/root-file.txt"},"subfolder/subfile.txt":{"url":"https://cdn.merith.xyz/dsi/_test_dir_/subfolder/subfile.txt"}}}

errors downloading subfolder/subfile.txt

Document max length restrictions

Any idea on the maximum payload size?

I can successfully download a qr code with a URL that has 138 bytes (7-bit US-ASCII characters)this requires a json wrapper payload of 143-146 bytes.

I tried to adapt the 2nd example in https://github.com/Epicpkmn11/dsidl/wiki/Scripting with a destination filename but failed to read the QR code when the URL is 138 bytes. EDIT this is with https://github.com/Epicpkmn11/dsidl/releases/tag/v0.1.1

I think this means a limit of ~150 bytes. Thoughts?

Be great to get this documented.

[Improvement] Better icon and name(?)

Just opening this up incase anyone has ideas, dsidl could definitely use a better icon as the one it has right now is just something I drew on my trackpad in GIMP and animated moving down lol

For the name, I think dsidl is alright. It's short and decently fun to say (I just say all the letters, dee es ai dee el), but I would also be open to better name suggestions as well

[feature] allow QR to point to an `.setup.json` address

basically, the thought process is that it can be used to point to an "setup.json" rather than an normal file

kinda like

{
  "dsidl" : {
    "files" : [
      "/data/config.txt" : "http://example.com/data/config.txt",
      "/program.nds" : "http://example.com/data/program.nds",
    ]
  }
}

where it then prompts the user that this is an multi-download QR, and then were they want this data saved (select for all or for single file at an time)

[bug] dsidl:src does not prompt user where to store the files if path is not provided

qr.json

{
	"dsidl:src": "https://cdn.merith.xyz/test.dsidl.json"
}

dsidl:src

{
	"dsidl": 1,
	"script": {
		"dsidl-merith.dsi": "https://github.com/Merith-TK/dsidl/releases/download/release-test/dsidl.dsi"
	}
}

it will download dsidl-merith.dsi to sd:/ rather than prompting user,

I feel as if this functionality should prompt user where to store files if one of the strings does not start with an /
so that way if an file is required to be at / due to hardcoding, but the program itself doesnt nessecarily need to be stored at / it could be stored elsewhere
so this could be the format

{
	"dsidl": 1,
	"script": {
		"program.nds": "https://example.com/program.nds",
		"/program.config": "https://example.com/program.config"
	}
}

[improvement] QR Code outline not at optimal position

in my testing, the QR Code outline boarder is not in the optimal position for scanning an QR code when lined up perfectly,

the outer corners of the QR code need to match the inner corners of the template,

it it possible that maybe it is grabbing the overlay on the image as well?

[improvement] Add "yes to all" functionality

image
{ "dsidl:src" : "https://cdn.merith.xyz/dsi/microlua/dsidl.json" }

Yes I am aware I am blatantly rehosting microlua 4.7.2, its what I am using to test an auto generator for dsidl:src json files
as it stands it asks for every single file, which in that QR code, is 54 files, which as it currently works, I have to tap yes 54 times,

Change parsing filename to header

I made a small program so send files to DSi using this app (Here is repo) and ran into a problem, DSi Downloader gets filename not from header but from link's end (Problem is described in repo's readme under Bugs section)

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.