mirror of
https://github.com/ProudMuBai/GoFilm.git
synced 2026-02-04 06:54:41 +08:00
banner image local upload
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
// 校验密码有效性
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 测试采集接口是否可用
|
||||
|
||||
@@ -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 影视管理
|
||||
|
||||
Reference in New Issue
Block a user