Files
fish03andClaude Opus 5.5 bef9f8b4ed Initial commit
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 14:43:16 +07:00

148 lines
2.7 KiB
Go

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 ""
}