/*########## Dirty ThumbnailCreator Script by MonsterMagnet ################################################
############################################################################################################
### Best viewed >= 1024x768
### Requires Avisynth 2.5 (http://sourceforge.net/projects/avisynth2/)(tested with 2.56 and 2.57)
### and mplayer2 (included in WinXP C:\Programme\Windows Media Player\mplayer2.exe).
### This script creates thumbnail and preview images from your movies, for use with Mediaportal.
### Only missing thumbs or previews are created.(so you can run this script every time you add new movies !)
### 100 movie thumbs and 100 previews are created in 3:10 min (Athlon64 3500).
### TIP 1: Try this script with a test movie directory.
### TIP 2: You can use this script inside Mediaportal with the MyPrograms plugin.
### TIP 3: In directory: C:\Programme\Team MediaPortal\MediaPortal\Skin\BlueTwo\myvideo.xml change
### common.facade.video.xml to common.facade.pictures.xml
### TIP 4: Eventghost.org (open-source automation tool for MS Windows, supports infrared or wireless remotes)
#############################################################################################################
############ SETTINGS (Edit carefully !!!) ################################################################*/
/*----------- Path to AviSynth "DirectShowSource.dll" (double backslashes !) --------------------------------
-----------------------------------------------------------------------------------------------------------*/
var AviSynth = "C:\\Program Files\\AviSynth 2.5\\plugins"
/*----------- VideoFrame to use as thumbnail (use lower value for small and higher for large files !) -------
-----------------------------------------------------------------------------------------------------------*/
var imageframe = 1500
/*----------- MediaPortal video title thumbnail directory (double backslashes !) ----------------------------
-----------------------------------------------------------------------------------------------------------*/
var MPdir = "C:\\Program Files\\Team MediaPortal\\MediaPortal\\Thumbs\\videos\\Title"
/*----------- Directories to scan (double backslashes !, remove leading double slashes for more directories!)
-----------------------------------------------------------------------------------------------------------*/
dirs = new Array();
dirs[5] = "E:\\"
/*---------- Mplayer exe path (Only edit if mplayer2 was not found or you want to use another player --------
------------ (no blanks !, double backslashes !) ------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------*/
var mplayer ="mplayer2.exe"
/*############# END SETTINGS ################################################################################
###########################################################################################################*/
var counterS = 0;
var counterL = 0;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var wshshell = new ActiveXObject("Wscript.shell");
function scan ()
{
for (i=0; i < dirs.length; i++)
{
scandir (dirs[i])
}
wshshell.Popup(counterS + " Thumbnails and " + counterL + " Preview images created", 1, "ThumbnailCreator", 0+64)
}
function scandir( dir )
{
if (fso.FolderExists( dir ) == true)
{
var srcFolder = fso.GetFolder( dir );
var files = new Enumerator( srcFolder.files );
do
{
var ext = fso.GetExtensionName (files.item());
ext = ext.toLowerCase();
if (ext == "avi" || ext == "mpg" || ext == "wmv" || ext == "rmvb" || ext == "mov")
{
var search = files.item().name.lastIndexOf(".");
var part = files.item().name.substring(0,search);
var thumbS = part + ".jpg";
var thumbL = part + "L.jpg";
if (fso.FileExists(dir + '\\' + thumbS) == false && fso.FileExists(MPdir + '\\' + thumbS) == false)
{
var tf = fso.CreateTextFile(AviSynth + "\\Tempscript.avs",true)
tf.WriteLine('LoadPlugin ("' +AviSynth+ '\\DirectShowSource.dll")')
tf.WriteLine('input=(DirectShowSource("'+files.item().path+ '", fps=25, seek=true, audio=false))')
tf.WriteLine("converttorgb24(input)")
tf.WriteLine("Crop(16, 16, -16, -16)")
tf.WriteLine("BilinearResize(128,96)")
tf.WriteLine('Trim(' + imageframe + ',' + imageframe + ')')
tf.WriteLine('ImageWriter("' +AviSynth+ '\\" ,0,0,"jpg")')
tf.Close()
wshshell.run (mplayer + " /play /close " +AviSynth+ "\\Tempscript.avs",7, true)
fso.CopyFile (AviSynth + '\\000000.jpg',dir + '\\' + thumbS)
counterS++;
}
if (fso.FileExists(dir + '\\' + thumbL) == false && fso.FileExists(MPdir + '\\' + thumbL) == false)
{
var tf = fso.CreateTextFile(AviSynth + "\\Tempscript.avs",true)
tf.WriteLine('LoadPlugin ("' +AviSynth+ '\\DirectShowSource.dll")')
tf.WriteLine('input=(DirectShowSource("'+files.item().path+ '", fps=25, seek=true, audio=false))')
tf.WriteLine("converttorgb24(input)")
tf.WriteLine("Crop(16, 16, -16, -16)")
tf.WriteLine("BilinearResize(512,384)")
tf.WriteLine('Trim(' + imageframe + ',' + imageframe + ')')
tf.WriteLine('ImageWriter("' +AviSynth+ '\\" ,0,0,"jpg")')
tf.Close()
wshshell.run (mplayer + " /play /close " +AviSynth+ "\\Tempscript.avs",7, true)
fso.CopyFile (AviSynth + '\\000000.jpg',dir + '\\' + thumbL)
counterL++;
}
}
files.moveNext();
}
while (!files.atEnd() );
}
}
scan()