Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/spel987/PolyUploader

Upload your files remotely to different hosting sites.
https://github.com/spel987/PolyUploader

Last synced: 3 months ago
JSON representation

Upload your files remotely to different hosting sites.

Awesome Lists containing this project

README

        

# PolyUploader
## Upload your files remotely to different hosting sites.


πŸ•ΉοΈ Demonstration |
πŸ“– Documentation website |
🧾 Terms



⬇️ Installation |
🌐 Supported hosts |
πŸš€ Use |
πŸ§ͺ Comparaison with Mirrored.to and Mirrorace.org |
πŸ› οΈ Code and precision |
πŸ‘€ Credits




ko-fi




### Test PolyUploader on the web with a demonstration version: https://p-u.vercel.app/demonstration
# Installation

### - Use the application by compiling it by hand:

- Install the latest version of Rust: https://www.rust-lang.org/tools/install

- Install Tauri-CLI with this command:

```
cargo install tauri-cli
```

- Start compilation with this command:

```
tauri build
```

You'll find the installer in the `.\src-tauri\target\release\bundle` folder.

### - Or simply download and run the [release](https://github.com/spel987/PolyUploader/releases/latest).

Additional information: I'm not providing a portable version at the moment. In fact, Tauri creates a `C:\Users\\AppData\Local\PolyUploader` folder containing the data required by the Webview.

# Supported hosts

Below is a table of the hosting providers currently supported by the application.

| Name | Url | Max files size | Time to file expiration | Supports manual deletion | Host requiring an API key |
| :-------------- | :--------------------------- | :------------: | :--------------------------: | :----------------------: | :-----------------------: |
| 1fichier | https://1fichier.com | infinite | 15 days | βœ”οΈ | ❌ |
| Turbobit | https://turbobit.net | 200 MB | 7 days | ❌ | ❌ |
| Bowfile | https://bowfile.com | 20 GB | 30 days | βœ”οΈ | ❌ |
| Gofile | https://gofile.io | infinite | 10 days | βœ”οΈ | ❌ |
| Hitfile | https://hitfile.net | 100 GB | 30 days | ❌ | ❌ |
| Uplooad | https://uplooad.net | 1 GB | 2 days | βœ”οΈ | ❌ |
| 1Cloudfile | https://1cloudfile.com | 5 GB | 30 days | βœ”οΈ | ❌ |
| Uploadify | https://uploadify.net | 2 GB | infinite | βœ”οΈ | ❌ |
| File.io | https://file.io | 2 GB | 14 days | ❌ | ❌ |
| file-upload.org | https://file-upload.org | 200 MB | 60 days | βœ”οΈ | ❌ |
| RapidFileShare | http://rapidfileshare.net | 512 MB | 5 days | βœ”οΈ | ❌ |
| Upload.ee | https://upload.ee | 100 MB | 50 days | βœ”οΈ | ❌ |
| transfer.sh | https://transfer.sh | 10 GB | 14 days | ❌ | ❌ |
| Netu | https://netu.ac | 8 GB | 30 days | ❌ | ❌ |
| Buzzheavier | https://buzzheavier.com | infinite | infinite | ❌ | ❌ |
| HexUpload | https://hexload.com | 2 GB | 60 days | βœ”οΈ | ❌ |
| DailyUploads | https://dailyuploads.net | infinite | 30 days | ❌ | ❌ |
| UsersDrive | https://usersdrive.com | 2.25 GB | 10 days | βœ”οΈ | ❌ |
| Send.cm | https://send.cm | 100 GB | 15 days | ❌ | ❌ |
| Mexa.sh | https://mexa.sh | 500 MB | 60 days | βœ”οΈ | ❌ |
| Clicknupload | https://clicknupload.click | 2 GB | 7 days | βœ”οΈ | ❌ |
| MegaUp | https://megaup.net | 5 GB | 60 days | βœ”οΈ | ❌ |
| AnonSharing | https://anonsharing.com | 1 GB | 180 days | βœ”οΈ | ❌ |
| Filespace | https://filespace.com | 150 MB | 10 days | ❌ | ❌ |
| Gulfup | https://www.gulf-up.com | 200 MB | 10 days | βœ”οΈ | ❌ |
| Fastupload | https://fastupload.io | 50 GB | 30 days | βœ”οΈ | ❌ |
| DepositFiles | https://dfiles.eu | 10 GB | 90 days | ❌ | ❌ |
| Download.gg | https://download.gg | 25 GB | infinite | βœ”οΈ | ❌ |
| Sendvid | https://sendvid.com | 1 GB | 90 days | ❌ | ❌ |
| AnonTransfer | https://anontransfer.com | 1 GB | 30 days | ❌ | ❌ |
| Litterbox | https://litterbox.catbox.moe | 1 GB | 24 hours | ❌ | ❌ |
| Temp.sh | https://temp.sh | 4 GB | 3 days | ❌ | ❌ |
| TmpFiles.org | https://tmpfiles.org | 100 MB | 1 hour | ❌ | ❌ |
| Free.fr | https://transfert.free.fr | 10 GB | 7 days | βœ”οΈ | ❌ |
| Uguu.se | https://uguu.se | 32 MB | 3 hours | ❌ | ❌ |
| Filebin | https://filebin.net | infinite | 7 days | βœ”οΈ | ❌ |
| Upstore | https://upstore.net | 1 GB | 30 days | ❌ | ❌ |
| uFile | https://ufile.io | 5 GB | 30 days | ❌ | ❌ |
| KrakenFiles | https://krakenfiles.com | 1 GB | 30 days | ❌ | ❌ |
| Media.cm | https://media.cm | 300 MB | 90 days | ❌ | ❌ |
| Oshi.at | https://oshi.at | 5 GB | 2 hours | βœ”οΈ | ❌ |
| bashupload | https://bashupload.com | 50 GB | 3 days | ❌ | ❌ |
| Tommo.team | https://tommo.team | 4 GB | 30 days | ❌ | ❌ |
| tempfiles.ninja | https://tempfiles.ninja | 100 MB | 24 hours | βœ”οΈ | ❌ |
| UploadEv | https://uploadev.org | 250 MB | 10 days | βœ”οΈ | ❌ |
| 0x0.st | https://0x0.st | 512 MB | depends on the file size[^1] | ❌ | ❌ |
| udrop | https://udrop.com | 10 GB | 7 days | βœ”οΈ | ❌ |
| Tempsend | https://tempsend.com | 2 GB | 7 days | ❌ | ❌ |
| Curl.by | https://curl.by | 32 MB | 30 days | ❌ | ❌ |
| FileTmp | https://filetmp.com | 300 MB | 5 hours | ❌ | ❌ |
| CCU.to | https://ccu.to | 5 GB | 3 days | ❌ | ❌ |
| ImgBB | https://imgbb.com | 32 MB | infinite | ❌ | ❌ |
| ki.tc | https://ki.tc | 400 MB | depends on the file size[^1] | ❌ | ❌ |
| CyberFile | https://cyberfile.me | 10 GB | 5 days | βœ”οΈ | ❌ |
| c-v.sh | https://c-v.sh | 4 GB | depends on the file size[^1] | βœ”οΈ | ❌ |
| x0.at | https://x0.at | 50 MB | depends on the file size[^1] | ❌ | ❌ |
| Nopaste | https://nopaste.net | 2 GB | 21 days | ❌ | ❌ |
| TmpSend | https://tmpsend.com | 1 GB | 7 days | ❌ | ❌ |
| Isra.cloud | https://isra.cloud | 5 MB | 24 hours | βœ”οΈ | ❌ |
| DoodStream | https://doodstream.com | infinite | 60 days | ❌ | βœ”οΈ |
| Pixeldrain | https://pixeldrain.com | 20 GB | 90 days | βœ”οΈ | βœ”οΈ |
| Drop.download | https://drop.download | 50 GB | 10 days | ❌ | βœ”οΈ |
| FileMoon | https://filemoon.sx | 50 GB | 10 days | ❌ | βœ”οΈ |
| Catbox | https://catbox.moe | 200 MB | infinite | βœ”οΈ | βœ”οΈ |
| ddownload | https://ddownload.com | 2 GB | 30 days | βœ”οΈ | βœ”οΈ |
| mp4upload | https://mp4upload.com | 500 MB | 30 days | ❌ | βœ”οΈ |
| DropGalaxy | https://dropgalaxy.com | 5 GB | 120 days | ❌ | βœ”οΈ |
| Nitroflare | https://nitroflare.com | 10 GB | 90 days | ❌ | βœ”οΈ |
| Vidoza | https://vidoza.net | 50 GB | 30 days | ❌ | βœ”οΈ |
| Katfile | https://katfile.com | 5 GB | 10 days | βœ”οΈ | βœ”οΈ |
| Rapidgator | https://rapidgator.net | 80 GB | 30 days | ❌ | βœ”οΈ |
| StreamA2Z | https://streama2z.com | 10 GB | 60 days | ❌ | βœ”οΈ |
| StreamWish | https://streamwish.com | 50 GB | infinite | ❌ | βœ”οΈ |
| StreamRuby | https://streamruby.com | 50 GB | 10 days | ❌ | βœ”οΈ |
| Voe.sx | https://voe.sx | 25 GB | 60 days | ❌ | βœ”οΈ |
| DevUploads | https://devuploads.com | 5 GB | 30 days | ❌ | βœ”οΈ |

In all, PolyUploader lets you upload your files to **76 different hosts** !
If you know of a host that has an API or just a CLI interface, please open an [issue](https://github.com/spel987/PolyUploader/issues).

# Use

Currently, my application supports **76 hosting sites**.

So you can upload your files remotely and get the download link created. You can upload from local storage or from a URL. You can also upload your file to multiple hosts simultaneously and retrieve all the links created.

I've provided predefined profiles to simplify things, but if you like, you can create your own profiles with your chosen hosts. Rename them, change hosts and, if necessary, delete them.

You can also import your own API key for some hosts to connect your account and space to PolyUploader.

You have access to a history of links created, showing its upload date and the time remaining before it expires. When your file has expired, this is indicated. You can easily clear the history.

Every 12 hours, a check is made to see if the hosts are still online. If this is not the case, the script makes it unavailable.

You can manually delete the file uploaded to the host from the history, provided that the host is able to delete it and offers the ability to do so. You'll find a list below.

To test PolyUploader without installing it, use the demonstration available on the web at https://p-u.vercel.app/demonstration.



# Comparison with [Mirrored.to](https://mirrored.to) and [Mirrorace.org](https://mirrorace.org)

| | PolyUploader | [Mirrored.to](https://mirrored.to) | [Mirrorace.org](https://mirrorace.org) |
| :------------------------------------------------------------------------ | :----------: | :--------------------------------: | :------------------------------------: |
| Number of hosting providers supported | 76 | 36[^2] | 54[^3] |
| No need for a user account to fully use the service | βœ”οΈ | ❌ | ❌ |
| Maximum file size limit | infinite[^4] | 500MB | 5GB |
| History of uploaded files | βœ”οΈ | ⚠️[^5] | ⚠️[^5] |
| Flags up offline hosts and prevents the user from uploading files to them | βœ”οΈ | ⚠️[^6] | ❌ |
| Uploaded file can be deleted[^7] | βœ”οΈ | ❌ | ❌ |
| Ability to upload a file from a URL | βœ”οΈ | βœ”οΈ | βœ”οΈ |
| Ability to upload multiple files simultaneously | ❌ | βœ”οΈ[^8] | βœ”οΈ[^9] |
| Profile features | βœ”οΈ | ⚠️[^10] | ⚠️[^10] |
| Created links accessible from a shareable link | βœ”οΈ | βœ”οΈ | βœ”οΈ |
| Supports user API keys for concerned hosts | βœ”οΈ | βœ”οΈ | βœ”οΈ |
| Open-source | βœ”οΈ | ❌ | ❌ |

Legend:
- βœ”οΈ: Yes
- ❌: No
- ⚠️: Partially

# Code and precision

For some sites, I use their supplied API, for others, I've converted their curl command to JS, and for yet others, I've simply imitated the request made to the server when sending files via their website.

For some sites, I was getting the famous "Access-Control-Allow-Origin" error. To counter this, I found and used a GitHub repository: https://github.com/Bassetts/warp-cors.

I use the `warp-cors.exe` executable that I've integrated into my application's resources. This executable is launched when the application is started and closes when it is closed. It opens an HTTP server on port 61337 and I make my requests not to the URL directly but to `http://127.0.0.1:61337/https://example.com`. I'll let you have a look at the Bassetts repository if you're interested!

This part of the code in the `main.rs` file opens the `warp-cors.exe` executable file and then closes it with the function below.

```rs
// main.rs

fn main() {
Β  Β  let CREATE_NO_WINDOW = 0x08000000;

Β  Β  let child = Command::new("cmd")
.args(["/C", "cd", "Resources", "&", "warp-cors.exe", "--port", "61337"])
Β  Β  Β  Β  .creation_flags(CREATE_NO_WINDOW)
Β  Β  Β  Β  .spawn()
Β  Β  Β  Β  .expect("Error launching warp-cors server process");

Β  Β  unsafe {
Β  Β  Β  Β  CHILD_PID = Some(child.id());
Β  Β  }

//...
}

#[tauri::command]
fn kill_warp_cors() {
Β  Β  let CREATE_NO_WINDOW = 0x08000000;
Β  Β 
Β  Β  unsafe {
Β  Β  Β  Β  if let Some(child_pid) = CHILD_PID {
Β  Β  Β  Β  Β  Β  let kill_result: Result<(), std::io::Error> = Command::new("cmd")
Β  Β  Β  Β  Β  Β  Β  Β  .args(["/C", "taskkill", "/PID", &child_pid.to_string(), "/T", "/F"])
Β  Β  Β  Β  Β  Β  Β  Β  .creation_flags(CREATE_NO_WINDOW)
Β  Β  Β  Β  Β  Β  Β  Β  .spawn()
Β  Β  Β  Β  Β  Β  Β  Β  .map(|_| ());
Β  Β  Β  Β  }
Β  Β  }
}
```

And in the `script.js` file I pass requests through this server.

```js
// script.js

const url_for_bypass_cors = "http://127.0.0.1:61337"

else if (current_host === "oshi.at") {
Β  Β sent_data_form.append("f", file_to_upload);
Β  Β sent_data_form.append("expire", "120");
Β  Β upload_to_host([url_for_bypass_cors + "https://oshi.at/", "POST", sent_data_form], "text", ["match", /(?<=DL: )\S+/, 0], [], [["match", /(?<=MANAGE: )\S+/], "GET", {}, ["", "?delete=1"]]);
}
```

# Credits

### Developer:

- spel987

Email: `[email protected]`

GitHub: https://github.com/spel987

### Backend

- Rust: https://www.rust-lang.org
- Tauri: https://tauri.app/
- warp-cors: https://github.com/Bassetts/warp-cors
### Frontend

- Tailwind CSS: https://tailwindcss.com/
- Font Awesome: https://fontawesome.com
- Flaticon (and author [Ilham Fitrotul Hayat](https://www.flaticon.com/authors/ilham-fitrotul-hayat)): https://www.flaticon.com/free-icon/upload_2763883
### The sites used

All the sites listed in the table [here](#supported-hosts).

# Suggestions

If you have any questions or suggestions, please open an [issue](https://github.com/spel987/PolyUploader/issues).

[^1]: **"depends on the file size"** means that the host keeps your files according to their weight. They use different algorithms. *For more information, please visit the chosen site.*
[^2]: Only 13 hosts are proposed when we don't use an account.
[^3]: Only 36 hosts are proposed when we don't use an account.. Many hosts are no longer supported, and I've found that around 60% of hosts are no longer functional.
[^4]: File size is not restricted by the software, but by the host. It all depends on the host's capacity.
[^5]: History is only available to registered users.
[^6]: Offline hosts are not deactivated, we need to go to "https://www.mirrored.to/p/host-status" for status information.
[^7]: Provided that the host is able to delete it and offers the ability to do so
[^8]: This feature is limited to 20 files.
[^9]: This feature is limited to 50 files.
[^10]: Only a "profile" that checks off the favorite hosts selected in the settings. User account required.