一千萬個為什麽

搜索

命令行從epub文件中提取元數據(標題。作者)



我想用命令行來提取書的標題 (可能還有其他元數據)從它的epub文件中返回並作為一個返回 串。

我正在使用Linux,但我的猜測是這個問題在任何情況下都有意義 其他環境。

我期待通過serching輕松找到一個清晰而簡單的答案 網絡。但是,這顯然不是這樣,或者我仍然是 無知識別答案。

The command could look like: getbookinfo -m title myfile.epub

並會產生在epub文件中找到的書的標題。

轉載註明原文: 命令行從epub文件中提取元數據(標題。作者)

一共有 4 個回答:

這裏有一個快速的bash腳本(沒有任何錯誤檢查)來做你想做的事情:

#!/bin/bash
#
if [ $# -lt 3 ]
then
   echo
   echo "Usage: minfo -m <meta-type> "
   echo
else
   fileloc=`unzip -l "$3" | grep -Po '\b[^\s-]*\.opf\b'`
   metafound=`zipgrep  '(.*)' "$3" $fileloc`
   echo `expr "$metafound" : '.*\(.*\).*'`
fi

它使用 unzip -l <�​​/ code>來查找 .opf 文件在 .epub 中的位置(通常為 OEBPS \ content.opf ,但只要它具有 .opf 擴展名就可以命名)。然後它使用 zipgrep 在該文件中查找所需元數據類型的出現次數。最後,剝離標簽以留下元數據。

這是一個測試運行:

beaker$ ./minfo -m title Make_Electronics.epub 
Make: Electronics
beaker$ ./minfo -m publisher Make_Electronics.epub 
O'Reilly Media, Inc.
beaker$ ./minfo -m subject Make_Electronics.epub 

beaker$

最後一行是空白的,因為opf文件中 subject 的元數據條目是:


EPUB文件只是一個zip文件,而該書的元數據包含在OPF(Open Packaging Format)文件中,該文件是一個XML文件。標題位於/ package/metadata/dc:title元素中。您正在尋找的其他信息可能也在元數據元素的子元素中。以下是EPUB格式的簡介: http://www.ibm.com/developerworks/xml/教程/ X-epubtut/

我對Linux不是很熟悉,所以我不知道你是如何從命令行完成的。我懷疑它會涉及編寫或查找腳本,這些腳本可能會在EPUB文件中解壓或挖掘,查找OPF文件,解析其XML,並使用您指定的元數據(可能使用XPath)查找元素。

exiftool can read (but not write) epub meta data. For example

exiftool -T -Title main.epub

闡述@ pheon的答案,我創建了這個shell腳本

#!/bin/bash

exiftool="/usr/local/bin/exiftool"

filename=$(basename "$1")
extension="${filename##*.}"
filename="${filename%.*}"
directory=$(dirname "$1")
newfilename=`${exiftool} -T -Title $1`

echo mv "$1" "${directory}/${newfilename}.${extension}"
mv "$1" "${directory}/${newfilename}.${extension}"

只需運行該腳本,傳遞pub文件名,並將其就地重命名為電子書的標題。請註意,文件名中可能會有空格。