Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @ECHO OFF
- setlocal ENABLEDELAYEDEXPANSION
- set "UAGENT=-useragent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0""
- FOR /F "delims=" %%D IN ('where lynx.cfg') DO SET "LYNX_CFG=%%D"
- ::SET "LYNX_CFG=D:\PortableApps\media-suite\lynx.cfg"
- :LOOP
- IF [%1]==[] GOTO EOF
- CD /D "%~dp1"
- SET "inMKV=%~nx1"
- :: CLEAN FILE NAME ::
- SET "FLT=%~n1"
- SET "FLT1=%FLT: =.%"
- SET "FLT2=%FLT1:(=%"
- SET "FLT3=%FLT2:)=%"
- SET "FLT4=%FLT3:[=%"
- SET "FLT5=%FLT4:]=%"
- FOR /F "delims=" %%N IN ('ECHO %FLT5% ^| sed -r "s/(.*[0-9]{4})\..*/\1/ ; s/\.(720p|1080p|bluray|x264).*//I"') DO SET "inMOVIE=%%N"
- SET "srchMOVIE=%inMOVIE:.= %"
- :: CHECK IF ONLINE & GO IMDb ::
- PING -n 1 8.8.8.8 >NUL && (
- FOR /F "delims=" %%S IN ('lynx %UAGENT% -dump -nonumbers -nolist "www.google.pt/search?q=%srchMOVIE% site:www.imdb.com" 2^>NUL ^| grep -m1 ") - IMDb" ^| sed "s/.*\. //;s/(//;s/) .*//;s/ /./g;s/://"') DO SET "imdbN=%%S"
- FOR /F "delims=" %%U IN ('lynx %UAGENT% -dump -nonumbers -listonly "https://duckduckgo.com/lite/?q=%srchMOVIE% site:www.imdb.com" 2^>NUL ^| sed -n "s|.*\(www.imdb.com/title/tt[0-9]*\)/$|\1|p" ^| sed -n 1p') DO SET "imdbURL=%%U"
- ::START "" "http://!imdbURL!/"
- ECHO !imdbURL!
- ) || (
- ECHO OFFLINE
- )
- IF NOT "%imdbN%" == "" SET "inMOVIE=%imdbN%"
- SET "outMOVIE=%inMOVIE%.720p.BRRip.x264"
- ECHO %outMOVIE%
- SET /p SetAC=Audio Codec ac3 ou m4a?:
- IF [%SetAC%] == [] SET SetAC=ac3
- SET /p CRFv=CRF 17?:
- IF [%CRFv%] == [] SET CRFv=17
- SET /p ThrD=Threads 12?:
- IF [%ThrD%] == [] SET ThrD=0
- SET /p BfrM=bframes 8?:
- IF [%BfrM%] == [] SET BfrM=8
- :: GET VIDEO DIMENSIONS ::
- FOR /F "tokens=1,2 delims=x" %%D IN ('mkvmerge -I "%inMKV%" ^| sed -rn "/Track ID .*video/ s/.*display_dimensions:([0-9]*x[0-9]*) .*/\1/p"') DO (SET "WIDTH=%%D" & SET "HEIGHT=%%E")
- ECHO %WIDTH%x%HEIGHT%
- :: RESIZE & CROPDETECT 1080p > 720p ::
- IF %WIDTH% GEQ 1600 (
- SET "vSCALE=scale=1280:trunc((ow/dar)/8+0.5)*8"
- SET "vCROP=cropdetect=24:8:0"
- FOR /F %%V IN ('ffmpeg64 -ss 30 -i "%inMKV%" -t 30 -vf "!vSCALE!,!vCROP!" -f null - 2^>^&1 ^| awk "/crop=/ {last=$NF} END{print last}"') DO SET "cropDT=%%V"
- SET "ScaleCrop=-vf "!vSCALE!,!cropDT!""
- FOR /F "tokens=2 delims=:" %%G IN ('echo !cropDT!') DO SET "HEIGHT=%%G"
- ECHO !cropDT!
- )
- :: SET R-FRAMES ::
- IF %HEIGHT% LEQ 546 (SET RFram=12
- ) ELSE IF %HEIGHT% LEQ 594 (SET RFram=11
- ) ELSE IF %HEIGHT% LEQ 654 (SET RFram=10
- ) ELSE IF %HEIGHT% LEQ 728 (SET RFram=9
- ) ELSE (SET RFram=8
- )
- ECHO RFram=%RFram%
- :: GET AUDIO INFO ::
- FOR /F "tokens=1-3 delims= " %%H IN ('mkvmerge -I "%inMKV%" ^| grep -m1 ": audio" ^| sed "s/Track ID \(.\): audio (\(.*\)) .*language:\(...\) .*/\1 \2 \3/"') DO (SET "trackN=%%H" & SET "trackC=%%I" & SET "aLang=%%J")
- IF [%aLang%] == [] SET "aLang=eng"
- IF "%aLang%" == "und" SET "aLang=eng"
- IF NOT "%trackC:AC3=%" == "%trackC%" (SET "aCodeC=ac3"
- ) ELSE IF NOT "%trackC:DTS=%" == "%trackC%" (SET "aCodeC=dts"
- ) ELSE IF NOT "%trackC:AAC=%" == "%trackC%" (SET "aCodeC=aac"
- )
- :: AUDIO DEMUX AND ENCODE ::
- IF NOT EXIST "AudioTrack.*" (
- ECHO %trackN% %aCodeC% %aLang%
- mkvextract -q tracks "%inMKV%" "%trackN%:SATrack.%aCodeC%"
- IF "%SetAC%" == "ac3" (
- IF "%aCodeC%" == "dts" (
- ECHO Encoding Audio to AC3
- ffmpeg64 -i "SATrack.dts" -ac 6 -ab 640k "AudioTrack.ac3" 2> NUL
- del "SATrack.dts"
- ) ELSE IF "%aCodeC%" == "ac3" (
- move "SATrack.ac3" "AudioTrack.ac3"
- )
- ) ELSE IF "%SetAC%" == "m4a" (
- ffmpeg64 -i "SATrack.%aCodeC%" -ac 6 -c:a pcm_s24le -f wav - 2> NUL | qaac64 -V82 -q2 --threading -r keep --ignorelength --no-delay --no-optimize - -o "AudioTrack.m4a"
- del "SATrack.%aCodeC%"
- )
- )
- :: VIDEO ENCODE AND MUX::
- SET "xEncSet=-hide_banner -report -threads %ThrD% -c:v libx264 -preset veryslow -level 4.1 -deblock -2:-2 -me_method umh -me_range 32 -subq 11 -crf %CRFv% -refs %RFram% -bf %BfrM% -psy-rd 1.00:0.00 -aq-mode 3 -aq-strength 0.90 -bufsize 30000k -maxrate 35000k -x264opts fast_pskip=0:keyint=240:min-keyint=23:partitions=p8x8,b8x8,i4x4,i8x8:mbtree=1:ipratio=1.3:pbratio=1.2:qcomp=0.70"
- ffmpeg64 -y -i "%inMKV%" %xEncSet% %ScaleCrop% -map 0:v -metadata:s:v:0 title="" -an -sn -map_chapters -1 "VideoTrack.mkv" && (
- mkvmerge -o "%outMOVIE%.mkv" --compression 0:none --track-name "0:" -A -M -T --no-global-tags "VideoTrack.mkv" --compression 0:none --language 0:%aLang% AudioTrack.%SetAC% --track-order 0:0,1:0 --title ""
- del VideoTrack.mp4 AudioTrack.%SetAC%
- :: CLEAN REPORT ::
- FOR /F "delims=" %%L IN ('DIR /B /O:-D ffmpeg-*.log ^| sed -n 1p') DO SET "ffLOG=%%L"
- sed -i -n "/frame I.*Avg QP/,/kb\/s/p" !ffLOG!
- sed -i "s/\[.*\] //" !ffLOG!
- sed -i "s/\(.*B-frames.*\)/\1\n/" !ffLOG!
- )
- :: MP4Box -add "VideoTrack.mp4:name=" -add "AudioTrack.%SetAC%:lang=%aLang%:name=" -new "%outMOVIE%.mp4"
- SHIFT
- GOTO :LOOP
- :EOF
- ECHO. & ECHO JOB DONE
- PAUSE >NUL
Advertisement
Add Comment
Please, Sign In to add comment