downloadXkcd.py downloads xkcd comics and hover text and combines them together into one image per comic. It will skip a few as the author will ocassionally create something unique that is not an image file. As more comics are released over time it's possible the error handling may not catch everything, but the output can facilitate finding where it fails so the url variable at the top of the program can to changed to start after the failed download and continue from there.
You will need to add a path to a font on your local machine to replace the path in this code:
fnt = ImageFont.truetype('C:\\path\\to\\a\\font\\Raleway-Medium.ttf', 15)
downloadPbfComics.py downloads pbf comics.
downloadQuestionableContent.py downloads questionable content comics.
These scripts facilitate convenient offline viewing and archiving. Please consider supporting the comic creators.