Jump to content

I made Drovp

drovp_1.png.e08ceb43c444b94d7beb2f8cdce2d61b.pngHi, I've been a lurker for a while but it's time to pop my cherry with hopefully a high quality post 馃檪

I made this free app for power users, so I think you guys might be interested. It's called Drovp, and you can download it here:

Drovp.app (github repo)

It works by having installable processors for which you can create pre-configured dropzones. There are currently plugins for:

  • encoding, converting, and resizing media files
  • perceptual optimization for images and svg files
  • upscaling
  • renaming files
  • uploading files to get a temporary download link to share, uploading to S3 or FTP servers
  • and some other too niche ones to list here...

If there's a missing processor and there's already an existing CLI tool to do what you want, you can use the "run" plugin to create a dropzone that will run a CLI command on a dropped file (benefit being one-time configuration, ease of use, and built in queuing and parallelization management).

The motivation for this was hating how every time I needed to do something to a file, I had to go through this annoying process of loading a different app, opening a file in it, configuring all the encoder/resolution/resize/crop settings, starting the process, and then manually dealing or renaming the output so it replaces the original. And god forbid I need to do something to more than one file.

With Drovp, I can just create a drop zone and start throwing files in. It handles queuing, parallelization, and can be configured to replace or sideplace inputs with outputs, so all I need to do is just configure a drop zone and start throwing even thousands of files or folders in (supports recursive directory expansion too).

But sometimes you need to crop/resize/cut a media file, and can't just use an input agnostic drop-zone. For that, processors can provide their own UIs. For example, when dropping a file into an encode profile, you can hold Ctrl to spawn a media editor:

editor.thumb.jpg.16034400e7acea20b1d0c589650e0b3f.jpg

After submitting, the file will be encoded using the profile's encoder config with modifications requested in the editor.

If you want to concatenate video or audio files, hold Alt while dropping them in. If you want to both concatenate and edit, hold Ctrl+Alt when dropping.

After making Drovp I was able to replace dozens of random scripts, CLI tools/commands and apps I was using into consolidated set of convenient dropzones. I hope some of you will find it as useful as I do 馃檪

PS: Each dropzone can be converted into an import link for you to share with others. When they click on it (or directly enter into import window inside the app), Drovp will re-create your dropzone on their end.
There are no servers, accounts, or any data harvesting going on. Everything is local, the links have the required data embedded in. I'm not tracking anything or doing any sort of telemetry under the hood. See source files on github linked above.

Link to comment
Share on other sites

Link to post
Share on other sites

Really nice, has really sped up the multiple clicks and settings I'm regularly doing in avidemux.聽

F@H
Desktop:聽i9-13900K, ASUS Z790-E, 64GB DDR5-6000 CL36, RTX3080, 2TB MP600 Pro XT, 2TB SX8200Pro, 2x16TB Ironwolf RAID0,聽Corsair HX1200, Antec Vortex 360 AIO,聽Thermaltake Versa H25 TG, Samsung 4K curved 49" TV, 23" secondary, Mountain Everest Max

Mobile SFF rig: i9-9900K, Noctua NH-L9i, Asrock Z390 Phantom ITX-AC, 32GB, GTX1070, 2x1TB SX8200Pro聽RAID0, 2x5TB 2.5" HDD RAID0, Athena 500W Flex (Noctua fan),聽Custom 4.7l 3D printed case

Asus Zenbook UM325UA, Ryzen 7 5700u, 16GB, 1TB, OLED

GPD Win 2

Link to comment
Share on other sites

Link to post
Share on other sites

Is there a reason why you decided to use web technologies to write an application that has "no servers, accounts, or any data harvesting going on"?

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

Probably because that's the standard and most hassle-free way to make a cross-platform app with a modern UI nowadays.

F@H
Desktop:聽i9-13900K, ASUS Z790-E, 64GB DDR5-6000 CL36, RTX3080, 2TB MP600 Pro XT, 2TB SX8200Pro, 2x16TB Ironwolf RAID0,聽Corsair HX1200, Antec Vortex 360 AIO,聽Thermaltake Versa H25 TG, Samsung 4K curved 49" TV, 23" secondary, Mountain Everest Max

Mobile SFF rig: i9-9900K, Noctua NH-L9i, Asrock Z390 Phantom ITX-AC, 32GB, GTX1070, 2x1TB SX8200Pro聽RAID0, 2x5TB 2.5" HDD RAID0, Athena 500W Flex (Noctua fan),聽Custom 4.7l 3D printed case

Asus Zenbook UM325UA, Ryzen 7 5700u, 16GB, 1TB, OLED

GPD Win 2

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, Kilrah said:

that's the standard

I disagree.

4 minutes ago, Kilrah said:

and most hassle-free way

I (somewhat) agree, but the disadvantages (RAM usage, general UI speed, potential security problems) of this approach made me wonder.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

5 hours ago, Dat Guy said:

Is there a reason why you decided to use web technologies to write an application that has "no servers, accounts, or any data harvesting going on"?

Since the app is completely based around plugins and processors they add, I wanted to optimize for the ease of making and publishing them. And what is currently the most popular language and package registry? Yeah, unfortunately it's JavaScript and npm. But at least making a plugin is just writing a node module, and publishing is just `npm publish` away.

And since plugins were going to be node modules, it made sense to use Electron, as it already has a built in node module integration.

In retrospect though, making this app in Electron was and continues to be an incredible pain in the ass, and the bloat is making me dizzy as well sometimes, but performance is really important to me, so at least everything that is in my control is as fast and efficient as it can be. I even wrote my own reactive state library, router, and pretty much 95% of dependencies I use, as I considered the popular alternatives to be way too bloated or slow for what they do. (web devs tend to take the "avoid premature optimizations" to the extreme and a lot of times it seems like they don't care about performance at all)

At the end of the day, you can make a good app in any combination of language and UI framework you choose, it just depends on how you use it. In practice, all that Electron is causing in itself is just a couple hundred extra milliseconds of startup time, and if you notice any other slowdowns, it's usually developer's fault. But I do agree with you. If I had to do it again, I don't think I'd choose Electron.

Link to comment
Share on other sites

Link to post
Share on other sites

5 minutes ago, tomasklaen said:

Since the app is completely based around plugins and processors they add, I wanted to optimize for the ease of making and publishing them. And what is currently the most popular language and package registry? Yeah, unfortunately it's JavaScript and npm.

It is relatively easy to use JavaScript as a scripting language in any environment. For example, I chose JavaScript as the "plug-in language" for my static blog generator聽(discontinued) for a very similar reason, indeed. But it really sucks as a desktop runtime.

5 minutes ago, tomasklaen said:

performance is really important to me

Honestly, Electron is not really fast (or lightweight - after all, it's basically a full-blown Chrome).

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now