From 2129f7a8b71ba3d2668693c774b31054c53f57d3 Mon Sep 17 00:00:00 2001 From: RockYang Date: Fri, 26 Jul 2024 19:12:44 +0800 Subject: [PATCH] song detail page is ready --- api/handler/suno_handler.go | 96 +++++++++++- api/main.go | 2 + api/service/suno/service.go | 25 ++-- api/store/model/suno_job.go | 4 +- api/store/vo/suno_job.go | 40 ++--- api/utils/common.go | 2 + web/src/assets/css/song.styl | 88 +++++++++++ web/src/assets/css/suno.styl | 71 ++++++++- web/src/assets/iconfont/iconfont.css | 10 +- web/src/assets/iconfont/iconfont.js | 2 +- web/src/assets/iconfont/iconfont.json | 7 + web/src/assets/iconfont/iconfont.ttf | Bin 26932 -> 27180 bytes web/src/assets/iconfont/iconfont.woff | Bin 18076 -> 18248 bytes web/src/assets/iconfont/iconfont.woff2 | Bin 15728 -> 15916 bytes web/src/components/ChatReply.vue | 3 +- web/src/components/MusicPlayer.vue | 11 +- web/src/components/ui/BlackDialog.vue | 106 +++++++++++++ web/src/components/ui/BlackSwitch.vue | 29 ++-- web/src/router.js | 6 + web/src/views/ChatPlus.vue | 5 +- web/src/views/Song.vue | 95 ++++++++++++ web/src/views/Suno.vue | 198 +++++++++++++++++++++++-- 22 files changed, 718 insertions(+), 82 deletions(-) create mode 100644 web/src/assets/css/song.styl create mode 100644 web/src/components/ui/BlackDialog.vue create mode 100644 web/src/views/Song.vue diff --git a/api/handler/suno_handler.go b/api/handler/suno_handler.go index fb14283e..d004c2b5 100644 --- a/api/handler/suno_handler.go +++ b/api/handler/suno_handler.go @@ -152,7 +152,7 @@ func (h *SunoHandler) List(c *gin.Context) { // 统计总数 var total int64 - session.Debug().Model(&model.SunoJob{}).Count(&total) + session.Model(&model.SunoJob{}).Count(&total) if page > 0 && pageSize > 0 { offset := (page - 1) * pageSize @@ -164,7 +164,19 @@ func (h *SunoHandler) List(c *gin.Context) { resp.ERROR(c, err.Error()) return } - + // 初始化续写关系 + songIds := make([]string, 0) + for _, v := range list { + if v.RefTaskId != "" { + songIds = append(songIds, v.RefSongId) + } + } + var tasks []model.SunoJob + h.DB.Where("song_id IN ?", songIds).Find(&tasks) + songMap := make(map[string]model.SunoJob) + for _, t := range tasks { + songMap[t.SongId] = t + } // 转换为 VO items := make([]vo.SunoJob, 0) for _, v := range list { @@ -173,6 +185,15 @@ func (h *SunoHandler) List(c *gin.Context) { if err != nil { continue } + item.CreatedAt = v.CreatedAt.Unix() + if s, ok := songMap[v.RefSongId]; ok { + item.RefSong = map[string]interface{}{ + "id": s.Id, + "title": s.Title, + "cover": s.CoverURL, + "audio": s.AudioURL, + } + } items = append(items, item) } @@ -191,8 +212,7 @@ func (h *SunoHandler) Remove(c *gin.Context) { // 删除任务 h.DB.Delete(&job) // 删除文件 - _ = h.uploader.GetUploadHandler().Delete(job.ThumbImgURL) - _ = h.uploader.GetUploadHandler().Delete(job.CoverImgURL) + _ = h.uploader.GetUploadHandler().Delete(job.CoverURL) _ = h.uploader.GetUploadHandler().Delete(job.AudioURL) } @@ -208,3 +228,71 @@ func (h *SunoHandler) Publish(c *gin.Context) { resp.SUCCESS(c) } + +func (h *SunoHandler) Update(c *gin.Context) { + var data struct { + Id int `json:"id"` + Title string `json:"title"` + Cover string `json:"cover"` + } + if err := c.ShouldBindJSON(&data); err != nil { + resp.ERROR(c, types.InvalidArgs) + return + } + + if data.Id == 0 || data.Title == "" || data.Cover == "" { + resp.ERROR(c, types.InvalidArgs) + return + } + + userId := h.GetLoginUserId(c) + var item model.SunoJob + if err := h.DB.Where("id", data.Id).Where("user_id", userId).First(&item).Error; err != nil { + resp.ERROR(c, err.Error()) + return + } + + item.Title = data.Title + item.CoverURL = data.Cover + + if err := h.DB.Updates(&item).Error; err != nil { + resp.ERROR(c, err.Error()) + return + } + + resp.SUCCESS(c) +} + +// Detail 歌曲详情 +func (h *SunoHandler) Detail(c *gin.Context) { + id := h.GetInt(c, "id", 0) + if id <= 0 { + resp.ERROR(c, types.InvalidArgs) + return + } + var item model.SunoJob + if err := h.DB.Where("id", id).First(&item).Error; err != nil { + resp.ERROR(c, err.Error()) + return + } + + // 读取用户信息 + var user model.User + if err := h.DB.Where("id", item.UserId).First(&user).Error; err != nil { + resp.ERROR(c, err.Error()) + return + } + + var itemVo vo.SunoJob + if err := utils.CopyObject(item, &itemVo); err != nil { + resp.ERROR(c, err.Error()) + return + } + itemVo.CreatedAt = item.CreatedAt.Unix() + itemVo.User = map[string]interface{}{ + "nickname": user.Nickname, + "avatar": user.Avatar, + } + + resp.SUCCESS(c, itemVo) +} diff --git a/api/main.go b/api/main.go index d5541fb8..63911ca0 100644 --- a/api/main.go +++ b/api/main.go @@ -492,6 +492,8 @@ func main() { group.GET("list", h.List) group.GET("remove", h.Remove) group.GET("publish", h.Publish) + group.POST("update", h.Update) + group.GET("detail", h.Detail) }), fx.Invoke(func(s *core.AppServer, db *gorm.DB) { go func() { diff --git a/api/service/suno/service.go b/api/service/suno/service.go index 83f0fc58..8f4defe5 100644 --- a/api/service/suno/service.go +++ b/api/service/suno/service.go @@ -86,7 +86,7 @@ func (s *Service) Run() { r, err := s.Create(task) if err != nil { logger.Errorf("create task with error: %v", err) - s.db.UpdateColumns(map[string]interface{}{ + s.db.Model(&model.SunoJob{Id: task.Id}).UpdateColumns(map[string]interface{}{ "err_msg": err.Error(), "progress": 101, }) @@ -122,7 +122,7 @@ func (s *Service) Create(task types.SunoTask) (RespVo, error) { } reqBody := map[string]interface{}{ - "task_id": task.TaskId, + "task_id": task.RefTaskId, "continue_clip_id": task.RefSongId, "continue_at": task.ExtendSecs, "make_instrumental": task.Instrumental, @@ -153,6 +153,10 @@ func (s *Service) Create(task types.SunoTask) (RespVo, error) { if err != nil { return RespVo{}, fmt.Errorf("解析API数据失败:%v, %s", err, string(body)) } + + if res.Code != "success" { + return RespVo{}, fmt.Errorf("API 返回失败:%s", res.Message) + } res.Channel = apiKey.ApiURL return res, nil } @@ -189,15 +193,8 @@ func (s *Service) DownloadImages() { for _, v := range items { // 下载图片和音频 - logger.Infof("try download thumb image: %s", v.ThumbImgURL) - thumbURL, err := s.uploadManager.GetUploadHandler().PutUrlFile(v.ThumbImgURL, true) - if err != nil { - logger.Errorf("download image with error: %v", err) - continue - } - - logger.Infof("try download cover image: %s", v.CoverImgURL) - coverURL, err := s.uploadManager.GetUploadHandler().PutUrlFile(v.CoverImgURL, true) + logger.Infof("try download cover image: %s", v.CoverURL) + coverURL, err := s.uploadManager.GetUploadHandler().PutUrlFile(v.CoverURL, true) if err != nil { logger.Errorf("download image with error: %v", err) continue @@ -209,8 +206,7 @@ func (s *Service) DownloadImages() { logger.Errorf("download audio with error: %v", err) continue } - v.ThumbImgURL = thumbURL - v.CoverImgURL = coverURL + v.CoverURL = coverURL v.AudioURL = audioURL v.Progress = 100 s.db.Updates(&v) @@ -260,8 +256,7 @@ func (s *Service) SyncTaskProgress() { job.Tags = v.Metadata.Tags job.ModelName = v.ModelName job.RawData = utils.JsonEncode(v) - job.ThumbImgURL = v.ImageUrl - job.CoverImgURL = v.ImageLargeUrl + job.CoverURL = v.ImageLargeUrl job.AudioURL = v.AudioUrl if err = tx.Create(&job).Error; err != nil { diff --git a/api/store/model/suno_job.go b/api/store/model/suno_job.go index 61d36377..abbbd631 100644 --- a/api/store/model/suno_job.go +++ b/api/store/model/suno_job.go @@ -16,8 +16,7 @@ type SunoJob struct { SongId string // 续写的歌曲id RefSongId string Prompt string // 提示词 - ThumbImgURL string // 缩略图 URL - CoverImgURL string // 封面图 URL + CoverURL string // 封面图 URL AudioURL string // 音频 URL ModelName string // 模型名称 Progress int // 任务进度 @@ -26,6 +25,7 @@ type SunoJob struct { ErrMsg string // 错误信息 RawData string // 原始数据 json Power int // 消耗算力 + PlayTimes int // 播放次数 CreatedAt time.Time } diff --git a/api/store/vo/suno_job.go b/api/store/vo/suno_job.go index 014148cf..fbc752de 100644 --- a/api/store/vo/suno_job.go +++ b/api/store/vo/suno_job.go @@ -1,7 +1,5 @@ package vo -import "time" - type SunoJob struct { Id uint `json:"id"` UserId int `json:"user_id"` @@ -9,24 +7,26 @@ type SunoJob struct { Title string `json:"title"` Type string `json:"type"` TaskId string `json:"task_id"` - RefTaskId string `json:"ref_task_id"` // 续写的任务id - Tags string `json:"tags"` // 歌曲风格和标签 - Instrumental bool `json:"instrumental"` // 是否生成纯音乐 - ExtendSecs int `json:"extend_secs"` // 续写秒数 - SongId string `json:"song_id"` // 续写的歌曲id - RefSongId string `json:"ref_song_id"` // 续写的歌曲id - Prompt string `json:"prompt"` // 提示词 - ThumbImgURL string `json:"thumb_img_url"` // 缩略图 URL - CoverImgURL string `json:"cover_img_url"` // 封面图 URL - AudioURL string `json:"audio_url"` // 音频 URL - ModelName string `json:"model_name"` // 模型名称 - Progress int `json:"progress"` // 任务进度 - Duration int `json:"duration"` // 银屏时长,秒 - Publish bool `json:"publish"` // 是否发布 - ErrMsg string `json:"err_msg"` // 错误信息 - RawData map[string]interface{} `json:"raw_data"` // 原始数据 json - Power int `json:"power"` // 消耗算力 - CreatedAt time.Time + RefTaskId string `json:"ref_task_id"` // 续写的任务id + Tags string `json:"tags"` // 歌曲风格和标签 + Instrumental bool `json:"instrumental"` // 是否生成纯音乐 + ExtendSecs int `json:"extend_secs"` // 续写秒数 + SongId string `json:"song_id"` // 续写的歌曲id + RefSongId string `json:"ref_song_id"` // 续写的歌曲id + Prompt string `json:"prompt"` // 提示词 + CoverURL string `json:"cover_url"` // 封面图 URL + AudioURL string `json:"audio_url"` // 音频 URL + ModelName string `json:"model_name"` // 模型名称 + Progress int `json:"progress"` // 任务进度 + Duration int `json:"duration"` // 银屏时长,秒 + Publish bool `json:"publish"` // 是否发布 + ErrMsg string `json:"err_msg"` // 错误信息 + RawData map[string]interface{} `json:"raw_data"` // 原始数据 json + Power int `json:"power"` // 消耗算力 + RefSong map[string]interface{} `json:"ref_song,omitempty"` + User map[string]interface{} `json:"user,omitempty"` //关联用户信息 + PlayTimes int `json:"play_times"` // 播放次数 + CreatedAt int64 `json:"created_at"` } func (SunoJob) TableName() string { diff --git a/api/utils/common.go b/api/utils/common.go index 142256d8..cb76c4c1 100644 --- a/api/utils/common.go +++ b/api/utils/common.go @@ -84,6 +84,8 @@ func CopyObject(src interface{}, dst interface{}) error { case reflect.Bool: value.SetBool(v.Bool()) break + default: + value.Set(v) } } diff --git a/web/src/assets/css/song.styl b/web/src/assets/css/song.styl new file mode 100644 index 00000000..04b575f8 --- /dev/null +++ b/web/src/assets/css/song.styl @@ -0,0 +1,88 @@ +.page-song { + display: flex; + justify-content: center; + background-color: #0E0808; + + .inner { + text-align left + color rgb(250 247 245) + padding 20px + max-width 600px + width 100% + font-family "Neue Montreal,ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji" + + .title { + font-size 40px + font-weight: 500 + line-height 1rem + white-space nowrap + text-overflow ellipsis + } + + .row { + padding 8px 0 + } + + .author { + display flex + align-items center + .nickname { + margin 0 10px + } + + .btn { + margin-right 10px + background-color #363030 + border none + border-radius 5px + padding 5px 10px + cursor pointer + + &:hover { + background-color #5F5958 + } + } + } + + .date { + color #999999 + display flex + align-items center + + .version { + background-color #1C1616 + border 1px solid #8f8f8f + font-weight normal + font-size 14px + padding 1px 3px + border-radius 5px + margin-left 10px + } + } + + .prompt { + width 100% + height 100% + background-color transparent + white-space pre-wrap + overflow-y hidden + resize none + position relative + outline 2px solid transparent + outline-offset 2px + border none + font-size 100% + line-height 2rem + } + } + + + .music-player { + width 100% + position: fixed; + bottom: 0; + left: 50px; + padding 20px 0 + } + +} \ No newline at end of file diff --git a/web/src/assets/css/suno.styl b/web/src/assets/css/suno.styl index 08a1bca1..bf650cf1 100644 --- a/web/src/assets/css/suno.styl +++ b/web/src/assets/css/suno.styl @@ -38,6 +38,9 @@ .text { margin-right 10px } + .el-icon { + top 2px + } } .item { margin-bottom: 20px @@ -66,6 +69,55 @@ opacity: 0.9; } } + + .song { + display flex + padding 10px + background-color #252020 + border-radius 10px + margin-bottom 10px + font-size 14px + position relative + + .el-image { + width 50px + height 50px + border-radius 10px + } + .title { + display flex + margin-left 10px + align-items center + } + + .el-button--info { + position absolute + right 20px + top 20px + } + } + + .extend-secs { + padding 10px 0 + font-size 14px + + input { + width 50px + text-align center + padding 8px 10px + font-size 14px + background none + border 1px solid #8f8f8f + margin 0 10px + border-radius 10px + outline: none; + transition: border-color 0.5s ease, box-shadow 0.5s ease; + &:focus { + border-color: #0F7A71; + box-shadow: 0 0 5px #0F7A71; + } + } + } } .tag-select { @@ -190,6 +242,10 @@ padding 1px 3px border-radius 5px margin-left 10px + + .iconfont { + font-size 12px + } } } @@ -267,11 +323,22 @@ text-overflow: ellipsis; /* 用省略号表示溢出的内容 */ } } - - .right { + .center { display flex width 100% justify-content center + .failed { + display flex + align-items center + color #E4696B + font-size 14px + } + } + .right { + display flex + width 100px + justify-content center + align-items center } } } diff --git a/web/src/assets/iconfont/iconfont.css b/web/src/assets/iconfont/iconfont.css index 10b4f5de..842956a9 100644 --- a/web/src/assets/iconfont/iconfont.css +++ b/web/src/assets/iconfont/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 4125778 */ - src: url('iconfont.woff2?t=1721356513025') format('woff2'), - url('iconfont.woff?t=1721356513025') format('woff'), - url('iconfont.ttf?t=1721356513025') format('truetype'); + src: url('iconfont.woff2?t=1721896403264') format('woff2'), + url('iconfont.woff?t=1721896403264') format('woff'), + url('iconfont.ttf?t=1721896403264') format('truetype'); } .iconfont { @@ -13,6 +13,10 @@ -moz-osx-font-smoothing: grayscale; } +.icon-link:before { + content: "\e6b4"; +} + .icon-app:before { content: "\e64f"; } diff --git a/web/src/assets/iconfont/iconfont.js b/web/src/assets/iconfont/iconfont.js index 1e83327f..7048f335 100644 --- a/web/src/assets/iconfont/iconfont.js +++ b/web/src/assets/iconfont/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_4125778='',function(a){var l=(l=document.getElementsByTagName("script"))[l.length-1],c=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var t,h,i,o,z,m=function(l,c){c.parentNode.insertBefore(l,c)};if(c&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}}(window); \ No newline at end of file +window._iconfont_svg_string_4125778='',function(a){var l=(l=document.getElementsByTagName("script"))[l.length-1],c=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var t,h,i,o,z,m=function(l,c){c.parentNode.insertBefore(l,c)};if(c&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}}(window); \ No newline at end of file diff --git a/web/src/assets/iconfont/iconfont.json b/web/src/assets/iconfont/iconfont.json index d1b11fab..ffc0d972 100644 --- a/web/src/assets/iconfont/iconfont.json +++ b/web/src/assets/iconfont/iconfont.json @@ -5,6 +5,13 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "880330", + "name": "link", + "font_class": "link", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, { "icon_id": "1503777", "name": "应用", diff --git a/web/src/assets/iconfont/iconfont.ttf b/web/src/assets/iconfont/iconfont.ttf index 18b71dce04e502abd8785a5695b6ecb7e9c252a6..32d02e7b23a3dee10c4b1c4ea9bad066862ae814 100644 GIT binary patch delta 2027 zcma)-e@v8h9LL|!-Eknu0mt#<5)Qb7I}`*u5Htyn)WeF>OiM^p76>7VBd6qC*Ob7q z>9T9p%$zGT$7pN9KQ%KoH~-MNYUcVi=Un@Em8<^A{xRwOW2r~k!GXGcDL6G$5Z+Ut6|JG!iMy z6DglLKIZroDec{|edy^s(^moO7Fpdt@LcEMm!l~_>LuQv*wQ()%^I{CcrTyV#albK zbZ5TT_z}=G0oZ!B4ZM)P{m<_!vw#C_Hk+w@+l8002gBI+Pdfn9-kNELpzSb@ z+-pa1oNfGnG@t=tti=6Tg=+ZV!ECIEVFBjgF)U|@ZKy&nGEjmFJb^+i#FHq+qo~9K zcnI^5jeOK%5kl~y9L=~7F3e|Q@-P=^aAP$dL;!wdq6S4MU>X|H1P59fzLQ~=A&7J= zMHI!TV^SW*POM;WCd}(BV4tZl zdl0w6JVFW-W)xDWFt?Brg;|F973LcfP?&j0slpmSf(l}0V@P3PAoCQK2x6`Yiv^jl zuxt?XV8Q}IOr(URgqUm)78O#bu)GkHNy0)y7AY(_gx4{1V)Y@573u)es8A7*CWYF7 zL=>t7Vje)K7swKY%7H9Zs3FKQg=&IC73vDos!(AuhchIVpHC|SsmLh(ZOD3mc|uYvWaq9OYfY8x`9Q00*Q3iS?&D^xz@ z9fcl%98u^7$oq;>v>aFH5Xc7#y#hI*&^3_Q6i>u_TjZQVD?vV2Xe!8gh4zA6P-ryB zMTM4wTvkxb{yT*>#La^WBJ96bXiePwMv2j-xOq)MJ^No38W)KQg%(DFIx*19NNiMS zYb1IU8XSqu3ayUBs6x{t!N3f(KN5UtgZYU5ME#i)%r{}?=)(kVSV61bI%ad)*4lR4 z#%*`)RrX!>>y9qR4@vn+UCvzRVdveHqqFwR`Y~W?svR zX5DeOxyQ4YXP@%adCuju<$RIr%RQO5G4Eu4RsL)FSH1mnYUb=Kh!lDXdt*MA?_AMK z#p5NJ{!0ID{~P|>f$`F=(vxM4Wv>UDf;)njLVclIgGT z9&y<1dnqeMo8%9Ms;v5ED=*n)`D`3CS#`l`t0B*4d7K%RGufG~3z~SF6QPDCtBQk| z<+5^%EX!H5J{S%J!lUgYUbj0OY4J{Gd)%(pj;OyZ6r3yxSHB&t4FqZ@!^6Yf|E*in zlKY7_E6dxuD-^699uAMRk9s35VYi#xtE;O$k@l#6ecw9&WSPffwMMv^PY49M?=4L= mYd`e1M7*t&9cjOGSZm_ZO(#;Ur{L&+e(UDR-!?6?S@;_X!pX}3 delta 1789 zcma)+TTEP47=_n4XBdXtFbvlMrCf&LYKv5<0>VfOA}UrOhEx+7X&F*Ms$z>gbP(eu zO`BM!F{Y`FiC9R}7!!Cfk=O)@CN^negGL+E7#@DcOB!QpA7~=3&5wQd?0jdRIeYe* z`PaYJxwK*}T(jP-i`F+?e-m(;fyD91$ZJDgo;$mNlxKndf#E~pgH^{nz69_KX&B}W z&t=!=yj~=M;nDGl-a8vV0oEU6|H#;2_|@6)VIcW4u3sDtPaLscvi5K-kDrTQ438f2 zeca5oLGHIBN5)=B8=w8ti2y?Z{t55t#j@5uSo|&ton7vEF1`70q_}tkSiSuEz<=|` z?Turu-<%Wt?163W@-X}QVnxD zV+M2oV^Cb&iziWsr?3;-k%<&^<38j^@i-nqA|As%$c7iisK$O2Vh?&yhA!0LK|G8q z_>qfxJb)nbP=OX~LmFyXY7Qz{Xa;)Gj8c>!9lKD30&3QThbTe^Tr50*a-?D}+OY$> z(TYwyf&0-0H!?kV6pd78AACqc7FBk~zDrn-4Y-n`sYZ3@mO1n21%#7<)j-$|1M7mY zMFv&~aTL}HVP_4j8j_%}eu!J45|BiNnm{}X)qx~O&54`YK;d68P%?;5K|W`{LKPu} z3iX7T2NNm_DN(2~q*S5WkTQk3Ljnpr00}CH7W1M)VOtanVyYu- zA7q!pMna5Age`@bA_$ucF?$Hx4B3JWhcp6Fb7JoyO$uEAX;$b5NQ**eKtc*V0%=p| z7RX+OzJcsh=pabDLN7r&6uJsx)Fbp)6k;SJv>L?pmY96W0fqL1JfqNvkg#I1Cx;c9 z6Edc3dgvIh2@MOGP-tDqv_ca@-Y~HL^fTlgh0cbYQ0Q^UDTQu_#1!+ckPj6m0CHYo z79gJ}Oa-k0=Z^;x8x& zaeiB2&=F@*21Xw7D+j{_K_3ksChNQft$>hIMmeM?FE#5}&LGNmMU%L3leLrWsm$B*(`EO+QWPY2~pS7Aj zl)aGCnR7e0Gj}V!HC_%Bxii)gM*gs`1p!)Yi>+rT%`v>Wei*<}A!hq}~1(Yc7(k diff --git a/web/src/assets/iconfont/iconfont.woff b/web/src/assets/iconfont/iconfont.woff index 5663d176cb1b4add5d007fcc546a0f756b70cc62..eb5171158ee340c4a1ee57cdfc30898d53e47217 100644 GIT binary patch delta 17185 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 delta 17083 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 qXp_X-P_<>J^B1va+gt!K(G*kw diff --git a/web/src/assets/iconfont/iconfont.woff2 b/web/src/assets/iconfont/iconfont.woff2 index 7418be6e64c62fc54f4c53277a0b1e01810fab06..7d4d825e5e3cae674b2e0617d5d1e532c168c4a7 100644 GIT binary patch literal 15916 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 OEi`Rf&!o#X9s&RXdK6&* literal 15728 zcmV-$J&(e7Pew8T0RR9106lO33jhEB0BJM;06iT50RR9100000000000000000000 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

x&NMs6?=H=}}XZSMx{8?-cm&Xqf2t{IvR2CQ% z93odJRccLWSa?KaRCG+NmX4l*k%^f_oOlVWY!W5;O+;@hyI+93#vGT#~60(Uvu)UC4&DA75OGDvA3-Av3mt zTt6oE<+q><#b;0jw*-vZJDz!XMVpcl&M1{*1To`S8YYLapl$N*cj2w_z>L*3Q1s2l z*}1#on`I?df}?c{Xq_d6tPhAuCuW`;M2GDm3lHC1x!8#qjZe;GKbf4>=v7U5=Uwm( zj=?F;H85qk*$EulF{N|6QSM2ki76{v2ci!YV8))QXa#raCIh1?J{H+NW30Adt0W$! zIS@8%rm#$BY%!`JtHU9AaGiObDL%fh { padding-left 10px; .chat-icon { - margin-left 20px; + margin-right 20px; img { width: 36px; @@ -368,7 +368,6 @@ const reGenerate = (prompt) => { .content-wrapper { display flex - flex-flow row-reverse .content { min-height 20px; word-break break-word; diff --git a/web/src/components/MusicPlayer.vue b/web/src/components/MusicPlayer.vue index 30b79d80..434d3883 100644 --- a/web/src/components/MusicPlayer.vue +++ b/web/src/components/MusicPlayer.vue @@ -33,7 +33,7 @@ - + @@ -61,12 +61,15 @@ const props = defineProps({ required: true, default: () => [] }, + showClose: { + type: Boolean, + default: false + } }); // eslint-disable-next-line no-undef const emits = defineEmits(['close']); watch(() => props.songs, (newVal) => { - console.log(newVal) loadSong(newVal[songIndex.value]); }); @@ -78,7 +81,7 @@ const loadSong = (song) => { } title.value = song.title tags.value = song.tags - cover.value = song.thumb_img_url + cover.value = song.cover_url audio.value.src = song.audio_url; audio.value.load(); audio.value.onloadedmetadata = () => { @@ -97,6 +100,7 @@ const togglePlay = () => { const play = () => { audio.value.play(); + isPlaying.value = true; } const prevSong = () => { @@ -177,6 +181,7 @@ onMounted(() => { .title { font-weight 700 font-size 16px + color #ffffff } .style { diff --git a/web/src/components/ui/BlackDialog.vue b/web/src/components/ui/BlackDialog.vue new file mode 100644 index 00000000..7794afb0 --- /dev/null +++ b/web/src/components/ui/BlackDialog.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/web/src/components/ui/BlackSwitch.vue b/web/src/components/ui/BlackSwitch.vue index c1376f14..13733275 100644 --- a/web/src/components/ui/BlackSwitch.vue +++ b/web/src/components/ui/BlackSwitch.vue @@ -6,20 +6,19 @@ - diff --git a/web/src/router.js b/web/src/router.js index 0dfe3798..45c839cd 100644 --- a/web/src/router.js +++ b/web/src/router.js @@ -93,6 +93,12 @@ const routes = [ path: '/external', component: () => import('@/views/ExternalPage.vue'), }, + { + name: 'song', + path: '/song/:id', + meta: {title: 'Suno音乐播放'}, + component: () => import('@/views/Song.vue'), + }, ] }, { diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue index 56f041bc..8db312c8 100644 --- a/web/src/views/ChatPlus.vue +++ b/web/src/views/ChatPlus.vue @@ -654,7 +654,8 @@ const connect = function (chat_id, role_id) { id: randString(32), icon: _role['icon'], prompt:prePrompt, - content: "" + content: "", + orgContent: "", }); } else if (data.type === 'end') { // 消息接收完毕 // 追加当前会话到会话列表 @@ -699,7 +700,7 @@ const connect = function (chat_id, role_id) { }; } } catch (e) { - console.error(e) + console.warn(e) } }); diff --git a/web/src/views/Song.vue b/web/src/views/Song.vue new file mode 100644 index 00000000..ba4b85c9 --- /dev/null +++ b/web/src/views/Song.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/web/src/views/Suno.vue b/web/src/views/Suno.vue index f41d68d7..9ba0dc89 100644 --- a/web/src/views/Suno.vue +++ b/web/src/views/Suno.vue @@ -97,11 +97,36 @@ +
+
+ 续写 + + + +
+ +
+
+ + {{refSong.title}} + +
+
+ 从 秒开始续写 +
+
+
@@ -112,7 +137,7 @@
- +
{{formatTime(item.duration)}}
- {{item.title}} + {{item.title}} {{item.major_model_version}} + + + {{item.ref_song.title}} +
{{item.tags}}
- + - @@ -172,8 +201,16 @@ {{item.prompt}}
+
+
+ {{item.err_msg}} +
+ +
- + + +
@@ -197,15 +234,37 @@
- +
+ + +
+
+
歌曲名称
+ +
+ +
+
封面图片
+ + + +
+
+