Browse Source

修复,当电视剧的imdb语言信息为mandarin时判断为非中文电视剧。同时修复电影相关判断。 fix #47

allan716 4 years ago
parent
commit
6800dafecb

+ 6 - 3
internal/logic/movie_helper/moviehelper.go

@@ -105,7 +105,9 @@ func MovieHasChineseSub(videoFilePath string) (bool, []string, []string, error)
 	return bFoundChineseSub, chineseSubFullPathList, chineseSubFitVideoNameFullPathList, nil
 }
 
+// SkipChineseMovie 跳过中文的电影
 func SkipChineseMovie(videoFullPath string, _reqParam ...types.ReqParam) (bool, error) {
+
 	var reqParam types.ReqParam
 	if len(_reqParam) > 0 {
 		reqParam = _reqParam[0]
@@ -114,15 +116,16 @@ func SkipChineseMovie(videoFullPath string, _reqParam ...types.ReqParam) (bool,
 	if err != nil {
 		return false, err
 	}
-	t, err := imdb_helper.GetVideoInfoFromIMDB(imdbInfo.ImdbId, reqParam)
+	isChineseVideo, _, err := imdb_helper.IsChineseVideo(imdbInfo.ImdbId, reqParam)
 	if err != nil {
 		return false, err
 	}
-	if len(t.Languages) > 0 && strings.ToLower(t.Languages[0]) == "chinese" {
+	if isChineseVideo == true {
 		log_helper.GetLogger().Infoln("Skip", videoFullPath, "Sub Download, because movie is Chinese")
 		return true, nil
+	} else {
+		return false, nil
 	}
-	return false, nil
 }
 
 func MovieNeedDlSub(videoFullPath string) (bool, error) {

+ 5 - 3
internal/logic/series_helper/seriesHelper.go

@@ -132,15 +132,17 @@ func SkipChineseSeries(seriesRootPath string, _reqParam ...types.ReqParam) (bool
 	if err != nil {
 		return false, nil, err
 	}
-	t, err := imdb_helper.GetVideoInfoFromIMDB(imdbInfo.ImdbId, reqParam)
+
+	isChineseVideo, t, err := imdb_helper.IsChineseVideo(imdbInfo.ImdbId, reqParam)
 	if err != nil {
 		return false, nil, err
 	}
-	if len(t.Languages) > 0 && strings.ToLower(t.Languages[0]) == "chinese" {
+	if isChineseVideo == true {
 		log_helper.GetLogger().Infoln("Skip", filepath.Base(seriesRootPath), "Sub Download, because series is Chinese")
 		return true, t, nil
+	} else {
+		return false, t, nil
 	}
-	return false, t, nil
 }
 
 // OneSeriesDlSubInAllSite 一部连续剧在所有的网站下载相应的字幕

+ 30 - 0
internal/pkg/imdb_helper/imdb.go

@@ -5,6 +5,7 @@ import (
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/notify_center"
 	"github.com/allanpk716/ChineseSubFinder/internal/types"
+	"strings"
 )
 
 // GetVideoInfoFromIMDB 从 IMDB ID 查询影片的信息
@@ -21,3 +22,32 @@ func GetVideoInfoFromIMDB(imdbID string, _reqParam ...types.ReqParam) (*imdb.Tit
 
 	return t, nil
 }
+
+// IsChineseVideo 从 imdbID 去查询判断是否是中文视频
+func IsChineseVideo(imdbID string, _reqParam ...types.ReqParam) (bool, *imdb.Title, error) {
+
+	const chName0 = "chinese"
+	const chName1 = "mandarin"
+
+	var reqParam types.ReqParam
+	if len(_reqParam) > 0 {
+		reqParam = _reqParam[0]
+	}
+
+	t, err := GetVideoInfoFromIMDB(imdbID, reqParam)
+	if err != nil {
+		return false, nil, err
+	}
+
+	if len(t.Languages) <= 0 {
+		return false, nil, nil
+	}
+	firstLangLowCase := strings.ToLower(t.Languages[0])
+	// 判断第一语言是否是中文
+	switch firstLangLowCase {
+	case chName0, chName1:
+		return true, t, nil
+	default:
+		return false, t, nil
+	}
+}

+ 44 - 2
internal/pkg/imdb_helper/imdb_test.go

@@ -1,16 +1,58 @@
 package imdb_helper
 
-import "testing"
+import (
+	"github.com/allanpk716/ChineseSubFinder/internal/types"
+	"testing"
+)
 
 func TestGetVideoInfoFromIMDB(t *testing.T) {
 	//imdbID := "tt12708542" // 星球大战:残次品
-	imdbID := "tt7016936" // 杀死伊芙
+	//imdbID := "tt7016936" // 杀死伊芙
 	//imdbID := "tt2990738" 	// 恐怖直播
 	//imdbID := "tt3032476" 	// 风骚律师
 	//imdbID := "tt6468322" 	// 纸钞屋
+	imdbID := "tt15299712" // 云南虫谷
 	imdbInfo, err := GetVideoInfoFromIMDB(imdbID)
 	if err != nil {
 		t.Fatal(err)
 	}
 	println(imdbInfo.Name, imdbInfo.Year, imdbInfo.ID)
 }
+
+func TestIsChineseVideo(t *testing.T) {
+	type args struct {
+		imdbID    string
+		_reqParam []types.ReqParam
+	}
+	tests := []struct {
+		name    string
+		args    args
+		want    bool
+		wantErr bool
+	}{
+		{name: "杀死伊芙", args: args{
+			imdbID: "tt7016936",
+		}, want: false, wantErr: false,
+		},
+		{name: "云南虫谷", args: args{
+			imdbID: "tt15299712",
+		}, want: true, wantErr: false,
+		},
+		{name: "扫黑风暴", args: args{
+			imdbID: "tt15199554",
+		}, want: true, wantErr: false,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			got, _, err := IsChineseVideo(tt.args.imdbID, tt.args._reqParam...)
+			if (err != nil) != tt.wantErr {
+				t.Errorf("IsChineseVideo() error = %v, wantErr %v", err, tt.wantErr)
+				return
+			}
+			if got != tt.want {
+				t.Errorf("IsChineseVideo() got = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}