Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package videoser
|
|
|
|
import (
|
|
"strings"
|
|
"videoweb/app/api/proto"
|
|
"videoweb/app/service/configser"
|
|
"videoweb/pub/models/videoinformationmod"
|
|
)
|
|
|
|
func toVideoInfoData(videoInfo *videoinformationmod.VideoInformation, imgCdn string) proto.VideoInfoData {
|
|
data := proto.VideoInfoToData(videoInfo, imgCdn)
|
|
normalizeVideoInfoH265Paths(&data)
|
|
configser.ApplyVideoH265Policy(&data)
|
|
return data
|
|
}
|
|
|
|
func applyVideoUrlAuth(resp *proto.VideoInfoData, videoId int64, ip, ua string, userId int64) {
|
|
normalizeVideoInfoH265Paths(resp)
|
|
configser.ApplyVideoH265Policy(resp)
|
|
|
|
if len(resp.Video.Url) > 0 {
|
|
resp.Video.Url = GetM3U8AuthParam(videoId, resp.Video.Url, ip, ua, userId)
|
|
}
|
|
if len(resp.Video.H265Url) > 0 {
|
|
resp.Video.H265Url = GetM3U8AuthParam(videoId, resp.Video.H265Url, ip, ua, userId)
|
|
}
|
|
for i, node := range resp.Nodes {
|
|
for j, video := range node.Videos {
|
|
if len(video.Url) > 0 {
|
|
video.Url = GetM3U8AuthParam(videoId, video.Url, ip, ua, userId)
|
|
}
|
|
if len(video.H265Url) > 0 {
|
|
video.H265Url = GetM3U8AuthParam(videoId, video.H265Url, ip, ua, userId)
|
|
}
|
|
node.Videos[j] = video
|
|
}
|
|
resp.Nodes[i] = node
|
|
}
|
|
}
|
|
|
|
func normalizeVideoInfoH265Paths(data *proto.VideoInfoData) {
|
|
if data == nil {
|
|
return
|
|
}
|
|
data.Video.H265Url = normalizeLaosijiHEVCPath(data.Video.H265Url)
|
|
for i := range data.Nodes {
|
|
for j := range data.Nodes[i].Videos {
|
|
data.Nodes[i].Videos[j].H265Url = normalizeLaosijiHEVCPath(data.Nodes[i].Videos[j].H265Url)
|
|
}
|
|
}
|
|
}
|
|
|
|
func normalizeLaosijiHEVCPath(path string) string {
|
|
path = strings.TrimSpace(path)
|
|
path = strings.TrimPrefix(path, "laosiji/m3m/")
|
|
if path != "" && !strings.HasPrefix(path, "laosiji/") {
|
|
return "laosiji/" + path
|
|
}
|
|
return path
|
|
}
|