mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-27 13:59:04 -04:00
pid
This commit is contained in:
parent
72a885d604
commit
8c7141854f
@ -49,7 +49,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.8.1009</string>
|
<string>1.8.1047</string>
|
||||||
<key>ITSAppUsesNonExemptEncryption</key>
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.8.1013</string>
|
<string>1.8.1051</string>
|
||||||
<key>NSExtension</key>
|
<key>NSExtension</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSExtensionMainStoryboard</key>
|
<key>NSExtensionMainStoryboard</key>
|
||||||
|
@ -28,11 +28,25 @@ class Book: NSManagedObject {
|
|||||||
book.publisher = metadata["publisher"] as? String
|
book.publisher = metadata["publisher"] as? String
|
||||||
book.desc = metadata["description"] as? String
|
book.desc = metadata["description"] as? String
|
||||||
book.meta4URL = metadata["url"] as? String
|
book.meta4URL = metadata["url"] as? String
|
||||||
book.pid = metadata["name"] as? String
|
book.pid = {
|
||||||
|
if let pid = metadata["name"] as? String where pid != "" {
|
||||||
|
return pid
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
book.articleCount = Int64((metadata["articleCount"] as? String) ?? "") ?? 0
|
book.articleCount = Int64((metadata["articleCount"] as? String) ?? "") ?? 0
|
||||||
book.mediaCount = Int64((metadata["mediaCount"] as? String) ?? "") ?? 0
|
book.mediaCount = Int64((metadata["mediaCount"] as? String) ?? "") ?? 0
|
||||||
book.fileSize = (Int64((metadata["size"] as? String) ?? "") ?? 0) * 1024
|
book.fileSize = {
|
||||||
|
if let fileSize = metadata["size"] as? String {
|
||||||
|
return (Int64(fileSize) ?? 0) * 1024
|
||||||
|
} else if let fileSize = metadata["size"] as? NSNumber {
|
||||||
|
return fileSize.longLongValue * 1024
|
||||||
|
} else {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
book.date = {
|
book.date = {
|
||||||
guard let date = metadata["date"] as? String else {return nil}
|
guard let date = metadata["date"] as? String else {return nil}
|
||||||
|
@ -60,9 +60,9 @@ class ScanLocalBookOperation: Operation {
|
|||||||
let addedZimFileURLs = currentZimFileURLSnapshot.subtract(lastZimFileURLSnapshot)
|
let addedZimFileURLs = currentZimFileURLSnapshot.subtract(lastZimFileURLSnapshot)
|
||||||
let removedZimFileURLs = lastZimFileURLSnapshot.subtract(currentZimFileURLSnapshot)
|
let removedZimFileURLs = lastZimFileURLSnapshot.subtract(currentZimFileURLSnapshot)
|
||||||
|
|
||||||
guard addedZimFileURLs.count > 0 || removedZimFileURLs.count > 0 else {return}
|
|
||||||
ZimMultiReader.shared.removeReaders(removedZimFileURLs)
|
ZimMultiReader.shared.removeReaders(removedZimFileURLs)
|
||||||
ZimMultiReader.shared.addReaders(addedZimFileURLs)
|
ZimMultiReader.shared.addReaders(addedZimFileURLs)
|
||||||
|
ZimMultiReader.shared.producePIDMap()
|
||||||
}
|
}
|
||||||
|
|
||||||
private func updateCoreData() {
|
private func updateCoreData() {
|
||||||
|
@ -16,6 +16,7 @@ class ZimMultiReader: NSObject, DirectoryMonitorDelegate {
|
|||||||
private let monitor = DirectoryMonitor(URL: NSFileManager.docDirURL)
|
private let monitor = DirectoryMonitor(URL: NSFileManager.docDirURL)
|
||||||
|
|
||||||
private(set) var readers = [ZimID: ZimReader]()
|
private(set) var readers = [ZimID: ZimReader]()
|
||||||
|
private(set) var pidMap = [String: String]() // PID: ID
|
||||||
private var lastZimFileURLSnapshot = Set<NSURL>()
|
private var lastZimFileURLSnapshot = Set<NSURL>()
|
||||||
private var lastIndexFolderURLSnapshot = Set<NSURL>()
|
private var lastIndexFolderURLSnapshot = Set<NSURL>()
|
||||||
|
|
||||||
@ -63,6 +64,22 @@ class ZimMultiReader: NSObject, DirectoryMonitorDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func producePIDMap() {
|
||||||
|
pidMap.removeAll()
|
||||||
|
var map = [String: [ZimReader]]() // PID: [ZimReader]
|
||||||
|
for (_, reader) in readers {
|
||||||
|
guard let pid = reader.getName() where pid != "" else {continue}
|
||||||
|
var readers = map[pid] ?? [ZimReader]()
|
||||||
|
readers.append(reader)
|
||||||
|
map[pid] = readers
|
||||||
|
}
|
||||||
|
for (pid, readers) in map {
|
||||||
|
guard let reader = readers.sort({ $0.getDate().caseInsensitiveCompare($1.getDate()) == .OrderedAscending }).first,
|
||||||
|
let id = reader.getID() else {continue}
|
||||||
|
pidMap[pid] = id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - DirectoryMonitorDelegate
|
// MARK: - DirectoryMonitorDelegate
|
||||||
|
|
||||||
func directoryMonitorDidObserveChange() {
|
func directoryMonitorDidObserveChange() {
|
||||||
|
@ -42,11 +42,13 @@
|
|||||||
- (NSString *)getTitle;
|
- (NSString *)getTitle;
|
||||||
- (NSString *)getDesc;
|
- (NSString *)getDesc;
|
||||||
- (NSString *)getLanguage;
|
- (NSString *)getLanguage;
|
||||||
|
- (NSString *)getName;
|
||||||
|
- (NSString *)getTags;
|
||||||
- (NSString *)getDate;
|
- (NSString *)getDate;
|
||||||
- (NSString *)getCreator;
|
- (NSString *)getCreator;
|
||||||
- (NSString *)getPublisher;
|
- (NSString *)getPublisher;
|
||||||
- (NSString *)getOriginID;
|
- (NSString *)getOriginID;
|
||||||
- (NSString *)getFileSize;
|
- (NSNumber *)getFileSize;
|
||||||
- (NSData *)getFavicon;
|
- (NSData *)getFavicon;
|
||||||
|
|
||||||
- (NSString *)parseURL:(NSString *)urlPath;
|
- (NSString *)parseURL:(NSString *)urlPath;
|
||||||
|
@ -240,85 +240,67 @@ int levenshtein_distance(const std::string &s1, const std::string &s2)
|
|||||||
#pragma mark - get File Attributes
|
#pragma mark - get File Attributes
|
||||||
|
|
||||||
- (NSString *)getID {
|
- (NSString *)getID {
|
||||||
NSString *id = nil;
|
|
||||||
|
|
||||||
string idC;
|
string idC;
|
||||||
idC = _reader->getId();
|
idC = _reader->getId();
|
||||||
id = [NSString stringWithCString:idC.c_str() encoding:NSUTF8StringEncoding];
|
return [NSString stringWithCString:idC.c_str() encoding:NSUTF8StringEncoding];
|
||||||
|
|
||||||
return id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)getTitle {
|
- (NSString *)getTitle {
|
||||||
NSString *title = nil;
|
|
||||||
|
|
||||||
string titleC;
|
string titleC;
|
||||||
titleC = _reader->getTitle();
|
titleC = _reader->getTitle();
|
||||||
title = [NSString stringWithCString:titleC.c_str() encoding:NSUTF8StringEncoding];
|
return [NSString stringWithCString:titleC.c_str() encoding:NSUTF8StringEncoding];
|
||||||
|
|
||||||
return title;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)getDesc {
|
- (NSString *)getDesc {
|
||||||
NSString *description = nil;
|
|
||||||
|
|
||||||
string descriptionC;
|
string descriptionC;
|
||||||
descriptionC = _reader->getDescription();
|
descriptionC = _reader->getDescription();
|
||||||
description = [NSString stringWithCString:descriptionC.c_str() encoding:NSUTF8StringEncoding];
|
return [NSString stringWithCString:descriptionC.c_str() encoding:NSUTF8StringEncoding];
|
||||||
|
|
||||||
return description;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)getLanguage {
|
- (NSString *)getLanguage {
|
||||||
NSString *language = nil;
|
|
||||||
|
|
||||||
string languageC;
|
string languageC;
|
||||||
languageC = _reader->getLanguage();
|
languageC = _reader->getLanguage();
|
||||||
language = [NSString stringWithCString:languageC.c_str() encoding:NSUTF8StringEncoding];
|
return [NSString stringWithCString:languageC.c_str() encoding:NSUTF8StringEncoding];
|
||||||
|
}
|
||||||
return language;
|
|
||||||
|
- (NSString *)getName {
|
||||||
|
string nameC;
|
||||||
|
nameC = _reader->getName();
|
||||||
|
return [NSString stringWithCString:nameC.c_str() encoding:NSUTF8StringEncoding];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *)getTags {
|
||||||
|
string tagsC;
|
||||||
|
tagsC = _reader->getTags();
|
||||||
|
return [NSString stringWithCString:tagsC.c_str() encoding:NSUTF8StringEncoding];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)getDate {
|
- (NSString *)getDate {
|
||||||
string dateC;
|
string dateC;
|
||||||
dateC = _reader->getDate();
|
dateC = _reader->getDate();
|
||||||
NSString *dateString = [NSString stringWithCString:dateC.c_str() encoding:NSUTF8StringEncoding];
|
return [NSString stringWithCString:dateC.c_str() encoding:NSUTF8StringEncoding];
|
||||||
|
|
||||||
return dateString;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)getCreator {
|
- (NSString *)getCreator {
|
||||||
NSString *creator = nil;
|
|
||||||
|
|
||||||
string creatorC;
|
string creatorC;
|
||||||
creatorC = _reader->getCreator();
|
creatorC = _reader->getCreator();
|
||||||
creator = [NSString stringWithCString:creatorC.c_str() encoding:NSUTF8StringEncoding];
|
return [NSString stringWithCString:creatorC.c_str() encoding:NSUTF8StringEncoding];
|
||||||
|
|
||||||
return creator;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)getPublisher {
|
- (NSString *)getPublisher {
|
||||||
NSString *publisher = nil;
|
|
||||||
|
|
||||||
string publisherC;
|
string publisherC;
|
||||||
publisherC = _reader->getOrigId();
|
publisherC = _reader->getOrigId();
|
||||||
publisher = [NSString stringWithCString:publisherC.c_str() encoding:NSUTF8StringEncoding];
|
return [NSString stringWithCString:publisherC.c_str() encoding:NSUTF8StringEncoding];
|
||||||
|
|
||||||
return publisher;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)getOriginID {
|
- (NSString *)getOriginID {
|
||||||
NSString *originID = nil;
|
|
||||||
|
|
||||||
string originIDC;
|
string originIDC;
|
||||||
originIDC = _reader->getOrigId();
|
originIDC = _reader->getOrigId();
|
||||||
originID = [NSString stringWithCString:originIDC.c_str() encoding:NSUTF8StringEncoding];
|
return [NSString stringWithCString:originIDC.c_str() encoding:NSUTF8StringEncoding];
|
||||||
|
|
||||||
return originID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)getFileSize {
|
- (NSNumber *)getFileSize {
|
||||||
return [NSString stringWithFormat:@"%u", _reader->getFileSize()];
|
return [[NSNumber alloc] initWithUnsignedInt:_reader->getFileSize()];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSData *)getFavicon {
|
- (NSData *)getFavicon {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user