Ondographics

Saving songs, and the script that fetches the tools

Ondographics is built twice from one codebase, and the difference between the two products is one feature. The public build does not save songs to disk and contains nothing that offers to. The Local build does, and it works through two programs the app fetches rather than ships. This page publishes the script that fetches them.

Download install-downloaders.js 11 KB, a Node script, published here rather than in a repository.
File
install-downloaders.js
Size
11 KB
SHA-256
6797a1ace8ec5950e5bf01d272e5d817995237b85d267b898724b582aef1b685
Needs
Node.js 20 or newer

What the two products are

ProductContainsInstalls to
Ondographics no downloader at all. Nothing in it fetches yt-dlp or ffmpeg, and nothing in it offers to. %LOCALAPPDATA%\Programs\Ondographics
Ondographics Local the downloader: songs can be saved to a folder on this PC, and the hub shows the row that fetches the two programs and the list of what has been saved next to Liked songs. %LOCALAPPDATA%\Programs\Ondographics Local

How the difference is enforced is the point. The public build does not contain the downloader: the build leaves those files out of the payload and then reads the payload back and checks they are absent, rather than trusting a switch. There is nothing in that build to turn on.

What the script does

It fetches yt-dlp and ffmpeg from their own releases, for this machine, into a folder the app can reach. It builds nothing, wraps nothing and renames nothing. Nothing here fetches a song: it fetches tools.

Neither program is bundled with the app on purpose. yt-dlp has to be replaced often, because the sites it reads change underneath it, and a copy frozen inside an installer is a copy that stops working; and it keeps a second unsigned executable out of a download you are meant to be able to verify.

Running it

node install-downloaders.js [--dir <folder>] [--force] [--quiet]

With no arguments it installs into %USERPROFILE%\.ondographics\tools. The Local build runs the same script with --dir pointing at the tools folder it is configured to use. Progress is written to standard output as one JSON object per line, because the app runs this and has to tell a person what is happening while it does. The exit code is 0 only when both programs are in place and have answered --version.

If you are here because you want songs saved and you have not installed anything yet: install the Local build, and let the hub's own row run this for you. Running it by hand only makes sense for a machine where the tools should live somewhere you choose.

Why this file is here and not in a repository

A script that downloads two programs from other people's releases is a file that a hosting provider can reasonably ask questions about, and a repository that carries it is a repository that can be taken down and a project that can be interrupted. So it is published here, next to the product, with its checksum above. The two programs themselves are fetched from their own releases at the moment you run it, which is also the only way to get a version that still works.

The hub's manual covers the setting that switches the automatic fetch off, and the setting that points the app at a copy of yt-dlp you already have.