To repeat what you said, the problem seems to be caused by having books that are both sideloaded and not. Looking at line 3330, the SeriesID is updated only if the book is sideloaded.
Code:
if self.supports_series_list and book.is_sideloaded:
Code:
@property
def is_sideloaded(self):
# If we don't have a content Id, we don't know what type it is.
return self.contentID and self.contentID.startswith("file")
This means that the seriesID checks aren't done so the field won't be updated.
Does the problem fix itself if you send again from calibre the non-sideloaded books? It might not if the resend doesn't change enough to cause the book to be considered sideloaded (apparently where the book is stored). If resending the book does fix it then we have a no-risk solution.
A possible fix would be to always update the series stuff, even for non-sideloaded books. I don't know why non-sideloaded books are excluded so I'm not willing to make this change without someone testing it. The change would be to (again) line 3300:
Code:
if self.supports_series_list:
Run from source, change that line, and let us know what happens.