61 lines
1.7 KiB
Swift
61 lines
1.7 KiB
Swift
//
|
|
// KissIndex+0003.swift
|
|
// KissMeIndex
|
|
//
|
|
// Created by ened-book-m1 on 2023/06/20.
|
|
//
|
|
|
|
import Foundation
|
|
import KissMe
|
|
|
|
|
|
extension KissIndex {
|
|
|
|
func indexSet_0003(date: Date, config: String?, kmi: KissIndexType) {
|
|
if productsCount == 0 {
|
|
loadShop(url: KissIndex.shopProductsUrl)
|
|
}
|
|
|
|
let semaphore = DispatchSemaphore(value: 0)
|
|
Task {
|
|
var scoreMap = [String: Double]()
|
|
|
|
do {
|
|
let prices = try await collectPrices(date: date) { price in
|
|
if let per = Double(price.per), per <= 20.0 {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
//print(prices.count)
|
|
|
|
for price in prices {
|
|
let per = Double(price.per)!
|
|
var score: Double = 0
|
|
if per <= 10 {
|
|
score = (10 - per) * 5
|
|
}
|
|
else if per <= 20 {
|
|
score = (20 - per) * 4
|
|
}
|
|
|
|
if let _ = scoreMap[price.shortProductCode] {
|
|
scoreMap[price.shortProductCode]! += score
|
|
}
|
|
else {
|
|
scoreMap[price.shortProductCode] = score
|
|
}
|
|
}
|
|
|
|
normalizeAndWrite(scoreMap: scoreMap, includeName: true, kmi: kmi)
|
|
|
|
} catch {
|
|
writeError(error, kmi: kmi)
|
|
}
|
|
|
|
semaphore.signal()
|
|
}
|
|
semaphore.wait()
|
|
}
|
|
}
|