Indexes open directories listings in 100+ supported formats, including FTP, Google Drive, GoIndex (alternatives).
Written in C# with .NET (Core), which means it is cross platform!
Downloading is not (yet) implemented, but is already possible when you use the resulting file into another tool (for most of the formats).
Downloading with wget:
wget -x -i theurlsfile.txt
Downloading with aria2c (Does not support directory structure..):
aria2c -i theurlsfile.txt
If you have improvements, supply me with a pull request! If you have a format not yet supported, please let me know.
For builds (64-bit) for Windows, Linux and Mac, or ARM/ARM64 builds for Pi:
https://github.com/KoalaBear84/OpenDirectoryDownloader/releases
When using the self-contained releases you don't need to install the .NET Runtime.
When you are NOT using the self-contained releases, you need to install the latest/current Runtime version of .NET:
https://dotnet.microsoft.com/download/dotnet/current/runtime
Command line parameters:
Short | Long | Description |
---|---|---|
-u |
--url |
Url to scan |
-t |
--threads |
Number of threads (default 5) |
-o |
--timeout |
Number of seconds for timeout |
-q |
--quit |
Quit after scanning (No "Press a key") |
-c |
--clipboard |
Automatically copy the Reddits stats once the scan is done |
-j |
--json |
Save JSON file |
-f |
--no-urls |
Do not save URLs file |
-r |
--no-reddit |
Do not show Reddit stats markdown |
-l |
--upload-urls |
Uploads urls file |
-e |
--exact-file-sizes |
Exact file sizes (WARNING: Uses HEAD requests which takes more time and is heavier for server) |
-s |
--speedtest |
Does a speed test after indexing |
-a |
--user-agent |
Use custom default User Agent |
--username |
Username | |
--password |
Password | |
--output-file |
Output file to use for urls file |
Example:
OpenDirectoryDownloader.exe --url "https://myopendirectory.com"
If you want to learn more or contribute, see the following paragraphs!
When you want to copy (C
key or -c
flag) the stats at the end on Linux you need to have xclip installed.
Every release will automatically push an image to the Docker Hub:
https://hub.docker.com/repository/docker/koalabear84/opendirectorydownloader
Run it like:
docker run --rm -v c:/Scans:/app/Scans -it koalabear84/opendirectorydownloader --quit --speedtest
It will save the URLs files onto C:\Scans (windows), or replace with a custom folder on other OS-ses.
* You can also run it without -v c:/scans:/app/Scans
if you don't want to save the results on your host.
- Install Visual Studio: https://visualstudio.microsoft.com/vs/community/
- With workload: ".NET Core cross-platform development"
- With individual components: Code tools > Git for Windows and Code tools > GitHub extension for Visual Studio
- Be sure to install Git: https://git-scm.com/downloads
- Clone the repository by clicking "Clone or download" and click "Open in Visual Studio"
- Download Visual Studio Code: https://code.visualstudio.com/download
- Be sure to install Git: https://git-scm.com/downloads
- Clone the repository: https://code.visualstudio.com/docs/editor/versioncontrol#_cloning-a-repository
- More help: https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio-code
- Install the newest .NET 5 SDK.
git clone https://github.com/KoalaBear84/OpenDirectoryDownloader
cd OpenDirectoryDownloader/OpenDirectoryDownloader
dotnet build .
cd bin/Debug/net5.0
./OpenDirectoryDownloader --url "https://myopendirectory.com"
For Linux (Might not be needed since .NET 5):
Then, if you need to package it into a binary, you can use warp-packer
When you have cloned the code, you can also run it without the SDK. For that, download the "Runtime" and do "dotnet run .
" instead of build.
For Google Drive scanning you need to get a Google Drive API credentials file, it's free!
You can use a many steps manual option, or the 6 steps 'Quickstart' workaround.
Manual/customized:
- Go to https://console.cloud.google.com/projectcreate
- Fill in Project Name, like "opendirectorydownloader" or so, lease Location unchanged
- Change Project ID (optional)
- Click "CREATE"
- Wait a couple of seconds until the project is created and open it (click "VIEW")
- On the APIs pane, click "Go to APIs overview"
- Click "ENABLE APIS AND SERVICES"
- Enter "Drive", select "Google Drive API"
- Click "ENABLE"
- Go to "Credentials" menu in the left menu bar
- Click "CONFIGURE CONSENT SCREEN"
- Choose "External", click "CREATE"
- Fill in something like "opendirectorydownloader" in the "Application name" box
- At the bottom click "Save"
- Go to "Credentials" menu in the left menu bar (again)
- Click "CREATE CREDENTIALS"
- Select "OAuth client ID"
- Select "Desktop app" as "Application type"
- Change the name (optional)
- Click "Create"
- Click "OK" in the "OAuth client created" dialog
- In the "OAuth 2.0 Client IDs" section click on the just create Desktop app line
- In the top bar, click "DOWNLOAD JSON"
- You will get a file like "client_secret_xxxxxx.apps.googleusercontent.com.json", rename it to "OpenDirectoryDownloader.GoogleDrive.json" and replace the one in the release
Wow, they really made a mess of this..
Alternative method (easier):
This will 'abuse' a 'Quickstart' project.
- Go to https://developers.google.com/drive/api/v3/quickstart/python
- Click the "Enabled the Drive API"
- "Desktop app" will already be selected on the "Configure your OAuth client" dialog
- Click "Create"
- Click "DOWNLOAD CLIENT CONFIGURATION"
- You will get a file like "credentials.json", rename it to "OpenDirectoryDownloader.GoogleDrive.json" and replace the one in the release
On the first use, you will get a browser screen that you need to grant access for it, and because we haven't granted out OAuth consent screen (This app isn't verified), we get an extra warning. You can use the "Advanced" link, and use the "Go to yourappname (unsafe)" link.
If you like OpenDirectoryDownloader, please consider supporting me!