如何去除iBooks(Mac图书)复制时的引用信息

看书的时候,有时会需要将书里的内容复制出来,比如我有段时间要将书里的内容做成Anki的卡片给孩子学习,有时书里面我看不懂的内容(把里面的单词都查了还是看不懂)贴到Google翻译里面翻译,有这个引用的内容会比较麻烦。

“この傷があの……」マクゴナガル先生が囁いた。 「そうじゃ。一生残るじゃろう」 「ダンブルドア、なんとかしてやれないんですか?”

摘录来自: J.K. Rowling. “ハリー・ポッターと賢者の石 - Harry Potter and the Philosopher's Stone (ハリー・ポッターシリーズ)。” Apple Books.

像这样长长的书名的时候删除起来还真的挺麻烦的。

我最开始找到的是在国外的网站上找到的解决方案,和这个链接的思路是一样的。就是用Automator获得剪贴板里面内容,然后通过以下bash命令把添加的引用信息去除:

sed -E -e 's/^“//g' 删除每段开头的 “
sed -E -e 's/”$//g' 删除每段结尾的 ”
sed -E -e '/^$/d' 删除所有空行
sed -E -e 's/^(摘录来自).*//g' 删除以“摘录来自”为开头的段落

但是这个方案有一个缺陷,如果复制多行的时候,如果原文中本来也有双引号的话,也会给误删除。
要修改的话我对bash的sed命令又一窍不通,一直想用Python来处理,但是Automator的参数传递我一直没有搞明白。
今天偶然在上发现了这篇文章,这个简直太有帮助了,简单来说就是Automator获得的文本,传到stdin,这个在Python的sys模块里可以读取,然后用Python的print函数可以将处理的结果传给Automator,Automator可以将这个结果赋值给一个变量,或者直接输出到剪贴板。
具体操作如下:

  1. 打开Automator,然后新建一个快速操作。


    image.png
  2. 实用工具获取剪贴板内容,并拖到右边的编辑区;
    image.png
  3. 再添加运行Shell脚本,并且选择Python。
    image.png

    注意Shell的地方选择Python,传递输入到stdin。
  4. 添加拷贝至剪贴板
    image.png
  5. 在运行Shell脚本的地方添加以下代码。
import sys
import re
content = ''
#从stdin里读取内容
for t in sys.stdin:
   content += t
#利用正则表达式来查找原文并去除添加的引用信息
p = re.compile('“(.+)”\n\n摘录来自:')
copy = p.search(content).group(1)
#用print函数把结果传回Automator
if copy:
    print(copy)
  1. 将这个快速操作保存一个自己容易记的名字,我这里保存为rmcitation。
  2. 在系统设置里面给这个快速操作添加一个快捷键。


    image.png

    这样以后在iBooks里可以选择文字,复制到剪贴板,然后再按这个组合键,系统剪贴板里面的内容就会变成干净的内容了。


下面的这个方法是我在折腾Automator的时候突然想到的,可以将选择的文本直接复制的剪贴板。只是这个方法有一个小问题,我们后面再说。

  1. 还是新建一个快速操作;


    image.png

    选择一下图书。

  2. 再添加拷贝至剪贴板
    image.png
  3. 也给它添加一个快捷键。


    image.png

下面就可以在iBooks里面试试了,一般情况下都是没有问题,只要你读的书不是像这样的带有注音的就不会有问题。


image.png

你可能感兴趣的:(如何去除iBooks(Mac图书)复制时的引用信息)