| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 | 
							- package sub_timeline_fixer
 
- import (
 
- 	"fmt"
 
- 	"path/filepath"
 
- 	"testing"
 
- 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/log_helper"
 
- 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/logic/sub_parser/ass"
 
- 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/logic/sub_parser/srt"
 
- 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_parser_hub"
 
- 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/unit_test_helper"
 
- 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/vad"
 
- )
 
- func TestPipeline_getFramerateRatios2Try(t *testing.T) {
 
- 	outList := NewPipeline(DefaultMaxOffsetSeconds).getFramerateRatios2Try()
 
- 	for i, value := range outList {
 
- 		println(i, fmt.Sprintf("%v", value))
 
- 	}
 
- }
 
- func TestPipeline_FitGSS(t *testing.T) {
 
- 	log := log_helper.GetLogger4Tester()
 
- 	dirRoot := unit_test_helper.GetTestDataResourceRootPath([]string{"sub_timeline_fixer"}, 4, true)
 
- 	dirRoot = filepath.Join(dirRoot, "mix")
 
- 	subParserHub := sub_parser_hub.NewSubParserHub(log, ass.NewParser(log), srt.NewParser(log))
 
- 	type args struct {
 
- 		baseSubFile      string
 
- 		ffsubSyncSubFile string
 
- 		srcSubFile       string
 
- 		srcFixedSubFile  string
 
- 	}
 
- 	tests := []struct {
 
- 		name    string
 
- 		args    args
 
- 		want    float64
 
- 		wantErr bool
 
- 	}{
 
- 		{name: "BL S01E03", args: args{
 
- 			baseSubFile:      filepath.Join(dirRoot, "BL - S01E03", "英_2.ass"),
 
- 			ffsubSyncSubFile: filepath.Join(dirRoot, "BL - S01E03", "ffsubsync.ass"),
 
- 			srcSubFile:       filepath.Join(dirRoot, "BL - S01E03", "org.ass"),
 
- 			srcFixedSubFile:  filepath.Join(dirRoot, "BL - S01E03", "org-fix.ass"),
 
- 		}, want: -4.290000, wantErr: false},
 
- 		{name: "Rick and Morty - S05E01", args: args{
 
- 			baseSubFile:      filepath.Join(dirRoot, "Rick and Morty - S05E01", "英_2.ass"),
 
- 			ffsubSyncSubFile: filepath.Join(dirRoot, "Rick and Morty - S05E01", "ffsubsync.ass"),
 
- 			srcSubFile:       filepath.Join(dirRoot, "Rick and Morty - S05E01", "org.ass"),
 
- 			srcFixedSubFile:  filepath.Join(dirRoot, "Rick and Morty - S05E01", "org-fix.ass"),
 
- 		}, want: -6.170000, wantErr: false},
 
- 		{name: "Rick and Morty - S05E10", args: args{
 
- 			baseSubFile:      filepath.Join(dirRoot, "Rick and Morty - S05E10", "英_2.ass"),
 
- 			ffsubSyncSubFile: filepath.Join(dirRoot, "Rick and Morty - S05E10", "ffsubsync.ass"),
 
- 			srcSubFile:       filepath.Join(dirRoot, "Rick and Morty - S05E10", "org.ass"),
 
- 			srcFixedSubFile:  filepath.Join(dirRoot, "Rick and Morty - S05E10", "org-fix.ass"),
 
- 		}, want: -6.020000, wantErr: false},
 
- 		{name: "Foundation - S01E09", args: args{
 
- 			baseSubFile:      filepath.Join(dirRoot, "Foundation - S01E09", "英_2.ass"),
 
- 			ffsubSyncSubFile: filepath.Join(dirRoot, "Foundation - S01E09", "ffsubsync.ass"),
 
- 			srcSubFile:       filepath.Join(dirRoot, "Foundation - S01E09", "org.ass"),
 
- 			srcFixedSubFile:  filepath.Join(dirRoot, "Foundation - S01E09", "org-fix.ass"),
 
- 		}, want: -29.890000, wantErr: false},
 
- 		{name: "Yellowstone S04E05", args: args{
 
- 			baseSubFile:      filepath.Join(dirRoot, "Yellowstone S04E05", "英_2.ass"),
 
- 			ffsubSyncSubFile: filepath.Join(dirRoot, "Yellowstone S04E05", "ffsubsync.ass"),
 
- 			srcSubFile:       filepath.Join(dirRoot, "Yellowstone S04E05", "org.ass"),
 
- 			srcFixedSubFile:  filepath.Join(dirRoot, "Yellowstone S04E05", "org-fix.ass"),
 
- 		}, want: -62.84, wantErr: false},
 
- 		//{name: "Yellowstone S04E06", args: args{
 
- 		//	baseSubFile:      filepath.Join(dirRoot, "Yellowstone S04E06", "英_2.ass"),
 
- 		//	ffsubSyncSubFile: filepath.Join(dirRoot, "Yellowstone S04E06", "ffsubsync.ass"),
 
- 		//	srcSubFile:       filepath.Join(dirRoot, "Yellowstone S04E06", "org.ass"),
 
- 		//	srcFixedSubFile:  filepath.Join(dirRoot, "Yellowstone S04E06", "org-fix.ass"),
 
- 		//}, want: -62.84, wantErr: false},
 
- 	}
 
- 	for _, tt := range tests {
 
- 		t.Run(tt.name, func(t *testing.T) {
 
- 			bFind, infoBase, err := subParserHub.DetermineFileTypeFromFile(tt.args.baseSubFile)
 
- 			if err != nil {
 
- 				t.Fatal(err)
 
- 			}
 
- 			if bFind == false {
 
- 				t.Fatal("sub not match")
 
- 			}
 
- 			bFind, infoSrc, err := subParserHub.DetermineFileTypeFromFile(tt.args.srcSubFile)
 
- 			if err != nil {
 
- 				t.Fatal(err)
 
- 			}
 
- 			if bFind == false {
 
- 				t.Fatal("sub not match")
 
- 			}
 
- 			// ---------------------------------------------------------------------------------------
 
- 			p := NewPipeline(DefaultMaxOffsetSeconds)
 
- 			pipeResult, err := p.CalcOffsetTime(infoBase, infoSrc, nil, false)
 
- 			if (err != nil) != tt.wantErr {
 
- 				t.Errorf("FitGSS() error = %v, wantErr %v", err, tt.wantErr)
 
- 				return
 
- 			}
 
- 			if pipeResult.GetOffsetTime() != tt.want {
 
- 				t.Errorf("FitGSS() offsetTome = %v, want %v", pipeResult.GetOffsetTime(), tt.want)
 
- 			}
 
- 			_, err = p.FixSubFileTimeline(infoSrc, pipeResult.ScaledFileInfo,
 
- 				pipeResult.GetOffsetTime(),
 
- 				tt.args.srcFixedSubFile)
 
- 			println(fmt.Sprintf("Offset: %f, Score: %f, Scale:%f",
 
- 				pipeResult.GetOffsetTime(),
 
- 				pipeResult.Score,
 
- 				pipeResult.ScaleFactor))
 
- 		})
 
- 	}
 
- }
 
- func TestPipeline_FitGSSByAudio(t *testing.T) {
 
- 	dirRoot := unit_test_helper.GetTestDataResourceRootPath([]string{"sub_timeline_fixer"}, 4, true)
 
- 	dirRoot = filepath.Join(dirRoot, "mix")
 
- 	log := log_helper.GetLogger4Tester()
 
- 	subParserHub := sub_parser_hub.NewSubParserHub(log, ass.NewParser(log), srt.NewParser(log))
 
- 	type args struct {
 
- 		audioInfo       vad.AudioInfo
 
- 		subFilePath     string
 
- 		srcFixedSubFile string
 
- 	}
 
- 	tests := []struct {
 
- 		name    string
 
- 		args    args
 
- 		want    bool
 
- 		want1   float64
 
- 		want2   float64
 
- 		wantErr bool
 
- 	}{
 
- 		// Rick and Morty - S05E01
 
- 		{name: "Rick and Morty - S05E01 -- 0",
 
- 			args: args{
 
- 				audioInfo: vad.AudioInfo{
 
- 					FileFullPath: filepath.Join(dirRoot, "Rick and Morty - S05E01", "未知语言_1.pcm"),
 
- 				},
 
- 				subFilePath:     filepath.Join(dirRoot, "Rick and Morty - S05E01", "英_2.ass"),
 
- 				srcFixedSubFile: filepath.Join(dirRoot, "Rick and Morty - S05E01", "org-fix.ass")},
 
- 			want: true, want1: 0.33,
 
- 		},
 
- 		// Rick and Morty - S05E01
 
- 		{name: "Rick and Morty - S05E01 -- 1",
 
- 			args: args{
 
- 				audioInfo: vad.AudioInfo{
 
- 					FileFullPath: filepath.Join(dirRoot, "Rick and Morty - S05E01", "未知语言_1.pcm"),
 
- 				},
 
- 				subFilePath:     filepath.Join(dirRoot, "Rick and Morty - S05E01", "org.ass"),
 
- 				srcFixedSubFile: filepath.Join(dirRoot, "Rick and Morty - S05E01", "org-fix.ass")},
 
- 			want: true, want1: -6.1,
 
- 		},
 
- 	}
 
- 	for _, tt := range tests {
 
- 		t.Run(tt.name, func(t *testing.T) {
 
- 			audioVADInfos, err := vad.GetVADInfoFromAudio(vad.AudioInfo{
 
- 				FileFullPath: tt.args.audioInfo.FileFullPath,
 
- 				SampleRate:   16000,
 
- 				BitDepth:     16,
 
- 			}, true)
 
- 			if err != nil {
 
- 				t.Fatal(err)
 
- 			}
 
- 			bFind, infoSrc, err := subParserHub.DetermineFileTypeFromFile(tt.args.subFilePath)
 
- 			if err != nil {
 
- 				t.Fatal(err)
 
- 			}
 
- 			if bFind == false {
 
- 				t.Fatal("sub not match")
 
- 			}
 
- 			// ---------------------------------------------------------------------------------------
 
- 			p := NewPipeline(DefaultMaxOffsetSeconds)
 
- 			pipeResult, err := p.CalcOffsetTime(nil, infoSrc, audioVADInfos, false)
 
- 			if (err != nil) != tt.wantErr {
 
- 				t.Errorf("FitGSS() error = %v, wantErr %v", err, tt.wantErr)
 
- 				return
 
- 			}
 
- 			if pipeResult.GetOffsetTime() != tt.want1 {
 
- 				t.Errorf("FitGSS() offsetTome = %v, want1 %v", pipeResult.GetOffsetTime(), tt.want1)
 
- 			}
 
- 			_, err = p.FixSubFileTimeline(infoSrc, pipeResult.ScaledFileInfo,
 
- 				pipeResult.GetOffsetTime(),
 
- 				tt.args.srcFixedSubFile)
 
- 			println(fmt.Sprintf("Offset: %f, Score: %f, Scale:%f",
 
- 				pipeResult.GetOffsetTime(),
 
- 				pipeResult.Score,
 
- 				pipeResult.ScaleFactor))
 
- 		})
 
- 	}
 
- }
 
 
  |