UIL Downloader

UIL Downloader Used AI

6 devlogs
9h 42m
Created by Shubh

uil-dl (UIL Downloader) is a tool enabling easy and bulk download of Texas UIL Academics contest materials. See the repository for the most up-to-date information.

Timeline

I can now make a distributable build!

I added a shutdown button in the GUI, updated some backend logic to work with installed builds (mainly modified file paths), and used pywebview instead of an external browser (though it is still possible to use an external browser). I also added a splash screen for the build.

I just have to work out some bugs and stuff like app metadata, icons, signing, etc. and I will be ready for a release (and the first ship)!

Latest Commit

Update attachment
Shubh
Shubh
3h 20m 10 days ago

A couple of big changes towards building a standalone app.

Modularized the project, moved resources to app directories (eg application support), validated resources (info.json, info.db, config.cfg) upon start, enforced singleton behavior through lock files, streamlined logs, etc.

The next step would be to add user-initiated shutdown management and perhaps a simple GUI before bundling the entire thing as one standalone app (I plan to use pyinstaller for this).

Latest Commit

Update attachment

Fixed checkbox logic and enabled setting & validating download path.

Latest Commit

Update attachment
Shubh
Shubh
1h 11m 14 days ago

Some more backend updates, but some frontend ones as well. The user can now refresh the info.json from GitHub, and information such as number of contests, the information version number, and the path to the downloads directory is displayed.

Latest Commit

Update attachment
Shubh
Shubh
1h 15m 14 days ago

Did some backend updates. Added a config file which enables custom download directories and the ability to retrieve new info.json files from GitHub. These changes lay the groundwork to have a single executable application that can be downloaded, instead of requiring users to build from scratch.

Latest Commit

Update attachment

So far, I've been working on some improvements. I simplified the database schema so that only one table is required instead of the previous two. I'm not sure what prompted me to overcomplicate the schema before.

I also migrated to a HTML over the wire approach: now, instead of the browser receiving the entire database, the backend manipulates the database (through SQLAlchemy) and sends only required information to the browser using HTMX. In addition to minimizing JS, this also makes the code easier to read. Since the tool is designed to be locally hosted, it doesn't really make a difference in speed.

I've also improved the download system for thread-safety and all.

Latest commit

Update attachment