calibre修改仓库存储的文件名支持中文

背景


  • 使用calibre管理本地书籍,然后使用margin note 、ClearView直接打开书库的文件
  • calibre为了保证跨平台兼容,会把存入本地仓库的书籍中文名称解析成拼音,从而导致在margin note 、ClearView看到的文件名比较诡异。
  • 由于个人没有跨平台的需求,因此希望本地仓库也是用中文存储书籍而不是拼音

calibre 源码仓库


  • https://github.com/kovidgoyal/calibre
  • 下载对应release版本的源码
    • https://github.com/kovidgoyal/calibre/releases?after=v3.23.0

相关代码


  • 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中选择数据,双击触发重命名操作后直接回车保存即可

      image-20190424190515880.png
    image-20190424190529705.png

参考资料


  • http://blog.sina.com.cn/s/blog_7a1f539c0102xitp.html

你可能感兴趣的:(calibre修改仓库存储的文件名支持中文)