old.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package old
  2. import (
  3. "path/filepath"
  4. "strings"
  5. "github.com/allanpk716/ChineseSubFinder/pkg/types/common"
  6. language2 "github.com/allanpk716/ChineseSubFinder/pkg/types/language"
  7. "github.com/allanpk716/ChineseSubFinder/pkg/types/subparser"
  8. )
  9. /*
  10. 整个是早期版本使用的字幕命名格式,现在已经弃用,通过 HotFix01 进行调整过。
  11. 后续是无需关心的
  12. */
  13. // IsOldVersionSubPrefixName 是否是老版本的字幕命名 .chs_en[shooter] ,符合也返回这个部分+字幕格式后缀名 .chs_en[shooter].ass, 修改后的名称
  14. func IsOldVersionSubPrefixName(subFileName string) (bool, string, string) {
  15. /*
  16. {
  17. name: "chs_en[shooter]", args: args{
  18. subFileName: "Loki - S01E01 - Glorious Purpose WEBDL-1080p Proper.chs_en[shooter].ass"},
  19. want: true,
  20. want1: ".chs_en[shooter].ass",
  21. want2: "Loki - S01E01 - Glorious Purpose WEBDL-1080p Proper.chinese(简英,shooter).ass"
  22. },
  23. 传入的必须是字幕格式的文件,这个就再之前判断,不要在这里再判断
  24. 传入的文件名可能有一下几种情况
  25. 无罪之最 - S01E01 - 重建生活.chs[shooter].ass
  26. 无罪之最 - S01E03 - 初见端倪.zh.srt
  27. Loki - S01E01 - Glorious Purpose WEBDL-1080p Proper.chs_en.ass
  28. 那么就需要先剔除,字幕的格式后缀名,然后再向后取后缀名就是 .chs[shooter] or .zh
  29. 再判断即可
  30. */
  31. // 无罪之最 - S01E01 - 重建生活.chs[shooter].ass -> 无罪之最 - S01E01 - 重建生活.chs[shooter]
  32. subTypeExt := filepath.Ext(subFileName)
  33. subFileNameWithOutExt := strings.ReplaceAll(subFileName, subTypeExt, "")
  34. // .chs[shooter]
  35. nowExt := filepath.Ext(subFileNameWithOutExt)
  36. // .chs_en[shooter].ass
  37. orgMixExt := nowExt + subTypeExt
  38. orgFileNameWithOutOrgMixExt := strings.ReplaceAll(subFileName, orgMixExt, "")
  39. // 这里也有两种情况,一种是单字幕 SaveMultiSub: false
  40. // 一种的保存了多字幕 SaveMultiSub: true
  41. // 先判断 单字幕
  42. switch nowExt {
  43. case language2.Emby_chs:
  44. return true, orgMixExt, makeMixSubExtString(orgFileNameWithOutOrgMixExt, language2.MatchLangChs, subTypeExt, "", true)
  45. case language2.Emby_cht:
  46. return true, orgMixExt, makeMixSubExtString(orgFileNameWithOutOrgMixExt, language2.MatchLangCht, subTypeExt, "", false)
  47. case language2.Emby_chs_en:
  48. return true, orgMixExt, makeMixSubExtString(orgFileNameWithOutOrgMixExt, language2.MatchLangChsEn, subTypeExt, "", true)
  49. case language2.Emby_cht_en:
  50. return true, orgMixExt, makeMixSubExtString(orgFileNameWithOutOrgMixExt, language2.MatchLangChtEn, subTypeExt, "", false)
  51. case language2.Emby_chs_jp:
  52. return true, orgMixExt, makeMixSubExtString(orgFileNameWithOutOrgMixExt, language2.MatchLangChsJp, subTypeExt, "", true)
  53. case language2.Emby_cht_jp:
  54. return true, orgMixExt, makeMixSubExtString(orgFileNameWithOutOrgMixExt, language2.MatchLangChtJp, subTypeExt, "", false)
  55. case language2.Emby_chs_kr:
  56. return true, orgMixExt, makeMixSubExtString(orgFileNameWithOutOrgMixExt, language2.MatchLangChsKr, subTypeExt, "", true)
  57. case language2.Emby_cht_kr:
  58. return true, orgMixExt, makeMixSubExtString(orgFileNameWithOutOrgMixExt, language2.MatchLangChtKr, subTypeExt, "", false)
  59. }
  60. // 再判断 多字幕情况
  61. spStrings := strings.Split(nowExt, "[")
  62. if len(spStrings) != 2 {
  63. return false, "", ""
  64. }
  65. // 分两段来判断是否符合标准
  66. // 第一段
  67. firstOk := true
  68. lang := language2.MatchLangChs
  69. site := ""
  70. switch spStrings[0] {
  71. case language2.Emby_chs:
  72. lang = language2.MatchLangChs
  73. case language2.Emby_cht:
  74. lang = language2.MatchLangCht
  75. case language2.Emby_chs_en:
  76. lang = language2.MatchLangChsEn
  77. case language2.Emby_cht_en:
  78. lang = language2.MatchLangChtEn
  79. case language2.Emby_chs_jp:
  80. lang = language2.MatchLangChsJp
  81. case language2.Emby_cht_jp:
  82. lang = language2.MatchLangChtJp
  83. case language2.Emby_chs_kr:
  84. lang = language2.MatchLangChsKr
  85. case language2.Emby_cht_kr:
  86. lang = language2.MatchLangChtKr
  87. default:
  88. firstOk = false
  89. }
  90. // 第二段
  91. secondOk := true
  92. tmpSecond := strings.ReplaceAll(spStrings[1], "]", "")
  93. switch tmpSecond {
  94. case common.SubSiteZiMuKu:
  95. site = common.SubSiteZiMuKu
  96. case common.SubSiteSubHd:
  97. site = common.SubSiteSubHd
  98. case common.SubSiteShooter:
  99. site = common.SubSiteShooter
  100. case common.SubSiteXunLei:
  101. site = common.SubSiteXunLei
  102. default:
  103. secondOk = false
  104. }
  105. // 都要符合条件
  106. if firstOk == true && secondOk == true {
  107. return true, orgMixExt, makeMixSubExtString(orgFileNameWithOutOrgMixExt, lang, subTypeExt, site, false)
  108. }
  109. return false, "", ""
  110. }
  111. func makeMixSubExtString(orgFileNameWithOutExt, lang string, ext, site string, beDefault bool) string {
  112. tmpDefault := ""
  113. if beDefault == true {
  114. tmpDefault = subparser.Sub_Ext_Mark_Default
  115. }
  116. if site == "" {
  117. return orgFileNameWithOutExt + language2.Emby_chinese + "(" + lang + ")" + tmpDefault + ext
  118. }
  119. return orgFileNameWithOutExt + language2.Emby_chinese + "(" + lang + "," + site + ")" + tmpDefault + ext
  120. }