背景
- 使用calibre管理本地书籍,然后使用margin note 、ClearView直接打开书库的文件
- calibre为了保证跨平台兼容,会把存入本地仓库的书籍中文名称解析成拼音,从而导致在margin note 、ClearView看到的文件名比较诡异。
- 由于个人没有跨平台的需求,因此希望本地仓库也是用中文存储书籍而不是拼音
calibre 源码仓库
- https://github.com/kovidgoyal/calibre
- 下载对应release版本的源码
相关代码
src/calibre/db/backend.py中可以看到construct_file_name等函数中使用calibre.utils.filenames.ascii_filename进行文件名称的编码,实现中文转拼音的操作
-
修改源码
-
修改backend.py中的construct_file_name函数 去掉ascii_filename调用及decode调用
def construct_file_name(self, book_id, title, author, extlen): ''' Construct the file name for this book based on its metadata. ''' extlen = max(extlen, 14) # 14 accounts for ORIGINAL_EPUB # The PATH_LIMIT on windows already takes into account the doubling # (it is used to enforce the total path length limit, individual path # components can be much longer than the total path length would allow on # windows). l = (self.PATH_LIMIT - (extlen // 2) - 2) if iswindows else ((self.PATH_LIMIT - extlen - 2) // 2) if l < 5: raise ValueError('Extension length too long: %d' % extlen) author = author[:l] title = title.lstrip()[:l].rstrip() if not title: title = 'Unknown'[:l] name = title + ' - ' + author while name.endswith('.'): name = name[:-1] if not name: name = _('Unknown').decode('ascii', 'replace') return name
-
-
修改源码后进行编译
cd src && python2 -O -m compileall .
-
更新文件
cp ./calibre/db/backend.pyo /Applications/calibre.app/Contents/Resources/Python/site-packages/calibre/db/backend.pyo
-
已经导入的书籍名称更新
-
在calibre中选择数据,双击触发重命名操作后直接回车保存即可
-