package playletser import ( "fmt" "net/url" "strconv" "strings" ) func pathSegment(slug string, id int64) string { slug = strings.TrimSpace(slug) if slug == "" && id > 0 { slug = strconv.FormatInt(id, 10) } if slug == "" { return "" } return url.PathEscape(slug) } func detailURL(slug string, id int64) string { if segment := pathSegment(slug, id); segment != "" { return "/detail/" + segment + "/" } return "#" } func playURL(slug string, playletID int64) string { if segment := pathSegment(slug, playletID); segment != "" { return "/play/" + segment + "/" } return "#" } func chapterPlayURL(slug string, playletID, chapterID int64) string { path := playURL(slug, playletID) if path == "#" || chapterID <= 0 { return path } return fmt.Sprintf("%s%d/", path, chapterID) } func categoryURL(slug string, id int64) string { if segment := pathSegment(slug, id); segment != "" { return "/topic/" + segment + "/" } return "/topic/" } func DetailPath(slug string, id int64) string { return detailURL(slug, id) } func PlayPath(slug string, id int64) string { return playURL(slug, id) } func ChapterPlayPath(slug string, playletID, chapterID int64) string { return chapterPlayURL(slug, playletID, chapterID) } func updateStatusText(status int) string { if status == 2 { return "已完结" } return "连载中" } func browseText(n int64) string { if n <= 0 { return "0次播放" } if n < 10000 { return fmt.Sprintf("%d次播放", n) } v := float64(n) / 10000 if v >= 100 { return fmt.Sprintf("%.0f万次播放", v) } return fmt.Sprintf("%.1f万次播放", v) } func usableAnchor(anchor string) string { anchor = strings.TrimSpace(anchor) if anchor == "" || anchor == "暂无" { return "" } return anchor } func rankClass(rank int) string { switch rank { case 1: return "gold" case 2: return "silver" case 3: return "bronze" default: return "dark" } } func episodeText(n int) string { if n <= 0 { return "" } return fmt.Sprintf("%d集", n) } func formatHeat(n int64) string { if n <= 0 { return "0 热度" } if n < 10000 { return fmt.Sprintf("%d 热度", n) } v := float64(n) / 10000 if v >= 100 { return fmt.Sprintf("%.0f万 热度", v) } return fmt.Sprintf("%.1f万 热度", v) } // formatLikeCount 封面点赞数展示:不足一万原样,否则 x.x万。 func formatLikeCount(n int64) string { if n <= 0 { return "0" } if n < 10000 { return fmt.Sprintf("%d", n) } v := float64(n) / 10000 if v >= 100 { return fmt.Sprintf("%.0f万", v) } return fmt.Sprintf("%.1f万", v) } func firstNonEmpty(values ...string) string { for _, v := range values { if strings.TrimSpace(v) != "" { return v } } return "" }