I brought up the possibility of using
calcpkg to interface with ticalc.org's repository on IRC, and Kerm asked me to look into it and make a post. So I am.
Running 'calcpkg list -c 83plus ""' will list everything in the 83+ category on ticalc.org. (Likewise, 'calcpkg get -c 83plus ""' would download the entire 83+ archive).
However, that's not very useful if you want to be able to browse by category. (And I'm guessing transferring third-party OSes is slightly beyond the scope of the project). But what you can do is run 'calcpkg list -c 83plus/asm ""', which will only list assembly programs for the 83+. And so on- you could do -c 83plus/asm/games/levels/penguins to list all files in that category.
What calcpkg
doesn't have, at least not directly, is a list of all the categories. But it does have an index file with the names of every single file in them (including their category), so it would be trivial to write a script to extract a list of all categories from that index. (Actually, I just realized that the output of the update command already does this, so I suppose I could dump them to a file while I'm at it).
If a user selects a specific file, you could run the info command (calcpkg info -c 83plus name) and the download command (calcpkg get -x-c 83plus filename). The x switch extracts the zip (or tarball), which would easily let them look inside the zip.
You might want to write your own script that uses the ticalcDotOrg module, though. First, even though I did build redirectable output into the module (you can specify a Python object with a write function, and all the output will be sent to that function), it might be a little annoying to intercept and parse that output. Second, since two ticalc.org files can't have the same archive name but
can have the same title, it would be safer to run "calcpkg info|get -f archive_file_name" (that searches for the filename rather than the title). But the list command doesn't show you the archive filename.
I can easily fix that, and I can make update generate a "categories.index" file, but you still might decide to use your own script. In that case, all the commands I listed above are easily translatable to arguments for various functions in ticalcDotOrg.ticalc.