我想用命令行來提取書的標題 (可能還有其他元數據)從它的epub文件中返回並作為一個返回 串。
我正在使用Linux,但我的猜測是這個問題在任何情況下都有意義 其他環境。
我期待通過serching輕松找到一個清晰而簡單的答案 網絡。但是,這顯然不是這樣,或者我仍然是 無知識別答案。
The command could look like: getbookinfo -m title
myfile.epub
並會產生在epub文件中找到的書的標題。
我想用命令行來提取書的標題 (可能還有其他元數據)從它的epub文件中返回並作為一個返回 串。
我正在使用Linux,但我的猜測是這個問題在任何情況下都有意義 其他環境。
我期待通過serching輕松找到一個清晰而簡單的答案 網絡。但是,這顯然不是這樣,或者我仍然是 無知識別答案。
The command could look like: getbookinfo -m title
myfile.epub
並會產生在epub文件中找到的書的標題。
這裏有一個快速的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)查找元素。
闡述@ 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文件名,並將其就地重命名為電子書的標題。請註意,文件名中可能會有空格。