Okay, I don't use the Plugin in that way but as I understand it, you first have to greate a custom column. I don't even try to explain that in detail, I leave that to others - see here. Then go to your Reading List Plugin and select the Customize plugin... option. There is a point 'Column Update Options' with 'Column to update' where you have to select your newly created custom column and choose the setting for 'When changing this list'.

BUT, after you did this, you have to add all your books on your reading list in a new list, otherwise the column will NOT update! View you reading list, select them all, add them to the new list, remove them from the old list. Done! Now you will have a nice green hook in this column for every book on you list.

Is there any way to programmatically add to your Reading Lists via an external prgram (on Windows 7 64 bit)?

I am trying to "Flag" certain books for later reading based on an external list of filenames I maintain with another program. It seems like your Reading Lists might offer the easiest approach? It lets me update the "tags" column and use "Flagged" as the "Value in column to add/remove".

I'm very familiar with Python and don't mind writing something to accomplish this. Alternatively maybe there is a completely different approach that will allow me to set calibre library tags or Category from a list of original filenames that have already been added to calibre. Or maybe I have to add my tags before adding the ebooks to calibre?

Background info:

I looked at the various calibre Command Line Interface programs but none of them seems to fit my needs.

ebook-meta would let me set the tags ebook metadata of an external, unarchived file but it wasn't possible to just add a tag --- you can only replace all the tags. This means I'd have to first find out the current tags by parsing the ebook-meta output and then run it again adding the tag I wanted. I'd then still need to re-add that external ebook to calibre.

calibredb has similar issues. You first have to find the id of the ebook you want to change via the list --search option, use show_metadata, parse the output to figure out the current tags, then use set_metadata to add your new tag. Seems a bit painful. It would be nice if there were an update command that lets you specify a search string to find matching books and then adds/removes tags.

My 'default list' seems to often get cleared out, such that there are no books in the default list anymore. Does this happen to anyone else? Any suggestions for possible solutions?

My default list is cleared every time I connect my device. That however is by design because I have things set for the books in the default list to upload to my device up connection. Once the books are uploaded the list is cleared.

There is a setting under customize plugin that says to "Clear this list after sync to device." Do you heave this option checked?

I have a list set to "auto populated from books on device", which updates a custom yes/no column on add/remove (#ondevice).

Everything works well if I have no virtual library loaded when I plug my device. But if I load a virtual library and then plug the device, any book not in the virtual library is removed from the list, and their #ondevice value is unset. So the next time I open Calibre, half the books are "missing" from the device according to #ondevice.

I have a list set to "auto populated from books on device", which updates a custom yes/no column on add/remove (#ondevice).

Everything works well if I have no virtual library loaded when I plug my device. But if I load a virtual library and then plug the device, any book not in the virtual library is removed from the list, and their #ondevice value is unset. So the next time I open Calibre, half the books are "missing" from the device according to #ondevice.

It has been a long while since I worked on this plugin but I did make some notes about Virtual Libraries on the release notes, see this post.

From what I recall at the time Virtual Libraries as a plugin developer are a giant pain in the butt for all the complications they cause. It isn't a feature I use personally in calibre so my general lack of enthusiasm for them from not really understanding "why" they came about probably doesn't help things.

As per my notes referenced above IIRC the upshot is that virtual libraries cause a problem with this plugin. So long as you plugin the device with the same virtual library that your list is created for in the cause of one of these "auto" type lists then you should be fine. However it sounds like you have possibly hit one of the pain points.

TBH no-one else in the subsequent posts has given any feedback whatsoever about the decision I made on this. Which either means they don't use virtual libraries either, or they don't use advanced auto population features with them like you do.

Ah, I see. Yes, your release note predates my use of the plugin, and I didn't take the time to look through the forum as I should have. My apologies.

I'll try to look through the code for a way to get around the problem; although if you didn't find one I probably won't either.

If I fail I'll just have to adjust my workflow a little; I can't test now, but I think reverting to the full library and force a sync before ejecting should do the trick. If that works, maybe I'll try and get SmartEject to do it...

No apologies needed aleyx, there is a lot of noise in a 40 page thread over time

It isn't impossible to do things a different way, it just introduces a whole bunch of questions and complications. Given that no-one had really asked for such functionality I wasn't going to make life harder for myself by trying to tackle it. For instance if a user can make "cross virtual library lists", then what happens when a user inside a virtual library chooses the "View reading list" option? As it can't display books that are not in that library. What if they then try to reorder the list? And on and on the complications go...

Knowing that this wasn't really your question, I can at least shed some light on one person's use of the virtual library feature (though it worked about the same in its former incarnation.

I personally have two virtual libraries I use regularly... one with new books (tagged automatically on import) and one for the majority of my library (filtering out new books and those with errors I'm working on). I regularly go through the main one and look at the formats to see if I've got any extras floating around (they're permitted in the ones that are filtered out). There are processes I run on the new ones that I do from the other virtual library.

Probably useless information, but provided on the off chance it helps.

I now know part of what you mean about VLs being a pain. I thought they were basically libraries built from a saved search, with an entry in library_id and an API to query a book for its virtual libraries (and a virtual library for its books). But after looking around the DB and the code, they seem to be more like saved searches with a separate UI. I also haven't found any API specific to virtual libraries, but I haven't looked very far yet (mostly because Calibre's code is _huge_).

I didn't think about cross-library lists either... I assumed that Reading List would behave the same way with VLs as it does with full libraries. (Although I don't know exactly what that is, since I merged my libraries before I started using RL). But that was when I still thought that VLs had more in common with full libraries than with saved searches...

@Vaesse: I firmly believe that there is no such thing as useless information. For exemple, I now can see a use for a library based on "date:<=7daysago or tags:wip". Yep, I'll go create that one right now in fact...

I am glad my information helped someone, then. I actually have a few other virtual libraries, but as I'm currently a 13 hour drive (and two days until said drive) from my Calibre installation, I only mentioned the ones I remembered off the top of my head.