I KNOW HOW TO FIX LRS2LRF
its fucking CASE SENSITIVE for tags! books that use <BBeBXylog>, <BookInformation> etc, don't work because lrs2lrf.py is hardcoded to look for lowercase tags only
i'm going insane why is it coded like that

I wonder if lrf-lrs conversion was different back then, or if lrf ebooks actually store case for their tag data and all lrf books back then used lowercase??

Or maybe this janky crap never worked right, who knows

WOW no OKAY, it turns out lrf2lrs is hardcoded to use PascalCase for tags, but lrs2lrf is hardcoded to use lowercase. Kovid Goyal is a sadistic motherfucker.
weeird. the attrs_to_dict function had a for-loop to iterate over a list of attributes, but took the range 'tab.attrs' instead of 'tab.attrs.items()' and idk much about python but the interpreter on my puter was not happy with that
i have no fucking idea how this script was ever supposed to work. it only scans for buttons that link to a <header> or <footer>, and if a button's refobj links to ANYTHING that's NOT a header or footer, it throws an error. the shit??
I added a loop that scans for TextBlocks too but now another part of the program is breaking
time to go back to finding a working version of BookDesigner and/or some kind of magic(k)al Calibre options that output a well-formatted book in LRF
Oh shit I actually did find a copy of BookDesigner, someone uploaded it to the MobileRead forums. And it works way better than Calibre for generating LRFs!