@ -1,8 +1,11 @@
package keywordanalyse
package keywordanalyse
import (
import (
"main_program/common"
"main_program/config"
"main_program/config"
"main_program/entity"
service "main_program/service"
service "main_program/service"
"strings"
)
)
type keywordAnalyse struct { }
type keywordAnalyse struct { }
@ -11,10 +14,73 @@ var KeywordAnalyseService keywordAnalyse
func ( m * keywordAnalyse ) Start ( ) {
func ( m * keywordAnalyse ) Start ( ) {
config . Logger . Info ( "开始逐句解析..." )
config . Logger . Info ( "开始逐句解析..." )
videoId , err := service . SrtFileService . QueryOneNotScanVideoId ( )
var videoId string
var err error
// 获取需要解析的videoId
if common . AnalyseRegion == "" {
config . Logger . Info ( "直接获取VideoId" )
videoId , err = service . SrtFileService . QueryOneNotScanVideoId ( )
if err != nil {
config . Logger . Info ( "没有需要解析的SrtFile..." )
return
}
} else {
config . Logger . Info ( "通过common.AnalyseRegion获取VideoId" )
videoId , err = service . SrtFileService . QueryOneNotScanVideoIdByRegion ( common . AnalyseRegion )
if err != nil {
config . Logger . Info ( "没有需要解析的SrtFile..." )
return
}
}
config . Logger . Infof ( "需要解析的VideoId:%s" , videoId )
// 根据videoId获取channel
video , err := service . VideoService . QueryOneByVideoId ( videoId )
if err != nil {
config . Logger . Infof ( "获取video失败,videoId:%s" , videoId )
}
// 根据channelId获取channel
channel , err := service . ChannelService . QueryOneByChannelId ( video . ChannelId )
if err != nil {
config . Logger . Infof ( "获取Channel失败,channelId:%s" , video . ChannelId )
}
// 根据region获取关键字
keywords , err := service . KeywordService . QueryKeywordsByRegion ( channel . Region )
if err != nil {
if err != nil {
config . Logger . Info ( "没有需要解析的SrtFile..." )
config . Logger . Infof ( "获取keywords失败,region:%s" , channel . Region )
}
}
config . Logger . Infof ( "VideoId:%s" , videoId )
// 获取所有srtFile
srtFiles , err := service . SrtFileService . QuerySrtFilesByVideoId ( videoId )
if err != nil {
config . Logger . Infof ( "获取srtFiles失败,videoId:%s" , videoId )
}
for i := 0 ; i < len ( srtFiles ) ; i ++ {
analyse ( srtFiles [ i ] , keywords )
}
}
func analyse ( srtFile entity . Srtfile , keywords [ ] entity . Keyword ) {
for i := 0 ; i < len ( keywords ) ; i ++ {
keyword := keywords [ i ]
if strings . Contains ( srtFile . SrtText , keyword . Word ) {
config . Logger . Infof ( "srtFileId: %d Ordinal: %d text: %s word: %s" , srtFile . Id , srtFile . Ordinal , srtFile . SrtText , keyword . Word )
// 匹配完成后,输入到result
wordResultSet := entity . WorldResultSet { KeyWordId : 1 , WordText : "1" , SrtId : 1 ,
SrtOrdinal : 1 , SrtText : "srtFile.SrtText" , VideoId : "srtFile.VideoId" }
err := service . WordResultSetService . InsterOneByEntity ( wordResultSet )
if err != nil {
config . Logger . Error ( "存储解析结果失败..." )
return
}
}
}
// 修改srtFile状态
err := service . SrtFileService . UpdateIsScanById ( int ( srtFile . Id ) , 1 )
if err != nil {
config . Logger . Error ( "更新srtFile失败" )
}
}
}