vid-com 1.0.10 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vid-com",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "description": "Video bitrate scanner & batch compressor with ARW→JPEG conversion (macOS, FFmpeg, hevc_videotoolbox)",
5
5
  "main": "video_bitrate_tool.js",
6
6
  "bin": {
@@ -1,13 +1,23 @@
1
1
  #!/bin/bash
2
2
 
3
3
  # 1. 处理输入参数
4
- if [ -z "$1" ]; then
5
- echo "用法: $0 <源目录> [输出目录]"
4
+ DELETE_ORIG=0
5
+ POSITIONALS=()
6
+ for arg in "$@"; do
7
+ case "$arg" in
8
+ -d) DELETE_ORIG=1 ;;
9
+ *) POSITIONALS+=("$arg") ;;
10
+ esac
11
+ done
12
+
13
+ if [ ${#POSITIONALS[@]} -eq 0 ]; then
14
+ echo "用法: $0 [-d] <源目录> [输出目录]"
15
+ echo " -d 转换完成后删除原始 ARW/DNG 文件"
6
16
  exit 1
7
17
  fi
8
18
 
9
- SOURCE_DIR="$1"
10
- OUTPUT_DIR="${2:-$SOURCE_DIR}"
19
+ SOURCE_DIR="${POSITIONALS[0]}"
20
+ OUTPUT_DIR="${POSITIONALS[1]:-}"
11
21
 
12
22
  # 2. 检查源目录是否存在
13
23
  if [ ! -d "$SOURCE_DIR" ]; then
@@ -15,7 +25,9 @@ if [ ! -d "$SOURCE_DIR" ]; then
15
25
  exit 1
16
26
  fi
17
27
 
18
- mkdir -p "$OUTPUT_DIR"
28
+ if [ -n "$OUTPUT_DIR" ]; then
29
+ mkdir -p "$OUTPUT_DIR"
30
+ fi
19
31
 
20
32
  # 3. 计算并发数:当前 CPU 数量 - 1 (最少为 1)
21
33
  CPU_CORES=$(sysctl -n hw.ncpu)
@@ -24,24 +36,46 @@ THREADS=$((CPU_CORES > 1 ? CPU_CORES - 1 : 1))
24
36
  echo "------------------------------------------"
25
37
  echo "系统 CPU 核心数: $CPU_CORES"
26
38
  echo "并发线程数: $THREADS"
27
- echo "正在开始平级转换..."
39
+ if [ -n "$OUTPUT_DIR" ]; then
40
+ echo "输出目录: $OUTPUT_DIR(保留子目录结构)"
41
+ else
42
+ echo "输出模式: 与源文件同级"
43
+ fi
44
+ [ "$DELETE_ORIG" -eq 1 ] && echo "转换后删除原始文件: 是"
45
+ echo "正在开始转换..."
28
46
  echo "------------------------------------------"
29
47
 
30
48
  # 4. 定义转换函数并导出,以便 xargs 调用
31
- # 使用 export -f 需要在脚本环境运行
32
49
  do_convert() {
33
50
  local src_file="$1"
34
- local out_dir="$2"
35
-
36
- # 获取纯文件名 (不带路径)
51
+ local src_dir="$2"
52
+ local out_dir="$3"
53
+ local delete_orig="$4"
54
+
37
55
  local filename=$(basename "$src_file")
38
- # 构造目标路径 (平级输出)
39
- local target_file="$out_dir/${filename%.*}.jpg"
40
-
56
+ local target_file
57
+
58
+ if [ -n "$out_dir" ]; then
59
+ # 计算相对于源目录的子路径,保留目录结构
60
+ local rel_dir
61
+ rel_dir=$(dirname "${src_file#${src_dir}/}")
62
+ local target_dir="$out_dir/$rel_dir"
63
+ mkdir -p "$target_dir"
64
+ target_file="$target_dir/${filename%.*}.jpg"
65
+ else
66
+ # 输出到与源文件同级
67
+ target_file="$(dirname "$src_file")/${filename%.*}.jpg"
68
+ fi
69
+
41
70
  echo "正在转换: $filename"
42
-
43
- # 执行转换
44
- sips -s format jpeg -s formatOptions 90 "$src_file" --out "$target_file" > /dev/null 2>&1
71
+ if sips -s format jpeg -s formatOptions 90 "$src_file" --out "$target_file" > /dev/null 2>&1; then
72
+ if [ "$delete_orig" -eq 1 ]; then
73
+ rm -f "$src_file"
74
+ echo "已删除原始文件: $filename"
75
+ fi
76
+ else
77
+ echo "转换失败: $filename"
78
+ fi
45
79
  }
46
80
 
47
81
  export -f do_convert
@@ -50,7 +84,11 @@ export -f do_convert
50
84
  # -0: 处理带空格的文件名
51
85
  # -P: 并发数
52
86
  # -I: 占位符
53
- find "$SOURCE_DIR" -type f \( -iname "*.arw" -o -iname "*.dng" \) -print0 | xargs -0 -I {} -P "$THREADS" bash -c "do_convert '{}' '$OUTPUT_DIR'"
87
+ find "$SOURCE_DIR" -type f \( -iname "*.arw" -o -iname "*.dng" \) -print0 | xargs -0 -I {} -P "$THREADS" bash -c "do_convert '{}' '$SOURCE_DIR' '$OUTPUT_DIR' '$DELETE_ORIG'"
54
88
 
55
89
  echo "------------------------------------------"
56
- echo "转换完成!所有文件已输出到: $OUTPUT_DIR"
90
+ if [ -n "$OUTPUT_DIR" ]; then
91
+ echo "转换完成!所有文件已输出到: $OUTPUT_DIR"
92
+ else
93
+ echo "转换完成!JPG 文件已输出到各自源文件所在目录。"
94
+ fi
@@ -660,7 +660,7 @@ delete options:
660
660
  arw-convert usage:
661
661
 
662
662
  vid-com arw-convert <源目录> [输出目录]
663
- 输出目录默认为 ./converted_jpgs,质量 90,多线程并发
663
+ 不指定输出目录时 JPG 与源文件同级;指定时保留子目录结构输出到目标目录。质量 90,多线程并发
664
664
 
665
665
  ─────────────────────────────────────────────────────────────────────────────
666
666
  arw-delete options: