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