私はデータを完全に読むために迅速に.epubファイルを解凍する必要があります。私はそれを得ることができればePubの出力を解析する方法を知っています(私はPythonで実際の例を書いています)が、SSZipArchiveは明らかに.epubsを解凍しません。ただし、ダミーの.zipファイルで正常に動作します。 .epubだけが問題です。私が知る限りでは、実際にこれを手作業で行う方法はないのです。単に私がやりたいことの目的を破るオーバーヘッド(私が理解していない、または必要としない)を多用して、客観的にあなたのためにそれを行うプロジェクトに人々を指し示すだけではありません。以下は私の現在の試みです。問題のepubは次のリンク(project gutenberg)http://www.gutenberg.org/ebooks/158.epub.noimagesにあります。これを実行すると、print文は "true、true、true、false"(つまり、ファイルとパスはすべて存在しますが、以下速報でEpubを解凍
は、私は非常に同じEPUBを得ることが可能なPythonで書かれた概念実証コードは、zipファイルとして認識されるようにされて
import Foundation
class EpubExtractor: NSObject, SSZipArchiveDelegate {
init(fileName: String) {
fName = fileName
}
func getEpubInfo() {
var paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
let documentsDir = paths[0]
let zipPath = documentsDir.stringByAppendingString("/MyZipFiles") // My folder name in document directory
let fileManager = NSFileManager.defaultManager()
let success1 = fileManager.fileExistsAtPath(zipPath) as Bool
if success1 == false {
print("no directory")
do {
try! fileManager.createDirectoryAtPath(zipPath, withIntermediateDirectories: true, attributes: nil)
}
}
let archivePath = zipPath.stringByAppendingString("/emma.epub") // Sample folder is going to zip with name Demo.zip
let success2 = fileManager.fileExistsAtPath(archivePath) as Bool
let destPath = zipPath.stringByAppendingString("/Hello")
let success3 = fileManager.fileExistsAtPath(destPath) as Bool
let worked = SSZipArchive.unzipFileAtPath(archivePath, toDestination: destPath, delegate:self)
print(success1, success2, success3, worked)
}
}
EDITとそのコンテナの内容をお読みください。)解凍しません:
import zipfile
dir = "sampleData/epubs/"
fileName = "emma.epub"
print zipfile.is_zipfile(dir+fileName) # Check whether file is zip (this returns true, though in swift it fails)
zip = zipfile.ZipFile(dir+fileName)
txt = zip.read('META-INF/container.xml') # Print contents of container (this is what I need swift to be able to do)
print txt # This successfully prints the container content text