convert_srt_to_t.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/bin/bash
  2. DIR="./zh-Hans"
  3. TDIR="./zh-Hant"
  4. TWDIR="./zh-Hant-TW"
  5. HKDIR="./zh-Hant-HK"
  6. # 检查 opencc 是否安装
  7. if ! command -v opencc &> /dev/null; then
  8. echo "❌ opencc 命令未找到,请先安装 OpenCC。"
  9. exit 1
  10. fi
  11. # 检查 $DIR 中是否有 srt 文件
  12. if [ ! -d "$DIR" ]; then
  13. echo "❌ 目录 $DIR 不存在,请检查路径。"
  14. exit 1
  15. fi
  16. if [ -z "$(ls -A "$DIR"/*.srt 2>/dev/null)" ]; then
  17. echo "❌ 目录 $DIR 中没有找到任何 .srt 文件。"
  18. exit 1
  19. fi
  20. # 如果 TDIR、TWDIR 和 HKDIR 目录不存在,则创建它们,如果已存在则清空目录里的所有文件
  21. if [ -d "$TDIR" ]; then
  22. rm -rf "$TDIR"/*
  23. fi
  24. if [ -d "$TWDIR" ]; then
  25. rm -rf "$TWDIR"/*
  26. fi
  27. if [ -d "$HKDIR" ]; then
  28. rm -rf "$HKDIR"/*
  29. fi
  30. # 如果目标目录不存在,则创建它们
  31. if [ ! -d "$TDIR" ]; then
  32. mkdir -p "$TDIR"
  33. fi
  34. if [ ! -d "$TWDIR" ]; then
  35. mkdir -p "$TWDIR"
  36. fi
  37. if [ ! -d "$HKDIR" ]; then
  38. mkdir -p "$HKDIR"
  39. fi
  40. total_files=$(ls -1q "$DIR"/*.srt | wc -l)
  41. current_file=0
  42. echo "🔄 开始转换 $total_files 个 .srt 文件..."
  43. # 遍历 $DIR 中的所有 .srt 文件并转换
  44. for file in "$DIR"/*.srt; do
  45. if [[ -f "$file" ]]; then
  46. out="${file##*/}"
  47. out="${out%.srt}.srt" # 从 out 中取出文件名部分并替换扩展名为 .srt
  48. # 增加显示循环百分比的功能
  49. current_file=$((current_file + 1))
  50. percent=$((current_file * 100 / total_files))
  51. echo "🔄 转换中: $current_file/$total_files ($percent%) - $file"
  52. opencc -i "$file" -o "$TDIR/$out" -c s2t.json
  53. if [ $? -ne 0 ]; then
  54. echo "❌ 转换失败: $file by s2t.json"
  55. continue
  56. fi
  57. opencc -i "$file" -o "$TWDIR/$out" -c s2tw.json
  58. if [ $? -ne 0 ]; then
  59. echo "❌ 转换失败: $file by s2tw.json"
  60. continue
  61. fi
  62. opencc -i "$file" -o "$HKDIR/$out" -c s2hk.json
  63. if [ $? -ne 0 ]; then
  64. echo "❌ 转换失败: $file by s2hk.json"
  65. continue
  66. fi
  67. echo "✅ 转换成功: $file"
  68. fi
  69. done