优化效率
This commit is contained in:
@@ -19,7 +19,7 @@ def parse_location(location):
|
||||
filepos = matches[1] if len(matches) > 1 else None
|
||||
return idref, filepos
|
||||
|
||||
def get_annotations(db_path='./data/AEAnnotation.sqlite'):
|
||||
def get_annotations(db_path='./data/AEAnnotation.sqlite', bookid=None):
|
||||
# 检查WAL模式相关文件
|
||||
base = db_path.rsplit('.', 1)[0]
|
||||
wal_path = base + '.sqlite-wal'
|
||||
@@ -29,10 +29,16 @@ def get_annotations(db_path='./data/AEAnnotation.sqlite'):
|
||||
print(f'警告: 缺少 {f},可能无法获取全部最新笔记')
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
cursor.execute('''
|
||||
SELECT ZANNOTATIONASSETID, ZANNOTATIONCREATIONDATE, ZANNOTATIONLOCATION, ZANNOTATIONNOTE, ZANNOTATIONSELECTEDTEXT, ZANNOTATIONUUID
|
||||
FROM ZAEANNOTATION
|
||||
''')
|
||||
if bookid is not None:
|
||||
cursor.execute('''
|
||||
SELECT ZANNOTATIONASSETID, ZANNOTATIONCREATIONDATE, ZANNOTATIONLOCATION, ZANNOTATIONNOTE, ZANNOTATIONSELECTEDTEXT, ZANNOTATIONUUID
|
||||
FROM ZAEANNOTATION WHERE ZANNOTATIONASSETID=?
|
||||
''', (bookid,))
|
||||
else:
|
||||
cursor.execute('''
|
||||
SELECT ZANNOTATIONASSETID, ZANNOTATIONCREATIONDATE, ZANNOTATIONLOCATION, ZANNOTATIONNOTE, ZANNOTATIONSELECTEDTEXT, ZANNOTATIONUUID
|
||||
FROM ZAEANNOTATION
|
||||
''')
|
||||
rows = cursor.fetchall()
|
||||
annotations = defaultdict(dict)
|
||||
import datetime
|
||||
@@ -65,6 +71,9 @@ def get_annotations(db_path='./data/AEAnnotation.sqlite'):
|
||||
'selectedtext': selectedtext
|
||||
}
|
||||
conn.close()
|
||||
if bookid is not None:
|
||||
# 只返回特定bookid的笔记结构
|
||||
return {str(bookid): annotations.get(str(bookid), {})}
|
||||
return annotations
|
||||
|
||||
# 用法示例:输出每本书的前3条笔记
|
||||
@@ -81,11 +90,13 @@ if __name__ == "__main__":
|
||||
print(f"location: {loc}\n idref: {idref}\n filepos: {filepos}\n")
|
||||
'''
|
||||
|
||||
annotations = get_annotations()
|
||||
# 测试只获取特定 assetid 的笔记
|
||||
test_bookid = "B18FCD9F90FD43C2373AE52BAEF9A77C"
|
||||
annotations = get_annotations(bookid=test_bookid)
|
||||
|
||||
# 格式化打印所有 annotations
|
||||
# 格式化打印该书的所有笔记
|
||||
from pprint import pprint
|
||||
print("\n所有笔记:")
|
||||
print(f"\nAssetID={test_bookid} 的所有笔记:")
|
||||
pprint(annotations, indent=2, sort_dicts=False)
|
||||
|
||||
# 输出每本书的前3条笔记
|
||||
|
||||
Reference in New Issue
Block a user