Looping over course>section>module could be indicated using tqdm as the size of each iterable is know in advance. This is probably not a good estimate of the remaining runtime but still better than nothing.
Also we should probably suppress tqdm if stdout.isatty() is false as that means we would write to a file which does not make too much sense when using tqdm
Looping over course>section>module could be indicated using tqdm as the size of each iterable is know in advance. This is probably not a good estimate of the remaining runtime but still better than nothing.