Uhm... Hi all,
this is my first post here, and this is probably the best discussion for me to join in.
I'm currently using Calibre (great tool, thanks!) to organize my personal ebook library, and I started hacking together non-standard Amazon metadata/cover download plugins, because:
a) I want the Amazon plugin to fall back to author/title search if the ISBN isn't filled in.
b) I want to download cover images primarily from Amazon. I find it to be one of the best sources of covers for my needs.
c) I wanted to be able to search in multiple languages, or at least switch the result language. I don't need it _that_ badly, but I have ebooks in 3 languages, and 2 of them (de, en) are directly supported by Amazon, so why not use it?
d) I want the Amazon plugin to use my Amazon key/secret, like I use my isbndb.com key for the isbndb plugin. The downside is that to use the plugin you'd need to get your (free) API key from Amazon, but I think it's still better than sending all your ISBNs to http://status.calibre-ebook.com/aws/metadata/<ISBN> (single point of failure, load, maybe privacy issues...)
e) I want to learn more about how Calibre works, because I'd like to start contributing at some point.
There are bits I haven't quite figured out yet, maybe someone could help out here/point me in the right direction?
1) I tried defining my cover and metadata download plugin classes in the same script, but Calibre seems to be picking up only the metadata download plugin. Is it even possible to have more than one plugin per *plugin.py file?
2) Can Calibre handle a plugin class with multiple responsibilities,
like 'class UnifiedAmazonPlugin(MetadataSource, CoverDownload):'? (the amazon API is practically begging to do it this way).
3) I'd like my plugin(s) to have 3 configuration properties: amazon id, amazon secret, and the result language(s). For my first plugin attempts I'd like to see two text entry fields and a combo box (for the result language) when I click "Customize plugin". Or maybe not a combo box, maybe a row of checkboxes (gb, us, de, fr, ja, ...).
I see some customization-related methods in the plugin API, but I'm not sure if it's the 'customization' I'm looking for? And I don't see how I can control the customization GUI from the plugin code (although I see that the isbndb plugin somehow creates a text entry field).
Thanks!
|