47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package app
|
|
|
|
import (
|
|
"math"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
var providerChinaTime = time.FixedZone("CST", 8*60*60)
|
|
|
|
func hongguoHeat(row map[string]any) string {
|
|
hot := nestedMap(row, "hot_score_data")
|
|
|
|
if score := firstNonEmpty(mapString(hot, "score"), mapString(row, "hot_score")); score != "" {
|
|
value, err := strconv.ParseFloat(score, 64)
|
|
if err == nil && value >= 0 && !math.IsInf(value, 0) && !math.IsNaN(value) {
|
|
return score
|
|
}
|
|
}
|
|
return mapString(hot, "text")
|
|
}
|
|
|
|
func hongguoOnlineDate(row map[string]any, now time.Time) string {
|
|
if date := providerTimestampDate(mapString(row, "first_visible_time")); date != "" {
|
|
return date
|
|
}
|
|
for _, value := range anyList(row["sub_title_list"]) {
|
|
label := mapString(nestedMap(value), "content")
|
|
day := now.In(providerChinaTime)
|
|
switch label {
|
|
case "今日上新":
|
|
return day.Format("2006-01-02")
|
|
case "昨日上新":
|
|
return day.AddDate(0, 0, -1).Format("2006-01-02")
|
|
default:
|
|
if strings.HasSuffix(label, "上新") {
|
|
date := normalizeDate(label)
|
|
if _, err := time.Parse("2006-01-02", date); err == nil {
|
|
return date
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return ""
|
|
}
|