37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
import plistlib
|
|
from collections import defaultdict
|
|
|
|
def parse_books_plist(plist_path):
|
|
booksinfo = defaultdict(dict)
|
|
with open(plist_path, 'rb') as f: plist_data = plistlib.load(f)
|
|
for book in plist_data.get('Books', []):
|
|
bk_id = book.get('BKGeneratedItemId')
|
|
if not bk_id: continue
|
|
booksinfo[bk_id] = {
|
|
'displayname': book.get('BKDisplayName', ''),
|
|
'author': book.get('artistName', ''),
|
|
'type': book.get('BKBookType', ''),
|
|
'bookid': bk_id,
|
|
'itemname': book.get('itemName', ''),
|
|
'path': book.get('path', '')
|
|
}
|
|
return booksinfo
|
|
|
|
if __name__ == '__main__':
|
|
booksinfo = parse_books_plist('./data/Books.plist')
|
|
from pprint import pprint
|
|
print("\n【前三条示例】")
|
|
for k, v in list(booksinfo.items())[:3]:
|
|
print(f"{k}:")
|
|
pprint(v, sort_dicts=False, indent=2)
|
|
print('-' * 60)
|
|
|
|
'''
|
|
print("\n【全部内容】")
|
|
for k, v in booksinfo.items():
|
|
print(f"{k}:")
|
|
pprint(v, sort_dicts=False, indent=2)
|
|
print('-' * 60)
|
|
'''
|
|
|