如何读取电影文件夹并从中输出信息

如何读取电影文件夹并从中输出信息

我正在寻找一个工具或一组工具,它们组合起来可以从文件夹中递归读取并输出文件夹的名称、电影文件的名称、电影的分辨率和其他信息。

例如,它的输出将是:

(1997) Titanic, Titanicmovie, 1280x720, 720p  
(2001) Matrix 2, Matrix2, 1280x1080, 1080p  
(2012) Titan, Titanmovie, 1280x720, 720p

答案1

awk 和 grep + exiftool

http://www.sno.phy.queensu.ca/~phil/exiftool/

应该能够获得您需要的所有信息。

mp4:

$ exiftool big_buck_bunny_480p_surround-fix.avi 
ExifTool Version Number         : 9.02
File Name                       : big_buck_bunny_480p_surround-fix.avi
Directory                       : .
File Size                       : 210 MB
File Modification Date/Time     : 2012:09:19 09:43:12-04:00
File Access Date/Time           : 2012:09:19 09:43:22-04:00
File Permissions                : rw-rw-r--
File Type                       : AVI
MIME Type                       : video/x-msvideo
Frame Rate                      : 24
Max Data Rate                   : 0 kB/s
Frame Count                     : 14315
Stream Count                    : 2
Stream Type                     : Video
Video Codec                     : FMP4
Video Frame Rate                : 24
Video Frame Count               : 14315
Quality                         : 0
Sample Size                     : Variable
Image Width                     : 854
Image Height                    : 480
Planes                          : 1
Bit Depth                       : 24
Compression                     : FMP4
Image Length                    : 1229760
Pixels Per Meter X              : 0
Pixels Per Meter Y              : 0
Num Colors                      : Use BitDepth
Num Important Colors            : All
Audio Codec                     : 
Audio Sample Rate               : 56000
Audio Sample Count              : 33401088
Encoding                        : FAST Multimedia DVM
Num Channels                    : 6
Sample Rate                     : 48000
Avg Bytes Per Sec               : 56000
Bits Per Sample                 : 16
Duration                        : 0:09:56
Image Size                      : 854x480

影片

   $ exiftool hddvd_demo_1080p.mkv 
ExifTool Version Number         : 9.02
File Name                       : hddvd_demo_1080p.mkv
Directory                       : .
File Size                       : 278 MB
File Modification Date/Time     : 2012:09:19 10:09:51-04:00
File Access Date/Time           : 2012:09:19 10:08:43-04:00
File Permissions                : rw-rw-r--
File Type                       : MKV
MIME Type                       : video/x-matroska
Doc Type                        : matroska
Doc Type Version                : 1
Doc Type Read Version           : 1
Timecode Scale                  : 1 ms
Muxing App                      : libebml v0.7.7 + libmatroska v0.8.1
Writing App                     : mkvmerge v2.0.2 ('You're My Flame') built on Feb 21 2007 23:40:55
Duration                        : 0:02:01
Date/Time Original              : 2007:04:07 03:28:47Z
Video Codec ID                  : V_MS/VFW/FOURCC
Image Width                     : 1920
Image Height                    : 1080
Video Scan Type                 : Progressive
Display Width                   : 1920
Display Height                  : 1080
Default Duration                : 32 ms
Track Number                    : 3
Track Type                      : Audio
Track Used                      : Yes
Track Default                   : No
Track Forced                    : No
Track Timecode Scale            : 1
Audio Codec ID                  : A_EAC3
Codec Decode All                : Yes
Track Language                  : eng
Track Name                      : Dolby Digital Plus 5.1 640kbps
Audio Sample Rate               : 48000
Audio Channels                  : 6
Image Size                      : 1920x1080

所以你可以这样做

find . -name "*.ogg" -o -name "*.avi" -exec exiftool {} \;

添加

-o -name "*.videoFormat"

每种附加视频格式。此外,这只是入门的基础。您还可以

exiftool ~/Videos

它会为每个文件打印出一张巨大的信息表。您需要将其转储到一个文件中,然后可以相应地使用 grep 和 awk。希望这能有所帮助。

答案2

电影列表脚本

更新:另一个更新是,当文件夹变量改变目录深度时,电影标题不会在使用剪切命令的过程中丢失。

#!/bin/bash
####################################################################
# Movie List Creator Script by Luis Alvarado
# Creates File with Movie Name, Resolution, File Type & Quality
# CONFIG Variables

# FOLDER Variable is where all your movies are
# NOTE: The name of the movies is extracted from the movie's folder,
#       if the folder is called "..Movies/The Rabbit"
#   the name of the movie in that folder will be "The Rabbit".

folder="/media/cyrex/xtreme/Movies"

# FINAL Variable is the name of the file you wish to create with the
# Movie List.

final="moviefinal.txt"

####################################################################

here=$(pwd)

clear
echo "Processing Movies..."
echo ""
percent=$(ls $folder/|wc -l| while read pipe; do echo "scale=3; 100/$pipe"; done|bc)
movies=1
rm tempmovies 2> /dev/null
for dir in $folder/*
do
  (cd "$dir" && found=$(pwd) && echo ${found##/*/} |tr -s '\n' ', ' >> $here/tempmovies &&
  exiftool -ext .mkv -ext .m4v -ext .mp4 -ext .avi -ext .mpg * -t -s3 -ImageSize -FileType|tr -s '\t' ',' >> $here/tempmovies )
    base=$(echo "scale=3; $percent * $movies" | bc)
    echo -ne " Total: $base% Done / $movies Movies Added!"\\r
    let movies=movies+1
done

echo " "
echo " Detecting Movie Quality..."
echo " "

rm $final 2> /dev/null
cat tempmovies | while read MovieName;
do
    echo "$MovieName" | cut -d ',' -f2 | cut -d 'x' -f2 | sort | uniq | while read MovieRes;
    do
        if (($MovieRes>=304 && $MovieRes<=370))
                then
                        echo "$MovieName,LOW-RES DVD"
        elif (($MovieRes>=241 && $MovieRes<=369))
        then
            echo "$MovieName,HI-RES DVD"
        elif (($MovieRes>=371 && $MovieRes<=479))
        then
            echo "$MovieName, EDTV 480p"
        elif (($MovieRes>=480 && $MovieRes<=760))
        then
            echo "$MovieName, HDTV 720p"
        elif (($MovieRes>=761 && $MovieRes<=1200))
        then
            echo "$MovieName, HDTV 1080p"
        else
            echo "$MovieName,VCD"
        fi >> $final
    done
done

echo " "
echo "Summary: "
echo "----------------"
cat $final | cut -d ',' -f4| sort | uniq -c
echo "----------------"
echo " "
rm tempmovies 2> /dev/null
echo "File $final Created!"

为了使脚本运行,我们首先需要安装包中的 exiftool libimage-exiftool-perl。所以很快sudo apt-get install libimage-exiftool-perl就能完成。

该脚本需要在包含所有电影的电影文件夹之外运行(如果您将其保留原样)。它将收集所有电影标题(假设标题是文件夹的名称),它将收集视频的格式和分辨率(假设电影文件夹中只有视频文件(例如,不应有字幕)。最后,如果视频是 720p、1080p 等,它将给出质量的近似值...

另外,由于某种原因,使用 Handbrake 制作的 M4V 格式的电影无法正确读取,并会发出“大文件支持”警告。要解决此问题,请将文件保存为 MKV。如果您已经有 M4V,请使用 MKVMergeGUI,它比 Handbrake 更能快速完成更改。之后,exiftool 应该能够正确读取元数据。

相关内容