DEV Community

Jamse Bao
Jamse Bao

Posted on

Dissecting Omniget: A Rust Desktop Shell Around the Messy Reality of Media Extraction

A coding break was enough to make me test tonhowtf/omniget, especially after seeing it gain 102 stars in a day. The pitch is unusually practical: download courses, videos, music, and books from more than 1,800 sites without opening a terminal.

The architecture is what interested me. Omniget appears to keep the desktop experience focused on local files while delegating site extraction to yt-dlp. That is a sensible boundary. The GUI handles queues, playback, course organization, and reading; the extractor handles the constantly changing website logic. Reimplementing that second part would be an endless maintenance trap.

The friction log

The first edge case is authentication, not downloading. Public YouTube content is straightforward, but course platforms and age-restricted sources may require browser cookies. When extraction fails, the UI can make the problem look like a generic download error even though the real issue is missing session data, expired cookies, or a rate limit.

The same problem appears with format selection. A source may expose separate video and audio streams, or a format unavailable in the selected container. A clean local library does not remove those upstream constraints.

The one-line diagnostic

Before blaming Omniget, I would reproduce the URL through the underlying extractor:

yt-dlp --cookies-from-browser chrome --check-formats "https://example.com/video"
Enter fullscreen mode Exit fullscreen mode

If that succeeds, the issue is probably application configuration or cookie import. If it returns 429, stop retrying immediately; wait, reduce concurrency, and avoid repeatedly refreshing the same queue. For a format-specific test:

yt-dlp -F "https://example.com/video"
Enter fullscreen mode Exit fullscreen mode

That quickly shows whether the requested quality actually exists.

Takeaway

Omniget is appealing because it does not force users to assemble a downloader, player, course manager, and ebook reader separately. The cleanest part is the division of responsibility: Rust for the desktop product, yt-dlp for extraction, and local storage for ownership of the resulting files.

I would still test authentication-heavy sources first. The interface may be simple, but the websites behind it are not. When something breaks, inspect cookies, formats, and HTTP status codes before opening an issue.

Top comments (0)