1. 播放器歌词效果

This commit is contained in:
李琦
2026-08-02 16:11:35 +08:00
parent b4dc67fda1
commit e32990b212
9 changed files with 396 additions and 156 deletions

Binary file not shown.

View File

@@ -63,7 +63,7 @@ type Danmaku struct {
ID uint `gorm:"primaryKey;comment:主键ID" json:"id"`
Name string `gorm:"column:name;size:50;not null;default:'';comment:发送者姓名" json:"name"`
Content string `gorm:"column:content;type:text;not null;comment:祝福内容" json:"content"`
Color string `gorm:"column:color;size:20;not null;default:champagne;comment:弹幕颜色key" json:"color"`
Color string `gorm:"column:color;size:32;not null;default:champagne;comment:弹幕颜色key" json:"color"`
Source string `gorm:"column:source;size:20;not null;default:danmaku;comment:来源 danmaku|rsvp" json:"source"`
RsvpID *uint `gorm:"column:rsvp_id;comment:关联回执ID" json:"rsvp_id"`
Status string `gorm:"column:status;size:20;not null;default:pending;index;comment:审核状态 pending|approved|rejected" json:"status"`
@@ -116,15 +116,21 @@ func saveModerationCache(typ, content, status, reason string) {
}
var danmakuColorWhitelist = map[string]struct{}{
"champagne": {},
"blush": {},
"apricot": {},
"gold": {},
"lilac": {},
"sky": {},
"mauve": {},
"slate": {},
"ink": {},
"champagne": {},
"blush": {},
"apricot": {},
"gold": {},
"lilac": {},
"sky": {},
"mauve": {},
"slate": {},
"ink": {},
"gradSunset": {},
"gradChampagne": {},
"gradBlush": {},
"gradOcean": {},
"gradAurora": {},
"gradEmber": {},
}
func normalizeDanmakuColor(color string) string {
@@ -636,7 +642,6 @@ func main() {
return
}
var body struct {
Name string `json:"name"`
Style string `json:"style"`
}
if err := c.ShouldBindJSON(&body); err != nil {
@@ -647,7 +652,7 @@ func main() {
c.JSON(400, gin.H{"error": "请选择祝福风格"})
return
}
text, err := sparkClient.GenerateBlessing(body.Name, body.Style)
text, err := sparkClient.GenerateBlessing(body.Style)
if err != nil {
c.JSON(500, gin.H{"error": err.Error()})
return

View File

@@ -18,30 +18,34 @@ func NormalizeStyle(style string) (string, bool) {
return s, ok
}
func (c *Client) GenerateBlessing(name, style string) (string, error) {
func (c *Client) GenerateBlessing(style string) (string, error) {
styleKey, ok := NormalizeStyle(style)
if !ok {
return "", fmt.Errorf("无效的祝福风格")
}
label := BlessingStyles[styleKey]
guest := strings.TrimSpace(name)
guestHint := "宾客未署名"
if guest != "" {
guestHint = "宾客姓名:" + guest
}
styleGuide := map[string]string{
"classic": "文言雅致、含蓄温润的古风表达,可适度用典故意象,忌生僻堆砌。",
"modern": "用简洁真诚的现代汉语,自然得体,适合婚礼现场朗读。",
"funny": "轻松幽默、俏皮可爱,但保持祝福善意,低俗。",
"roast": "损友互怼口吻先轻度调侃再真心祝福尺度友好不人身攻击。",
"classic": "文言雅致、含蓄温润;可点到意象(花月、琴瑟、白首),忌生僻堆砌与整段文言文。",
"modern": "口语真诚、干净利落;像朋友当面说的话,不鸡汤、不口号堆叠。",
"funny": "俏皮轻松、会心一笑;可玩梗但保持善意,低俗与尴尬烂梗。",
"roast": "损友口吻先轻怼一句再落真心祝福尺度友好不人身攻击、不揭隐私。",
}
sys := "你是婚礼祝福文案助手。只输出一条中文祝福正文,不要标题、不要解释、不要引号包裹。"
user := fmt.Sprintf(`请写一条婚礼祝福
风格:%s%s
%s
要求30到60个汉字积极祝福新人不要出现违法、色情、歧视或辱骂内容。`, label, styleGuide[styleKey], guestHint)
sys := `你是婚礼祝福文案助手。
只输出一条可直接填写的中文祝福正文
禁止:标题、序号、引号包裹、解释说明、表情符号、英文、话题标签。
禁止出现任何真实姓名、网名、称呼占位如某某、X先生/女士)、新郎新娘具体姓氏。
称呼统一用「你们」「新人」等泛称即可。
文案要有意境:有画面感与余韵,可用轻巧意象(光、风、茶、路、灯火、四季等)点染,忌空泛套话与意象堆砌。`
user := fmt.Sprintf(`请写一条送给婚礼新人的短祝福。
风格:%s
写法:%s
意境:先落一两处可感的画面或氛围,再落到真诚祝福,读完有余味。
篇幅2848个汉字一两句说完。
内容:祝福婚姻美满、相守与日常,语气自然,适合弹幕或回执留言。
请直接输出祝福正文。`, label, styleGuide[styleKey])
return c.Chat([]Message{
{Role: "system", Content: sys},