ABS v1 test

This commit is contained in:
mubai
2023-12-24 23:22:20 +08:00
parent b48e53a637
commit 86e0501d2f
59 changed files with 538 additions and 1699 deletions

View File

@@ -1,38 +0,0 @@
package dp
import (
"server/model/system"
)
// =================Spider数据处理=======================
// CategoryTree 组装树形菜单
func CategoryTree(list []system.ClassInfo) *system.CategoryTree {
// 遍历所有分类进行树形结构组装
tree := &system.CategoryTree{Category: &system.Category{Id: 0, Pid: -1, Name: "分类信息"}}
temp := make(map[int64]*system.CategoryTree)
temp[tree.Id] = tree
for _, c := range list {
// 判断当前节点ID是否存在于 temp中
category, ok := temp[c.Id]
if ok {
// 将当前节点信息保存
category.Category = &system.Category{Id: c.Id, Pid: c.Pid, Name: c.Name}
} else {
// 如果不存在则将当前分类存放到 temp中
category = &system.CategoryTree{Category: &system.Category{Id: c.Id, Pid: c.Pid, Name: c.Name}}
temp[c.Id] = category
}
// 根据 pid获取父节点信息
parent, ok := temp[category.Pid]
if !ok {
// 如果不存在父节点存在, 则将父节点存放到temp中
temp[c.Pid] = parent
}
// 将当前节点存放到父节点的Children中
parent.Children = append(parent.Children, category)
}
return tree
}

View File

@@ -1,155 +0,0 @@
package dp
import (
"server/model/system"
"strings"
)
// ProcessMovieListInfo 处理影片列表中的信息
func ProcessMovieListInfo(list []system.MovieInfo) []system.Movie {
var movies []system.Movie
for _, info := range list {
movies = append(movies, system.Movie{
Id: info.Id,
Name: info.Name,
Cid: info.Cid,
CName: info.CName,
EnName: info.EnName,
Time: info.Time,
Remarks: info.Remarks,
PlayFrom: info.PlayFrom,
})
}
return movies
}
// ProcessMovieDetailList 处理影片详情列表数据
func ProcessMovieDetailList(list []system.MovieDetailInfo) []system.MovieDetail {
var detailList []system.MovieDetail
for _, d := range list {
detailList = append(detailList, ProcessMovieDetail(d))
}
return detailList
}
// ProcessMovieDetail 处理单个影片详情信息
func ProcessMovieDetail(detail system.MovieDetailInfo) system.MovieDetail {
md := system.MovieDetail{
Id: detail.Id,
Cid: detail.Cid,
Pid: detail.Pid,
Name: detail.Name,
Picture: detail.Pic,
DownFrom: detail.DownFrom,
MovieDescriptor: system.MovieDescriptor{
SubTitle: detail.SubTitle,
CName: detail.CName,
EnName: detail.EnName,
Initial: detail.Initial,
ClassTag: detail.ClassTag,
Actor: detail.Actor,
Director: detail.Director,
Writer: detail.Writer,
Blurb: detail.Blurb,
Remarks: detail.Remarks,
ReleaseDate: detail.PubDate,
Area: detail.Area,
Language: detail.Language,
Year: detail.Year,
State: detail.State,
UpdateTime: detail.UpdateTime,
AddTime: detail.AddTime,
DbId: detail.DbId,
DbScore: detail.DbScore,
Hits: detail.Hits,
Content: detail.Content,
},
}
// 通过分割符切分播放源信息 PlaySeparator $$$
md.PlayFrom = strings.Split(detail.PlayFrom, detail.PlaySeparator)
// v2 只保留m3u8播放源
md.PlayList = ProcessPlayInfoV2(detail.PlayUrl, detail.PlaySeparator)
md.DownloadList = ProcessPlayInfoV2(detail.DownUrl, detail.PlaySeparator)
return md
}
// ProcessPlayInfo 处理影片播放数据信息
func ProcessPlayInfo(info, separator string) [][]system.MovieUrlInfo {
var res [][]system.MovieUrlInfo
// 1. 通过分隔符区分多个片源数据
for _, l := range strings.Split(info, separator) {
// 2.对每个片源的集数和播放地址进行分割
var item []system.MovieUrlInfo
for _, p := range strings.Split(l, "#") {
// 3. 处理 Episode$Link 形式的播放信息
if strings.Contains(p, "$") {
item = append(item, system.MovieUrlInfo{
Episode: strings.Split(p, "$")[0],
Link: strings.Split(p, "$")[1],
})
} else {
item = append(item, system.MovieUrlInfo{
Episode: "O(∩_∩)O",
Link: p,
})
}
}
// 3. 将每组播放源对应的播放列表信息存储到列表中
res = append(res, item)
}
return res
}
// ProcessPlayInfoV2 处理影片信息方案二 只保留m3u8播放源
func ProcessPlayInfoV2(info, separator string) [][]system.MovieUrlInfo {
var res [][]system.MovieUrlInfo
if separator != "" {
// 1. 通过分隔符切分播放源地址
for _, l := range strings.Split(info, separator) {
// 只对m3u8播放源 和 .mp4下载地址进行处理
if strings.Contains(l, ".m3u8") || strings.Contains(l, ".mp4") {
// 2.对每个片源的集数和播放地址进行分割
var item []system.MovieUrlInfo
for _, p := range strings.Split(l, "#") {
// 3. 处理 Episode$Link 形式的播放信息
if strings.Contains(p, "$") {
item = append(item, system.MovieUrlInfo{
Episode: strings.Split(p, "$")[0],
Link: strings.Split(p, "$")[1],
})
} else {
item = append(item, system.MovieUrlInfo{
Episode: "O(∩_∩)O",
Link: p,
})
}
}
// 3. 将每组播放源对应的播放列表信息存储到列表中
res = append(res, item)
}
}
} else {
// 只对m3u8播放源 和 .mp4下载地址进行处理
if strings.Contains(info, ".m3u8") || strings.Contains(info, ".mp4") {
// 2.对每个片源的集数和播放地址进行分割
var item []system.MovieUrlInfo
for _, p := range strings.Split(info, "#") {
// 3. 处理 Episode$Link 形式的播放信息
if strings.Contains(p, "$") {
item = append(item, system.MovieUrlInfo{
Episode: strings.Split(p, "$")[0],
Link: strings.Split(p, "$")[1],
})
} else {
item = append(item, system.MovieUrlInfo{
Episode: "O(∩_∩)O",
Link: p,
})
}
}
// 3. 将每组播放源对应的播放列表信息存储到列表中
res = append(res, item)
}
}
return res
}