Skip to content

Commit

Permalink
调整代码细节
Browse files Browse the repository at this point in the history
Signed-off-by: allan716 <525223688@qq.com>
  • Loading branch information
allanpk716 committed Aug 31, 2022
1 parent c920da1 commit 0672325
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 29 deletions.
4 changes: 2 additions & 2 deletions pkg/decode/decode.go
Original file line number Diff line number Diff line change
Expand Up @@ -332,8 +332,8 @@ func GetVideoNfoInfo4SeriesDir(seriesDir string) (types.VideoNfoInfo, error) {
return getVideoNfoInfo(nfoFilePath, "tvshow")
}

// GetSeriesSeasonVideoNfoInfoFromEpisode 从一集获取这个 Series 的 IMDB info
func GetSeriesSeasonVideoNfoInfoFromEpisode(oneEpFPath string) (types.VideoNfoInfo, error) {
// GetVideoNfoInfoFromEpisode 从一集获取这个 Series 的 IMDB info
func GetVideoNfoInfoFromEpisode(oneEpFPath string) (types.VideoNfoInfo, error) {

// 当前季的路径
EPdir := filepath.Dir(oneEpFPath)
Expand Down
44 changes: 22 additions & 22 deletions pkg/imdb_helper/imdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,31 +29,31 @@ func GetIMDBInfoFromVideoFile(log *logrus.Logger, videoFPath string, isMovie boo
getReady(log, _proxySettings)

var err error
var imdbInfo4Video types.VideoNfoInfo
var videoNfoInfo types.VideoNfoInfo
if isMovie == true {
imdbInfo4Video, err = decode.GetVideoNfoInfo4Movie(videoFPath)
videoNfoInfo, err = decode.GetVideoNfoInfo4Movie(videoFPath)
} else {
imdbInfo4Video, err = decode.GetSeriesSeasonVideoNfoInfoFromEpisode(videoFPath)
videoNfoInfo, err = decode.GetVideoNfoInfoFromEpisode(videoFPath)
}
if err != nil {
// 如果找不到当前电影的 IMDB Info 本地文件,那么就跳过
log.Warningln("getSubListFromFile", videoFPath, err)
return nil, err
}
imdbInfo, err := GetIMDBInfoFromVideoNfoInfo(log, imdbInfo4Video, _proxySettings)
imdbInfo, err := GetIMDBInfoFromVideoNfoInfo(log, videoNfoInfo, _proxySettings)
if err != nil {
log.Warningln("GetIMDBInfoFromVideoNfoInfo", videoFPath, err)
return nil, err
}
if len(imdbInfo.Description) <= 0 {
// 需要去外网获去补全信息,然后更新本地的信息
if imdbInfo.IMDBID != "" && imdbInfo4Video.ImdbId == "" {
if imdbInfo.IMDBID != "" && videoNfoInfo.ImdbId == "" {
// 可能本地没有获取到 IMDB ID 信息,那么从上面的 GetIMDBInfoFromVideoNfoInfo 可以从 TMDB ID 获取到 IMDB ID,那么需要传递下去
imdbInfo4Video.ImdbId = imdbInfo.IMDBID
videoNfoInfo.ImdbId = imdbInfo.IMDBID
}
t, err := getVideoInfoFromIMDBWeb(imdbInfo4Video, _proxySettings)
t, err := getVideoInfoFromIMDBWeb(videoNfoInfo, _proxySettings)
if err != nil {
log.Errorln("getVideoInfoFromIMDBWeb,", imdbInfo4Video.Title, err)
log.Errorln("getVideoInfoFromIMDBWeb,", videoNfoInfo.Title, err)
return nil, err
}
imdbInfo.Year = t.Year
Expand All @@ -68,7 +68,7 @@ func GetIMDBInfoFromVideoFile(log *logrus.Logger, videoFPath string, isMovie boo
}

// GetIMDBInfoFromVideoNfoInfo 从本地获取 IMDB 信息,注意,如果需要跳过,那么返回 Error == common.SkipCreateInDB
func GetIMDBInfoFromVideoNfoInfo(log *logrus.Logger, imdbInfo types.VideoNfoInfo, _proxySettings *settings.ProxySettings) (*models.IMDBInfo, error) {
func GetIMDBInfoFromVideoNfoInfo(log *logrus.Logger, videoNfoInfo types.VideoNfoInfo, _proxySettings *settings.ProxySettings) (*models.IMDBInfo, error) {

getReady(log, _proxySettings)
/*
Expand All @@ -81,25 +81,25 @@ func GetIMDBInfoFromVideoNfoInfo(log *logrus.Logger, imdbInfo types.VideoNfoInfo
3. 因为现在默认是不跳过中文视频扫描的,所以如果开启后,则会再判断的时候访问外网获取,然后写入本地,过程会比较慢
4. 同时,再发送字幕和 IMDB Info 到服务器的时候,也需要判断是否 IMDB Info 信息是否齐全,否则就需要从外网获取齐全后再上传
*/
log.Debugln("GetIMDBInfoFromVideoNfoInfo", "IMDBID:", imdbInfo.ImdbId, "TMDBID:", imdbInfo.TmdbId, imdbInfo.Title, imdbInfo.Season, imdbInfo.Episode)
log.Debugln("GetIMDBInfoFromVideoNfoInfo", "IMDBID:", videoNfoInfo.ImdbId, "TMDBID:", videoNfoInfo.TmdbId, videoNfoInfo.Title, videoNfoInfo.Season, videoNfoInfo.Episode)
log.Debugln("GetIMDBInfoFromVideoNfoInfo", 0)

if imdbInfo.ImdbId != "" {
if videoNfoInfo.ImdbId != "" {
// 优先从 IMDB ID 去查找本地的信息
// 首先从数据库中查找是否存在这个 IMDB 信息,如果不存在再使用 Web 查找,且写入数据库
var imdbInfos []models.IMDBInfo
// 把嵌套关联的 has many 的信息都查询出来
dao.GetDb().
Preload("VideoSubInfos").
Limit(1).Where(&models.IMDBInfo{IMDBID: imdbInfo.ImdbId}).Find(&imdbInfos)
Limit(1).Where(&models.IMDBInfo{IMDBID: videoNfoInfo.ImdbId}).Find(&imdbInfos)

log.Debugln("GetIMDBInfoFromVideoNfoInfo", 1)

if len(imdbInfos) <= 0 {
// 没有找到,新增,存储本地,但是信息肯定是不完整的,需要在判断是否是中文的时候再次去外网获取补全信息
log.Debugln("GetIMDBInfoFromVideoNfoInfo", 2)
// 存入数据库
nowIMDBInfo := models.NewIMDBInfo(imdbInfo.ImdbId, "", 0, "", []string{}, []string{})
nowIMDBInfo := models.NewIMDBInfo(videoNfoInfo.ImdbId, "", 0, "", []string{}, []string{})
dao.GetDb().Create(nowIMDBInfo)

log.Debugln("GetIMDBInfoFromVideoNfoInfo", 3)
Expand All @@ -111,21 +111,21 @@ func GetIMDBInfoFromVideoNfoInfo(log *logrus.Logger, imdbInfo types.VideoNfoInfo
// 找到
return &imdbInfos[0], nil
}
} else if imdbInfo.TmdbId != "" {
} else if videoNfoInfo.TmdbId != "" {
// 如果 IMDB ID 在本地没有获取到,但是 TMDB ID 获取到了,那么就从 Web 去查询 IMDB ID 出来
var imdbInfos []models.IMDBInfo
// 把嵌套关联的 has many 的信息都查询出来
dao.GetDb().
Preload("VideoSubInfos").
Limit(1).Where(&models.IMDBInfo{TmdbId: imdbInfo.TmdbId}).Find(&imdbInfos)
Limit(1).Where(&models.IMDBInfo{TmdbId: videoNfoInfo.TmdbId}).Find(&imdbInfos)

log.Debugln("GetIMDBInfoFromVideoNfoInfo", 1)

if len(imdbInfos) <= 0 {
// 没有找到那么就从 Web 端获取 imdb id 信息
} else if len(imdbInfos) > 1 {
// 如果找到多个,那么就应该删除这些,因为这些都是重复的,然后再次从 Web 去获取 imdb id 信息
dao.GetDb().Where(&models.IMDBInfo{TmdbId: imdbInfo.TmdbId}).Delete(&models.IMDBInfo{})
dao.GetDb().Where(&models.IMDBInfo{TmdbId: videoNfoInfo.TmdbId}).Delete(&models.IMDBInfo{})
} else {
log.Debugln("GetIMDBInfoFromVideoNfoInfo", 4)
// 找到
Expand All @@ -134,13 +134,13 @@ func GetIMDBInfoFromVideoNfoInfo(log *logrus.Logger, imdbInfo types.VideoNfoInfo
// 确定需要从 Web 端获取 imdb id 信息
log.Debugln("GetIMDBInfoFromVideoNfoInfo", 2)
videoType := ""
if imdbInfo.IsMovie == true {
if videoNfoInfo.IsMovie == true {
videoType = "movie"
} else {
videoType = "series"
}
// 联网查询
idConvertReply, err := subtitleBestApi.ConvertId(imdbInfo.TmdbId, "tmdb", videoType)
idConvertReply, err := subtitleBestApi.ConvertId(videoNfoInfo.TmdbId, "tmdb", videoType)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -213,22 +213,22 @@ func IsChineseVideo(log *logrus.Logger, imdbInfo types.VideoNfoInfo, _proxySetti
}

// getVideoInfoFromIMDBWeb 从 IMDB 网站 ID 查询影片的信息
func getVideoInfoFromIMDBWeb(imdbInfo types.VideoNfoInfo, _proxySettings ...*settings.ProxySettings) (*imdb.Title, error) {
func getVideoInfoFromIMDBWeb(videoNfoInfo types.VideoNfoInfo, _proxySettings ...*settings.ProxySettings) (*imdb.Title, error) {

client, err := my_util.NewHttpClient(_proxySettings...)
if err != nil {
return nil, err
}

t, err := imdb.NewTitle(client.GetClient(), imdbInfo.ImdbId)
t, err := imdb.NewTitle(client.GetClient(), videoNfoInfo.ImdbId)
if err != nil {
notify_center.Notify.Add("imdb model - imdb.NewTitle :", err.Error())
return nil, err
}
if t.Year == 0 {
// IMDB 信息获取的库(1.0.7),目前有bug,比如,tt6856242 年份为 0
if imdbInfo.Year != "" {
year, err := strconv.Atoi(imdbInfo.Year)
if videoNfoInfo.Year != "" {
year, err := strconv.Atoi(videoNfoInfo.Year)
if err != nil {
return nil, err
}
Expand Down
8 changes: 4 additions & 4 deletions pkg/mix_media_info/mix_media_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ func getMediaInfoEx(log *logrus.Logger, SubtitleBestApi *subtitle_best_api.Subti
return nil, err
}
if mediaInfoReply.Status == 2 {
// 说明进入了查询队列,可以等 20s 以上再次查询
log.Infoln("query queue, sleep 20s")
time.Sleep(20 * time.Second)
// 说明进入了查询队列,可以等 30s 以上再次查询
log.Infoln("query queue, sleep 30s")
time.Sleep(30 * time.Second)

} else if mediaInfoReply.Status == 1 {

Expand Down Expand Up @@ -111,7 +111,7 @@ func GetMediaInfoAndSave(log *logrus.Logger, SubtitleBestApi *subtitle_best_api.
return nil, err
}
if mediaInfo == nil {
// 超过 5次 20s 等待都没有查询到,返回错误
// 超过 9次 30s 等待都没有查询到,返回错误
return nil, errors.New("can't get media info from subtitle.best api")
}
// 更新 ID
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1265,7 +1265,7 @@ func (v *VideoScanAndRefreshHelper) filterMovieAndSeriesNeedDownloadEmby(emby *E
mixInfo.VideoInfo.Id,
)

info, err := decode.GetSeriesSeasonVideoNfoInfoFromEpisode(mixInfo.PhysicalVideoFileFullPath)
info, err := decode.GetVideoNfoInfoFromEpisode(mixInfo.PhysicalVideoFileFullPath)
if err != nil {
v.log.Warningln("filterMovieAndSeriesNeedDownloadEmby.Series.GetVideoInfoFromFileFullPath", err)
continue
Expand Down

0 comments on commit 0672325

Please sign in to comment.