1 解决 calibre 导入书籍和传输书籍不是中文名称问题
去官网下载最新版本软件,安装
下载源码
git clone https://github.com/kovidgoyal/calibre.git
check out 相应安装版本,根据需求修改源代码。
gco v5.43.0(gco = git checkout)
修改 backend.py 文件,删掉 ascii_filename()方法,解决导入书籍生成不是中文名称的问题。
修改 smart_device_app 包下的 driver.py 文件,解决传输后书籍不是中文名称的问题。修改内容如下:
创建快捷方式
vim /usr/local/bin/calibre-develop
写入内容
#!/bin/sh export CALIBRE_DEVELOP_FROM="/Users/kovid/work/calibre/src" calibre-debug -g
授予权限
chmod +x /usr/local/bin/calibre-develop
配置环境变量
#calibre export CALIBRE=/Applications/calibre.app/Contents/MacOS export PATH=$PATH:$CALIBRE
启动程序
calibre-develop
2 我的解决方法
按照上面的方法搞了一遍,发现没起作用,没再去研究为什么,就直接修改了系统的 calibre 。。。
为了后续更新方便,把修改过程写在了 emacs 里面:
(defun yc/fix-calibre ()
"Fix calibre."
(interactive)
(let ((file (pcase system-type
('gnu/linux "/usr/lib64/calibre/calibre/utils/filenames.py")
(_ (error "Platform %s not support" system-type)))))
(if (yc/file-exists-p file)
(with-current-buffer (yc/find-file-as-root file nil t)
(goto-char (point-min))
(unless (re-search-forward "# 替换为下划线" nil t)
(goto-char (point-min))
(search-forward "def ascii_filename(")
(replace-match "
import re
def ascii_filename(")
(goto-char (pos-eol))
(insert "
return re.sub(r'[\/\\\:\*\?\"\<\>\|]', substitute, orig) # 替换为下划线
")
(save-buffer))
(kill-buffer (current-buffer)))
(error "Can't open file: %s" file))))
2.1 追加
gentoo 里面提供的 binpkg 使用 解决 calibre 导入书籍和传输书籍不是中文名称问题 里提到的方法不起作用, 但是如果 calibre 是从官网下载的二进制版本,则可以。。。