MediaPortal.Video.Database.IMDBMovie.SetMovieData C# (CSharp) 메소드

SetMovieData() 공개 정적인 메소드

Use only in share view
public static SetMovieData ( GUIListItem item ) : void
item MediaPortal.GUI.Library.GUIListItem
리턴 void
    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;
      }
    }