Просмотр исходного кода

修复接口,正在添加下载字幕后的抉择,以及解压问题

Signed-off-by: 716 <[email protected]>
716 4 лет назад
Родитель
Сommit
3d51ff91d9

+ 14 - 7
downloader.go

@@ -81,11 +81,16 @@ func (d Downloader) DownloadSub(dir string) error {
 	// 一个视频文件同时多个站点查询,阻塞完毕后,在进行下一个
 	for i, oneVideoFullPath := range nowVideoList {
 		d.downloadSub4OneVideo(oneVideoFullPath, suppliers, i)
+		// 字幕都下载缓存好了,需要抉择存哪一个,优先选择中文双语的,然后到中文
+		d.chooseAndSaveSubFile(oneVideoFullPath, suppliers)
 	}
-
 	return nil
 }
 
+func (d Downloader) chooseAndSaveSubFile(oneVideoFullPath string, suppliers []sub_supplier.ISupplier) {
+	// 判断下载的文件是什么,可能需要解压
+}
+
 // downloadSub4OneVideo 为这个视频下载字幕
 func (d Downloader) downloadSub4OneVideo(oneVideoFullPath string, suppliers []sub_supplier.ISupplier, i int) {
 	ontVideoRootPath := filepath.Dir(oneVideoFullPath)
@@ -115,7 +120,13 @@ func (d Downloader) downloadSub4OneSite(oneVideoFullPath string, i int, supplier
 	if err != nil {
 		return err
 	}
-
+	// 把后缀名给改好
+	for x, info := range subInfos {
+		tmpSubFileName := info.Name
+		if strings.Contains(tmpSubFileName, info.Ext) == false {
+			subInfos[x].Name = tmpSubFileName + info.Ext
+		}
+	}
 	if d.reqParam.DebugMode == true {
 		// 需要进行字幕文件的缓存
 		// 把缓存的文件夹新建出来
@@ -125,11 +136,7 @@ func (d Downloader) downloadSub4OneSite(oneVideoFullPath string, i int, supplier
 			return err
 		}
 		for x, info := range subInfos {
-			tmpSubFileName := info.Name
-			if strings.Contains(tmpSubFileName, info.Ext) == false {
-				tmpSubFileName = tmpSubFileName + info.Ext
-			}
-			desSubFileFullPath := path.Join(desFolderFullPath, supplier.GetSupplierName() + "_" + strconv.Itoa(x)+"_"+tmpSubFileName)
+			desSubFileFullPath := path.Join(desFolderFullPath, supplier.GetSupplierName() + "_" + strconv.Itoa(x)+"_"+info.Name)
 			err = utils.OutputFile(desSubFileFullPath, info.Data)
 			if err != nil {
 				return err

+ 8 - 3
sub_parser/ass/ass.go

@@ -16,8 +16,8 @@ func NewParser() *Parser {
 	return &Parser{}
 }
 
-// DetermineFileType 确定字幕文件的类型,是双语字幕或者某一种语言等等信息
-func (p Parser) DetermineFileType(filePath string) (*sub_parser.SubFileInfo, error) {
+// DetermineFileTypeFromFile 确定字幕文件的类型,是双语字幕或者某一种语言等等信息
+func (p Parser) DetermineFileTypeFromFile(filePath string) (*sub_parser.SubFileInfo, error) {
 	nowExt := filepath.Ext(filePath)
 	if strings.ToLower(nowExt) != common.SubExtASS && strings.ToLower(nowExt) != common.SubExtSSA {
 		return nil ,nil
@@ -26,7 +26,12 @@ func (p Parser) DetermineFileType(filePath string) (*sub_parser.SubFileInfo, err
 	if err != nil {
 		return nil ,err
 	}
-	allString :=string(fBytes)
+	return p.DetermineFileTypeFromBytes(fBytes, nowExt)
+}
+
+// DetermineFileTypeFromBytes 确定字幕文件的类型,是双语字幕或者某一种语言等等信息
+func (p Parser) DetermineFileTypeFromBytes(inBytes []byte, nowExt string) (*sub_parser.SubFileInfo, error){
+	allString :=string(inBytes)
 	// 注意,需要替换掉 \r 不然正则表达式会有问题
 	allString = strings.ReplaceAll(allString, "\r", "")
 	re := regexp.MustCompile(regString)

+ 1 - 1
sub_parser/ass/ass_test.go

@@ -8,7 +8,7 @@ func TestParser_DetermineFileType(t *testing.T) {
 
 	filePath := "C:\\Tmp\\saw9.ass"
 	parser := NewParser()
-	sfi, err := parser.DetermineFileType(filePath)
+	sfi, err := parser.DetermineFileTypeFromFile(filePath)
 	if err != nil {
 		t.Fatal(err)
 	}

+ 4 - 3
sub_parser/iSubParser.go

@@ -1,7 +1,8 @@
 package sub_parser
 
-import "github.com/allanpk716/ChineseSubFinder/common"
-
 type ISubParser interface {
-	DetermineFileType(filePath string) (common.Language, *SubFileInfo, error)
+
+	DetermineFileTypeFromFile(filePath string) (*SubFileInfo, error)
+
+	DetermineFileTypeFromBytes(inBytes []byte, nowExt string) (*SubFileInfo, error)
 }

+ 9 - 2
sub_parser/srt/srt.go

@@ -17,7 +17,8 @@ func NewParser() *Parser {
 	return &Parser{}
 }
 
-func (a Parser) DetermineFileType(filePath string) (*sub_parser.SubFileInfo, error) {
+// DetermineFileTypeFromFile 确定字幕文件的类型,是双语字幕或者某一种语言等等信息
+func (p Parser) DetermineFileTypeFromFile(filePath string) (*sub_parser.SubFileInfo, error) {
 	nowExt := filepath.Ext(filePath)
 	if strings.ToLower(nowExt) != common.SubExtSRT {
 		return nil ,nil
@@ -27,7 +28,13 @@ func (a Parser) DetermineFileType(filePath string) (*sub_parser.SubFileInfo, err
 		return nil ,err
 	}
 
-	allString := string(fBytes)
+	return p.DetermineFileTypeFromBytes(fBytes, nowExt)
+}
+
+// DetermineFileTypeFromBytes 确定字幕文件的类型,是双语字幕或者某一种语言等等信息
+func (p Parser) DetermineFileTypeFromBytes(inBytes []byte, nowExt string) (*sub_parser.SubFileInfo, error){
+
+	allString := string(inBytes)
 	// 注意,需要替换掉 \r 不然正则表达式会有问题
 	allString = strings.ReplaceAll(allString, "\r", "")
 	re := regexp.MustCompile(regString)

+ 1 - 1
sub_parser/srt/srt_test.go

@@ -7,7 +7,7 @@ import (
 func TestParser_DetermineFileType(t *testing.T) {
 	filePath := "C:\\Tmp\\saw9.srt"
 	parser := NewParser()
-	sfi, err := parser.DetermineFileType(filePath)
+	sfi, err := parser.DetermineFileTypeFromFile(filePath)
 	if err != nil {
 		t.Fatal(err)
 	}