Thank you for the quick reply Kovid. I'm not quite sure what you mean by that. I took a stab at what you mean in action.py on my "implemtation" branch here, but the line with "with self:" gives an error:
Traceback (most recent call last):
File "calibre_plugins.play_books_upload.action", line 110, in upload_books
AttributeError: __enter__
https://github.com/jpwhiting/play-bo...action.py#L110
I've not seen "from self:" before in python examples anywhere, so am not quite sure what that is for, etc. If I try the imports without that, the upload action errors saying it can't find googleapiclient module which is there in the zip of the plugin.