A probléma
Mondjuk, hogy van egy zsák DVD-nk (tényleg van), adja Isten találtunk hozzájuk .SRT feliratokat is és mindezt cakkumpúder csinosított formában szeretnénk felajánlani az iTunes librarynknak népgazdasági hasznosításra (egy üveg fröccs már bennem van, elnézést a hablatyért).
A megoldás
A feladatot két részre bontjuk: előbb hagyjuk a computerünket tömegesen konvertálni, aztán majd szerzünk az eredményhez metaadatot is, végül megszólítjuk iTunes komát is. Csapjunk bele!
1. lépés: tömeges konverzió

Szóval nagyjából úgy, ahogy a fenti bagoly rajzolós HOWTO mutatja. Igaziból persze leszedünk egy
HandbrakeCLI-t, bemásoljuk a /Applications mappánkba a binárist és megírjuk az alábbi scriptet:
#!/bin/sh
#
# Handbrake gyipaci
# lmdate 2010.07.05
#
# Végigmegy rekurzívan egy könytáron és megkeresi a filmcim-hu{n}.srt, filmcim-en{g}.srt feliratfile-okat,
# aztán ha igazán akarod, csinál neked soft subtitle-os m4v-ket az avi-jaidból.
#
# A script feltételezi, hogy ha csak egy, az avi file-lal megegyező nevű srt file-t talál, akkor abban magyar
# subtitle lakik.
#
convert() {
film="$1"
base="${film%.*}"
srt="$base".srt
hu="$base"-hu.srt
hun="$base"-hun.srt
en="$base"-en.srt
eng="$base"-eng.srt
srthuc=0
srthu=""
if [ -e "$srt" ]; then
srthuc=1
srthu="$srt"
elif [ -e "$hu" ]; then
srthuc=1
srthu="$hu"
elif [ -e "$hun" ]; then
srthuc=1
srthu="$hun"
fi
srtenc=0
srten=""
if [ -e "$en" ]; then
srtenc=1
srten="$en"
elif [ -e "$eng" ]; then
srtenc=1
srten="$eng"
fi
let srtc=$srthuc+$srtenc
srtfiles=""
srtcodes=""
srtlangs=""
case $srtc in
0 ) ;;
1 )
if [ -s "$srthu" ]; then
srtfiles="$srthu"
srtcodes="WINDOWS-1250"
srtlangs="hun"
else
srtfiles="$srten"
srtcodes="ISO-8859-1"
srtlangs="eng"
fi
;;
2 )
srtfiles="$srthu","$srten"
srtcodes="WINDOWS-1250,ISO-8859-1"
srtlangs="hun,eng"
;;
esac
if [ $srtc -ne 0 ]; then
echo Found $srtc subtitles:
echo "$srtfiles"
echo "$srtcodes"
echo "$srtlangs"
else
echo No subtitles found.
fi
options="-e x264 -q 20.0 -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 960 --loose-anamorphic -m -x cabac=0:ref=2:me=umh:b-pyramid=none:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500 -C 8"
case $srtc in
0 )
# ha felirat nélkül is konvertálnál
echo "" | $hbcli -v -i "$film" -o "$2" $options
;;
1 )
# ha konvertálnád a home videód akkor is, ha csak a default magyar felirat van meg hozzá
echo "" | $hbcli -v -i "$film" -o "$2" $options --srt-file "$srtfiles" --srt-codeset "$srtcodes" --srt-lang "$srtlangs"
;;
2 )
# ha konvertálnád a home videód mind az angol, mind a magyar felirat birtokában a kétnyelvű családod számára
echo "" | $hbcli -v -i "$film" -o "$2" $options --srt-file "$srtfiles" --srt-codeset "$srtcodes" --srt-lang "$srtlangs"
;;
esac
return
}
hbcli=/Applications/HandBrakeCLI
source_dir="."
input_file_type="avi"
output_file_type="m4v"
echo "# Using HandBrakeCLI at "$hbcli
echo "# Using source directory "$source_dir
echo "# Converting "$input_file_type" to "$output_file_type
# Convert from one file to another
convert() {
# The beginning part, echo "" | , is really important. Without that, HandBrake exits the while loop.
echo "" | $hbcli -i "$1" -o "$2" --preset="AppleTV 2" -C 8;
}
# Find the files and pipe the results into the read command. The read command properly handles spaces in directories and files names.
find "$source_dir" -iname "*.$input_file_type" | while read in_file
do
echo "Processing…"
echo ">Input "$in_file
# Replace the file type
out_file=$(echo $in_file|sed "s/\(.*\.\)$input_file_type/\1$output_file_type/g")
echo ">Output "$out_file
# Convert the file
convert "$in_file" "$out_file"
if [ $? != 0 ]
then
echo "$in_file had problems" >> handbrake-errors.log
fi
echo ">Finished "$out_file "\n\n"
done
echo "DONE CONVERTING FILES"
A sctiptünkben az
options= kezdetű sorban a -C utáni számot kicseréljük a rendelkezésünkre álló CPU magok számára.
Egy folderbe bepakoljuk az eddig bután .avi formában tárolt filmjeinket / sorozatainkat, melléjük tesszük az .srt file-okat (ha ezt nem értjük, elolvassuk a scriptet, nem csak nyakló nélkül mentjük). Ha ez kész, nyitunk egy shellt, bemászunk a filmek könyvtárába és elindítjuk a scriptünket, majd a végén örülünk a sok szép új m4v file-nak.
2. lépés: metázunk
Az előbb lett sok szép mv4 file-unk – ezekbe kell nekünk proper metadata. Ehhez vásároljuk meg a Mac App Storeból az
iDentify alkalmazást, esetleg szedjük le a trialt
innen.
Az iDentifybe bedobáljuk az m4v file-jainkat, ő meg szépen feltaggeli őket. Ha ezt mégsem teszi meg magától, akkor nagy eséllyel nem tudott kitalálni szerencsétlen semmi kézzelfoghatót a filenévből. Ilyenkor forduljunk az IMDB-hez bizalommal: keressük ki a film / sorozat IMDB oldalát és adjuk meg az iDentifynek az IMDB által használt azonosítót.
3. lépés: iTunes etetés
A drága megalomán média alkalmazásunk minden valószínűség szerint a ~/Music/iTunes mappában tárolja a cuccait. Ebben a folderben keressük meg az iTunes Media/Automatically Add to iTunes könyvtárat és dobáljuk bele vadul az előbb legyártott, majd gondosan feltaggelt m4v állományainkat.
Az iTunes észreveszi az új jövevényeket, belenéz a metaadatokba és szépen a helyére pakolja a cuccost. Innentől kezdve pedig már csak egy iTunes Home Sharing bekapcsolás és egy Apple TV dobozka kell ahhoz, hogy a nappaliban molesztáljuk a csodaszép videós médiatárunkat.]]>