'The list of KoboBook objects in the library.'

@property
def books(self):

    if (len(self._books) != 0):
        return self._books
    'Drm-ed    kepub'
    for row in self.__cursor.execute('SELECT    DISTINCT    volumeid,    Title,    Attribution,    Series    FROM    content_keys,    content    WHERE    contentid    =    volumeid'):
        self._books.append(KoboBook(row[0], row[1], self.__bookfile(row[0]), 'kepub', self.__cursor, author=row[2], series=row[3]))
        self._volumeID.append(row[0])
    'Drm-free'
    for f in os.listdir(self.bookdir):
        if (f not in self._volumeID):
            row = self.__cursor.execute((("SELECT    Title,    Attribution,    Series    FROM    content    WHERE    ContentID    =    '" + f) + "'")).fetchone()
            if (row is not None):
                fTitle = row[0]
                self._books.append(KoboBook(f, fTitle, self.__bookfile(f), 'drm-free', self.__cursor, author=row[1], series=row[2]))
                self._volumeID.append(f)
    'Sort'
    self._books.sort(key=(lambda x: x.title))
    return self._books
