Handle command line without argument

Accessing the filter argument when there is no argument would fail.
Separate the argument parsing and the books processing

Those are two different things and should not be in the same function.
It also make it possible to test the processing method.