Как прочитать папку с фильмом и вывести из нее информацию

Я ищу инструмент или группу инструментов, которые могут рекурсивно читать из папки и выводить имя папки, название файла фильма, разрешение фильма и другую информацию.

Например, результат будет:

(1997) Titanic, Titanicmovie, 1280x720, 720p  
(2001) Matrix 2, Matrix2, 1280x1080, 1080p  
(2012) Titan, Titanmovie, 1280x720, 720p
3
задан 19 September 2012 в 01:22

2 ответа

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

mkv

   $ 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 соответственно. Надежда, которая помогает.

5
ответ дан 19 September 2012 в 01:22

Скрипт списка фильмов

ОБНОВЛЕНИЕ: еще одно обновление, так что, когда переменная папки изменяет величину глубины каталога, заголовки фильмов не теряются в процессе при использовании команды вырезания.

#!/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 и т. Д.

В другом примечании, по какой-то причине фильмы, снятые с ручным тормозом в формате M4V, не читаются правильно и выдают предупреждение «Поддержка больших файлов». Чтобы преодолеть это, сохраните файл как MKV. Если у вас уже есть M4V, используйте MKVMergeGUI, который выполняет изменения за меньшее время, чем Handbrake. После этого exiftool сможет правильно читать метаданные.

0
ответ дан 19 September 2012 в 01:22

Другие вопросы по тегам:

Похожие вопросы: