banner image local upload

This commit is contained in:
mubai
2024-11-04 23:53:16 +08:00
parent 57323dae2f
commit a68a342c2c
8 changed files with 224 additions and 91 deletions

View File

@@ -111,12 +111,14 @@ func DirectedSpider(c *gin.Context) {
// SingleUpdateSpider 单一影片更新采集
func SingleUpdateSpider(c *gin.Context) {
// 获取影片对应的唯一标识
id := c.Query("id")
if id == "" {
system.Failed("参数异常, 资源标识不能为空", c)
ids := c.Query("ids")
if ids == "" {
system.Failed("参数异常, 资源标识ID信息缺失", c)
return
}
// 通过ID对指定影片进行同步更新
logic.SL.SyncCollect(ids)
system.SuccessOnlyMsg("影片更新任务已成功开启!!!", c)
}
// 校验密码有效性

View File

@@ -48,6 +48,11 @@ func (sl *SpiderLogic) ZeroCollect(time int) {
go spider.StarZero(time)
}
// SyncCollect 同步采集
func (sl *SpiderLogic) SyncCollect(ids string) {
go spider.CollectSingleFilm(ids)
}
// FilmClassCollect 影视分类采集, 直接覆盖当前分类数据
func (sl *SpiderLogic) FilmClassCollect() error {
l := system.GetCollectSourceListByGrade(system.MasterCollect)

View File

@@ -126,7 +126,7 @@ func CollectCategory(s *system.FilmSource) {
}
}
// 影视详情采集
// collectFilm 影视详情采集 (单一源分页全采集)
func collectFilm(s *system.FilmSource, h, pg int) {
// 生成请求参数
r := util.RequestInfo{Uri: s.Uri, Params: url.Values{}}
@@ -163,6 +163,41 @@ func collectFilm(s *system.FilmSource, h, pg int) {
}
}
// collectFilmById 采集指定ID的影片信息
func collectFilmById(ids string, s *system.FilmSource) {
// 生成请求参数
r := util.RequestInfo{Uri: s.Uri, Params: url.Values{}}
// 设置分页页数
r.Params.Set("pg", "1")
// 设置影片IDS参数信息
r.Params.Set("ids", ids)
// 执行采集方法 获取影片详情list
list, err := spiderCore.GetFilmDetail(r)
if err != nil || len(list) <= 0 {
log.Println("GetMovieDetail Error: ", err)
return
}
// 通过采集站 Grade 类型, 执行不同的存储逻辑
switch s.Grade {
case system.MasterCollect:
// 主站点 保存完整影片详情信息到 redis 和 mysql 中
if err = system.SaveDetail(list[0]); err != nil {
log.Println("SaveDetails Error: ", err)
}
// 如果主站点开启了图片同步, 则将图片url以及对应的mid存入ZSet集合中
if s.SyncPictures {
if err = system.SaveVirtualPic(conver.ConvertVirtualPicture(list)); err != nil {
log.Println("SaveVirtualPic Error: ", err)
}
}
case system.SlaveCollect:
// 附属站点 仅保存影片播放信息到redis
if err = system.SaveSitePlayList(s.Id, list); err != nil {
log.Println("SaveDetails Error: ", err)
}
}
}
// ConcurrentPageSpider 并发分页采集, 不限类型
func ConcurrentPageSpider(capacity int, s *system.FilmSource, h int, collectFunc func(s *system.FilmSource, hour, pageNumber int)) {
// 开启协程并发执行
@@ -191,7 +226,7 @@ func ConcurrentPageSpider(capacity int, s *system.FilmSource, h int, collectFunc
}
}()
}
for i := 0; i < config.MAXGoroutine; i++ {
for i := 0; i < GoroutineNum; i++ {
<-waitCh
}
}
@@ -229,7 +264,7 @@ func AutoCollect(h int) {
}
}
// ClearSpider 删除已采集的影片信息
// ClearSpider 删除所有已采集的影片信息
func ClearSpider() {
system.FilmZero()
}
@@ -242,6 +277,20 @@ func StarZero(h int) {
AutoCollect(h)
}
// CollectSingleFilm 通过影片唯一ID获取影片信息
func CollectSingleFilm(ids string) {
// 获取采集站列表信息
fl := system.GetCollectSourceList()
// 循环遍历所有采集站信息
for _, f := range fl {
// 目前仅对主站点进行处理
if f.Grade == system.MasterCollect && f.State {
collectFilmById(ids, &f)
return
}
}
}
// ======================================================= 公共方法 =======================================================
// CollectApiTest 测试采集接口是否可用

View File

@@ -91,6 +91,7 @@ func SetupRouter() *gin.Engine {
spiderRoute.POST(`/start`, controller.StarSpider)
spiderRoute.GET(`/zero`, controller.SpiderReset)
spiderRoute.GET(`/clear`, controller.ClearAllFilm)
spiderRoute.GET(`/update/single`, controller.SingleUpdateSpider)
spiderRoute.GET(`/class/cover`, controller.CoverFilmClass)
}
// filmManage 影视管理