New version trial

This commit is contained in:
mubai
2026-04-05 20:00:40 +08:00
parent 557ee42ebb
commit 06dc25d2f2
18 changed files with 537 additions and 211 deletions

View File

@@ -84,10 +84,20 @@ server
### 本地运行
1. 修改 /server/plugin/db 目录下的 mysql.goredis.go 中的连接地址和用户名密码
2. 在 server 目录下执行 `go run main.go`
1. 数据库初始化, 本地需要有 MySQLRedis 数据库, MySQL中需手动创建名为 `FilmSite` 的数据库
2. 修改 `server/config/DataConfig.go` 目录下的 mysql.go 和 redis.go 中的连接地址和用户名密码
```go
// mysql连接配置信息
MysqlDsn = "root:root@(192.168.20.5:3601)/FilmSite?charset=utf8mb4&parseTime=True&loc=Local"
// redis连接配置信息
RedisAddr = `192.168.20.5:3602`
RedisPassword = `root`
RedisDBNo = 0
```
3. 在 server 目录下执行 `go run main.go`

View File

@@ -315,7 +315,7 @@ func BatchUpdateDetails(ml []MovieDetail) (err error) {
// ExistMovieDetailByMid 通过mid判断是否存在对应信息
func ExistMovieDetailByMid(mid int64) bool {
var count int64
db.Mdb.Model(&SearchInfo{}).Where("mid", mid).Count(&count)
db.Mdb.Model(&MovieDetail{}).Where("mid", mid).Count(&count)
return count > 0
}
@@ -443,12 +443,32 @@ func SlaveDetailCache(id string, ml []MovieDetail) error {
// 只执行保存操作, 不考虑更新情况
s := SlaveMovieInfo{Sid: id, Mid: GenerateHashKey(m.Name), DbId: m.DbId, PlayList: m.PlayList}
r, _ := json.Marshal(s)
data[s.Mid] = string(r)
// redis中的存储key优先db_id
if s.DbId > 0 {
data[fmt.Sprintf("%d", s.DbId)] = string(r)
} else {
data[s.Mid] = string(r)
}
}
// 使用 Sid:Mid为key, 用以区分不同站点数据
return db.Rdb.HSet(db.Cxt, fmt.Sprintf(config.MultipleSiteDetailKey, id), data).Err()
}
// GetSlaveDetailInCache 从redis缓存中获取播放信息
func GetSlaveDetailInCache(sid, mid string) SlaveMovieInfo {
// 初始化返回值
var s SlaveMovieInfo
v, err := db.Rdb.HGet(db.Cxt, fmt.Sprintf(config.MultipleSiteDetailKey, sid), mid).Result()
if err != nil {
// 如果没有获取到对应值, 则直接continue
//log.Println("Get MultipleSiteDetail Failed: ", err)
return s
}
// 如果获取到数据则直接退出本次循环
_ = json.Unmarshal([]byte(v), &s)
return s
}
// SyncMovieDetail 同步redis中的影片数据到mysql中
func SyncMovieDetail(sid string, grade SourceGrade, mode int) {
// 初始化游标
@@ -749,17 +769,26 @@ func GetMultiplePlay(mIds []string, dbId int64) []SlaveMovieInfo {
continue
}
var s SlaveMovieInfo
// 优先使用dbID为key去redis中获取
if s = GetSlaveDetailInCache(c.Id, fmt.Sprintf("%d", dbId)); s.Mid != "" {
l = append(l, s)
continue
}
for _, mid := range mIds {
// 初始化临时变量 SlaveMovieInfo
v, err := db.Rdb.HGet(db.Cxt, fmt.Sprintf(config.MultipleSiteDetailKey, c.Id), mid).Result()
if err != nil {
// 如果没有获取到对应值, 则直接continue
continue
if s = GetSlaveDetailInCache(c.Id, mid); s.Mid != "" {
l = append(l, s)
break
}
// 如果获取到数据则直接退出本次循环
_ = json.Unmarshal([]byte(v), &s)
l = append(l, s)
break
//v, err := db.Rdb.HGet(db.Cxt, fmt.Sprintf(config.MultipleSiteDetailKey, c.Id), mid).Result()
//if err != nil {
// // 如果没有获取到对应值, 则直接continue
// continue
//}
//// 如果获取到数据则直接退出本次循环
//_ = json.Unmarshal([]byte(v), &s)
//l = append(l, s)
//break
}
// 如果迭代完s依旧为空,则去mysql中进行匹配
if s.Mid == "" {

View File

@@ -27,8 +27,8 @@ func InitMysql() (err error) {
//NameReplacer: strings.NewReplacer("spider_", ""), // 替表名和字段中的 Me 为 空
},
//Logger: logger.Default.LogMode(logger.Warn), //设置日志级别为Info
Logger: logger.Default.LogMode(logger.Info), //设置日志级别为Info
//Logger: logger.Default.LogMode(logger.Error), //设置日志级别为Info
//Logger: logger.Default.LogMode(logger.Info), //设置日志级别为Info
Logger: logger.Default.LogMode(logger.Error), //设置日志级别为Info
})
return
}