public static void SetMovieData(GUIListItem item)
{
IMDBMovie info = new IMDBMovie();
if (item == null)
{
return;
}
try
{
string path = string.Empty;
string fileName = string.Empty;
if (Util.Utils.IsVideo(item.Path))
{
Util.Utils.Split(item.Path, out path, out fileName);
}
else
{
path = item.Path;
}
if (item.Path != ".." && System.IO.File.Exists(item.Path + @"\VIDEO_TS\VIDEO_TS.IFO"))
{
fileName = item.Path + @"\VIDEO_TS\VIDEO_TS.IFO";
}
else if (item.Path != ".." && System.IO.File.Exists(item.Path + @"\BDMV\index.bdmv"))
{
fileName = item.Path + @"\BDMV\index.bdmv";
}
else
{
fileName = item.Path;
}
// Set
VideoFilesMediaInfo mInfo = new VideoFilesMediaInfo();
if (path == ".." || string.IsNullOrEmpty(path) || (!Directory.Exists(path) && !Util.Utils.IsVideo(fileName)))
{
info.MediaInfo = mInfo;
item.AlbumInfoTag = info;
return;
}
if (Directory.Exists(path) && !Util.Utils.IsVideo(fileName))
{
int rndMovieId = -1;
VirtualDirectory vDir = new VirtualDirectory();
string pin = string.Empty;
vDir.LoadSettings("movies");
if (!vDir.IsProtectedShare(path, out pin))
{
ArrayList mList = new ArrayList();
VideoDatabase.GetRandomMoviesByPath(path, ref mList, 1);
if (mList.Count > 0)
{
IMDBMovie movieDetails = (IMDBMovie)mList[0];
mList.Clear();
rndMovieId = movieDetails.ID;
}
else
{
// User fanart (only for videos which do not have movie info in db -> not scanned)
try
{
GetUserFanart(item, ref info);
}
catch (Exception ex)
{
Log.Error("IMDBMovie Set user fanart file property error: {0}", ex.Message);
}
}
}
info.ID = rndMovieId;
info.MediaInfo = mInfo;
item.AlbumInfoTag = info;
return;
}
try
{
VideoDatabase.GetMovieInfo(fileName, ref info);
// Get recording/nfo xml
if (info.IsEmpty)
{
FetchMatroskaInfo(fileName, false, ref info);
if (info.IsEmpty)
{
FetchMovieNfo(path, fileName, ref info);
}
}
VideoDatabase.GetVideoFilesMediaInfo(fileName, ref mInfo, false);
info.VideoFileName = fileName;
if (string.IsNullOrEmpty(info.VideoFilePath) || info.VideoFilePath == Strings.Unknown)
{
string tmpFile = string.Empty;
Util.Utils.Split(fileName, out path, out tmpFile);
info.VideoFilePath = path;
}
info.Path = path;
info.MediaInfo = mInfo;
if (info.ID > 0)
{
info.Duration = VideoDatabase.GetMovieDuration(info.ID);
}
else
{
ArrayList files = new ArrayList();
VideoDatabase.GetFilesForMovie(VideoDatabase.GetMovieId(info.VideoFileName), ref files);
foreach (string file in files)
{
info.Duration += VideoDatabase.GetVideoDuration(VideoDatabase.GetFileId(file));
}
}
int percent = 0;
int watchedCount = 0;
VideoDatabase.GetmovieWatchedStatus(VideoDatabase.GetMovieId(fileName), out percent, out watchedCount);
info.WatchedPercent = percent;
info.WatchedCount = watchedCount;
// User fanart (only for videos which do not have movie info in db -> not scanned)
try
{
if (info.ID < 1)
{
GetUserFanart(item, ref info);
}
}
catch (ThreadAbortException)
{
Log.Debug("IMDBMovie.ThreadAbortException SetMovieData (GetMovieInfo) error.");
}
catch (Exception ex)
{
Log.Error("IMDBMovie Set user fanart file property error: {0}", ex.Message);
}
item.AlbumInfoTag = info;
}
catch (ThreadAbortException)
{
Log.Debug("IMDBMovie.ThreadAbortException SetMovieData (GetMovieInfo) error.");
}
catch (Exception ex)
{
Log.Error("IMDBMovie SetMovieData (GetMovieInfo) error: {0}", ex.Message);
item.AlbumInfoTag = info;
}
}
catch (ThreadAbortException)
{
Log.Debug("IMDBMovie.ThreadAbortException SetMovieData error.");
}
catch (Exception ex)
{
Log.Error("IMDBMovie SetMovieData error: {0}", ex.Message);
item.AlbumInfoTag = info;
}
}