读取视频并输出信息的脚本

读取视频并输出信息的脚本

我正在编写一个脚本,该脚本读取电影文件夹内的所有文件夹并输出文件中每个视频的信息。

我目前拥有的是这样的:

movies=0
rm movielist
for dir in Movies/*
do
  (cd "$dir" && pwd|cut -d \/ -f5|tr -s '\n' ', ' >> ../../movielist &&
  >> ../../movielist )
echo "Movie $movies - $dir ADDED!"
let movies=movies+1
done

rm moviefinal
cat movielist | while read MovieName;
do 
    echo "$MovieName" | cut -d ',' -f2 | cut -d 'x' -f2 | sort | uniq | while read MovieRes;
    do
        case $MovieRes in
        [461-660]*)
            echo "$MovieName,480p" >> moviefinal
        ;;
        [661-890]*)
            echo "$MovieName,720p" >> moviefinal
        ;;
        [891-1200]*)
            echo "$MovieName,1080p" >> moviefinal
        ;;
        *)
            echo "$MovieName,DVD" >> moviefinal
        ;;
        esac
    done    
done

其中读取的是电影文件夹每部电影(例如:Movies/The Matrix/Matrix.mkv)并将其发送到 Movies 文件夹内名为 moviex 的文件。文件内的信息是这样的:

The Matrix, 1920x1080, MKV
The Matrix 2, 1280x720, AVI
....

我现在要添加的是一种读取高度和宽度(即带有 exiftool 的 SourceImageHeight 和 SourceImageWidth)并执行 CASE 或 IF 的方法,其中,如果高度为 X,宽度为 Z,则向输出文件添加另一个变量这就是质量(即:720p、1080p、DVD...)。上面的内容看起来像这样:

The Matrix, 1920x1080, MKV, 1080p
The Matrix 2, 1280x720, AVI, 720p

更新 - 脚本现在显示质量(720p、1080p),但 CASE 部分是错误的。例如,它有时会抓取 720 视频并赋予其 DVD 质量,而事实上,我在脚本中明确提到了 720。

答案1

如果将来有人想做同样的事情,那么最终的脚本是这样的:

movies=0
rm movielist
for dir in Movies/*
do
  (cd "$dir" && pwd|cut -d \/ -f5|tr -s '\n' ', ' >> ../../movielist &&
    exiftool * -t -s3 -ImageSize -FileType|tr -s '\t' ',' >> ../../movielist )
echo "Movie $movies - $dir ADDED!"
let movies=movies+1
done

rm moviefinal
cat movielist | while read MovieName;
do 
    echo "$MovieName" | cut -d ',' -f2 | cut -d 'x' -f2 | sort | uniq | while read MovieRes;
    do
        if (($MovieRes>=461 && $MovieRes<=660))
        then
            echo "$MovieName,480p" 
        elif (($MovieRes>=661 && $MovieRes<=890))
        then
            echo "$MovieName,720p" 
        elif (($MovieRes>=891 && $MovieRes<=1200))
        then
            echo "$MovieName,1080p"
        else
            echo "$MovieName,DVD" 
        fi >> moviefinal
    done    
done

相关内容