Ensure proper naming of images on system start
This commit is contained in:
parent
bb3ed0e8c3
commit
a474b509c1
@ -82,9 +82,9 @@ final class CapServer: ServerOwner {
|
||||
func loadData() throws {
|
||||
loadClassifierVersion(at: classifierVersionFile)
|
||||
try loadCaps()
|
||||
try updateCounts()
|
||||
saveCapCountHTML()
|
||||
try ensureExistenceOfChangedImagesFile()
|
||||
organizeImages()
|
||||
}
|
||||
|
||||
private func loadClassifierVersion(at url: URL) {
|
||||
@ -170,6 +170,38 @@ final class CapServer: ServerOwner {
|
||||
"""
|
||||
try? content.data(using: .utf8)!.write(to: htmlFile)
|
||||
}
|
||||
|
||||
private func organizeImages() {
|
||||
caps.keys.forEach(organizeImage)
|
||||
}
|
||||
|
||||
private func organizeImage(for cap: Int) {
|
||||
guard let images = try? images(in: folder(of: cap)) else {
|
||||
log("Failed to get image urls for cap \(cap)")
|
||||
return
|
||||
}
|
||||
var sorted: [(id: Int, url: URL)] = images.compactMap {
|
||||
guard let id = Int($0.deletingPathExtension().lastPathComponent) else {
|
||||
return nil
|
||||
}
|
||||
return (id, $0)
|
||||
}.sorted { $0.id < $1.id }
|
||||
for version in 0..<images.count {
|
||||
guard version != sorted[version].id else {
|
||||
continue
|
||||
}
|
||||
let last = sorted.popLast()!.url
|
||||
let newUrl = file(of: cap, version: version)
|
||||
do {
|
||||
try fm.moveItem(at: last, to: newUrl)
|
||||
} catch {
|
||||
log("Failed to move file \(last.path) to \(newUrl.path): \(error)")
|
||||
return
|
||||
}
|
||||
sorted.insert((version, newUrl), at: version)
|
||||
}
|
||||
caps[cap]?.count = sorted.count
|
||||
}
|
||||
|
||||
// MARK: Paths
|
||||
|
||||
@ -193,7 +225,7 @@ final class CapServer: ServerOwner {
|
||||
}
|
||||
|
||||
// MARK: Counts
|
||||
|
||||
|
||||
private func updateCounts() throws {
|
||||
do {
|
||||
caps = try caps.mapValues {
|
||||
@ -207,9 +239,9 @@ final class CapServer: ServerOwner {
|
||||
}
|
||||
}
|
||||
|
||||
func countImages(in folder: URL) throws -> Int {
|
||||
private func images(in folder: URL) throws -> [URL] {
|
||||
try fm.contentsOfDirectory(at: folder, includingPropertiesForKeys: nil)
|
||||
.filter({ $0.pathExtension == "jpg" }).count
|
||||
.filter { $0.pathExtension == "jpg" }
|
||||
}
|
||||
|
||||
/**
|
||||
@ -220,7 +252,7 @@ final class CapServer: ServerOwner {
|
||||
guard fm.fileExists(atPath: f.path) else {
|
||||
return 0
|
||||
}
|
||||
return try countImages(in: f)
|
||||
return try images(in: f).count
|
||||
}
|
||||
|
||||
// MARK: Images
|
||||
|
Loading…
Reference in New Issue
Block a user