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

SetPlayProperties() 공개 메소드

public SetPlayProperties ( ) : void
리턴 void
    public void SetPlayProperties()
    {
      SetPlayProperties(false);
    }

Same methods

IMDBMovie::SetPlayProperties ( bool useNfo ) : void

Usage Example

예제 #1
0
    /// <summary>
    /// Examines the current playing movie and fills in all the #tags for the skin.
    /// For movies it will look in the video database for any IMDB info
    /// For record TV programs it will look in the TVDatabase for recording info 
    /// </summary>
    /// <param name="fileName">Filename of the current playing movie</param>
    /// <remarks>
    /// Function will fill in the following tags for TV programs
    /// #Play.Current.Title, #Play.Current.Plot, #Play.Current.PlotOutline #Play.Current.File, #Play.Current.Thumb, #Play.Current.Year, #Play.Current.Channel,
    /// 
    /// Function will fill in the following tags for movies
    /// #Play.Current.Title, #Play.Current.Plot, #Play.Current.PlotOutline #Play.Current.File, #Play.Current.Thumb, #Play.Current.Year
    /// #Play.Current.Director, #cast, #dvdlabel, #imdbnumber, #Play.Current.Plot, #Play.Current.PlotOutline, #rating, #tagline, #votes, #credits
    /// </remarks>
    private void SetCurrentFile(string fileName)
    {
      GUIPropertyManager.RemovePlayerProperties();
      GUIPropertyManager.SetProperty("#Play.Current.Title", Util.Utils.GetFilename(fileName));
      GUIPropertyManager.SetProperty("#Play.Current.File", Util.Utils.GetFileNameWithExtension(fileName));
      GUIPropertyManager.SetProperty("#Play.Current.Thumb", string.Empty);
      GUIPropertyManager.SetProperty("#Play.Current.VideoCodec.Texture", string.Empty);
      GUIPropertyManager.SetProperty("#Play.Current.VideoResolution", string.Empty);
      GUIPropertyManager.SetProperty("#Play.Current.AudioCodec.Texture", string.Empty);
      GUIPropertyManager.SetProperty("#Play.Current.AudioChannels", string.Empty);
      GUIPropertyManager.SetProperty("#Play.Current.HasSubtitles", string.Empty);
      GUIPropertyManager.SetProperty("#Play.Current.AspectRatio", string.Empty);

      if ((g_Player.IsVideo || g_Player.IsDVD) && !g_Player.IsTV && g_Player.MediaInfo != null)
      {
        GUIPropertyManager.SetProperty("#Play.Current.VideoCodec.Texture",
                                       Util.Utils.MakeFileName(g_Player.MediaInfo.VideoCodec));
        GUIPropertyManager.SetProperty("#Play.Current.VideoResolution", g_Player.MediaInfo.VideoResolution);
        GUIPropertyManager.SetProperty("#Play.Current.AudioCodec.Texture",
                                       Util.Utils.MakeFileName(g_Player.MediaInfo.AudioCodec));
        GUIPropertyManager.SetProperty("#Play.Current.AudioChannels", g_Player.MediaInfo.AudioChannelsFriendly);
        GUIPropertyManager.SetProperty("#Play.Current.HasSubtitles", g_Player.MediaInfo.HasSubtitles.ToString());
        GUIPropertyManager.SetProperty("#Play.Current.AspectRatio", g_Player.MediaInfo.AspectRatio);
      }

      if (g_Player.IsDVD)
      {
        // for dvd's the file is in the form c:\media\movies\the matrix\video_ts\video_ts.ifo
        // first strip the \video_ts\video_ts.ifo
        string lowPath = fileName.ToLower();
        int index = lowPath.IndexOf("video_ts/");
        if (index < 0)
        {
          index = lowPath.IndexOf(@"video_ts\");
        }
        if (index >= 0)
        {
          fileName = fileName.Substring(0, index);
          fileName = Util.Utils.RemoveTrailingSlash(fileName);

          // get the name by stripping the first part : c:\media\movies
          string strName = fileName;
          int pos = fileName.LastIndexOfAny(new char[] {'\\', '/'});
          if (pos >= 0 && pos + 1 < fileName.Length - 1)
          {
            strName = fileName.Substring(pos + 1);
          }

          // get the name when play DVD directly from Drive letter
          List<GUIListItem> rootDrives = VirtualDirectories.Instance.Movies.GetRootExt();
          for (int i = rootDrives.Count - 1; i >= 0; i--)
          {
            GUIListItem itemDVDroot = (GUIListItem)rootDrives[i];
            string itemDVD = Path.GetPathRoot(itemDVDroot.Path);
            itemDVD = Util.Utils.RemoveTrailingSlash(itemDVD);
            if (itemDVD == strName && !String.IsNullOrEmpty(itemDVDroot.DVDLabel)) //cd or dvd drive
            {
              strName = itemDVDroot.DVDLabel;
            }
          }

          GUIPropertyManager.SetProperty("#Play.Current.Title", strName);
          GUIPropertyManager.SetProperty("#Play.Current.File", strName);

          // construct full filename as imdb info is stored...
          fileName += @"\VIDEO_TS\VIDEO_TS.IFO";
        }
      }

      bool isLive = g_Player.IsTimeShifting;
      string extension = Util.Utils.GetFileExtension(fileName).ToLower();
      if (extension.Equals(".sbe") || extension.Equals(".dvr-ms") ||
          (extension.Equals(".ts") && !isLive || g_Player.IsTVRecording))
      {
        // this is a recorded movie.
        // check the TVDatabase for the description,genre,title,...
        if (g_Player.currentTitle != "")
        {
          GUIPropertyManager.SetProperty("#Play.Current.Title", g_Player.currentTitle);
          GUIPropertyManager.SetProperty("#Play.Current.Plot",
                                         g_Player.currentTitle + "\n" + g_Player.currentDescription);
          GUIPropertyManager.SetProperty("#Play.Current.PlotOutline", g_Player.currentDescription);
        }
      }

      /*if (fileName.Substring(0, 4) == "rtsp")
      {
          GUIPropertyManager.SetProperty("#Play.Current.Title", g_Player.currentTitle);
          GUIPropertyManager.SetProperty("#Play.Current.Plot", g_Player.currentTitle + "\n" + g_Player.currentDescription);
          GUIPropertyManager.SetProperty("#Play.Current.PlotOutline", g_Player.currentDescription);
      }*/


      IMDBMovie movieDetails = new IMDBMovie();
      bool bMovieInfoFound = false;
      
      ISelectBDHandler selectBdHandler;
      if (GlobalServiceProvider.IsRegistered<ISelectBDHandler>())
      {
        selectBdHandler = GlobalServiceProvider.Get<ISelectBDHandler>();
      }
      else
      {
        selectBdHandler = new SelectBDHandler();
        GlobalServiceProvider.Add<ISelectBDHandler>(selectBdHandler);
      }
      
      bool playingRemoteUrl = Util.Utils.IsRemoteUrl(fileName);
      if (!g_Player.IsTVRecording && !playingRemoteUrl)
      {
        // Check if we play image file to search db with the proper filename
        if (Util.Utils.IsISOImage(fileName))
        {
          fileName = DaemonTools.MountedIsoFile;
        }

        if (VideoDatabase.HasMovieInfo(fileName))
        {
          VideoDatabase.GetMovieInfo(fileName, ref movieDetails);
          bMovieInfoFound = true;
        }
        else if (File.Exists(Path.ChangeExtension(fileName, ".xml")))
        {
          MatroskaTagInfo info = MatroskaTagHandler.Fetch(Path.ChangeExtension(fileName, ".xml"));
          movieDetails.Title = info.title;
          movieDetails.Plot = info.description;
          movieDetails.Genre = info.genre;
          GUIPropertyManager.SetProperty("#Play.Current.Channel", info.channelName);
          string logo = Util.Utils.GetCoverArt(Thumbs.TVChannel, info.channelName);
          if (!Util.Utils.FileExistsInCache(logo))
          {
            logo = "defaultVideoBig.png";
          }
          GUIPropertyManager.SetProperty("#Play.Current.Thumb", logo);
          _thumbLogo = logo;
          bMovieInfoFound = true;
        }
        else // Nfo support
        {
          string path = string.Empty;
          int pathIndex = 0;
          
          if (fileName.ToUpperInvariant().Contains(@"\BDMV"))
          {
            pathIndex = fileName.ToUpperInvariant().LastIndexOf(@"\BDMV");
            path = fileName.Remove(pathIndex);
          }
          else if (fileName.ToUpperInvariant().Contains(@"\VIDEO_TS\"))
          {
            pathIndex = fileName.ToUpperInvariant().LastIndexOf(@"\VIDEO_TS\");
            path = fileName.Remove(pathIndex);
          }
          else
          {
            path = Path.GetDirectoryName(fileName);
          }
          
          IMDBMovie.FetchMovieNfo(path, fileName, ref movieDetails);

          if (!movieDetails.IsEmpty)
          {
            bMovieInfoFound = true;
          }
        }
        if (bMovieInfoFound)
        {
          movieDetails.SetPlayProperties(true);
        }
        else
        {
          GUIListItem item = new GUIListItem();
          item.IsFolder = false;
          item.Path = fileName;
          Util.Utils.SetThumbnails(ref item);
          GUIPropertyManager.SetProperty("#Play.Current.Thumb", item.ThumbnailImage);

          // Image file check to set title for OSD (non db)
          if (VirtualDirectory.IsImageFile(Path.GetExtension(fileName)))
          {
            string title = Util.Utils.GetFilename(fileName, true);
            GUIPropertyManager.SetProperty("#Play.Current.Title", title);
          }
          else if (fileName.ToLower().Contains("index.bdmv")) // BD folder title check
          {
            string title = selectBdHandler.GetBDFolderName(fileName);
            // get the name when play BD directly from Drive letter
            if (String.IsNullOrEmpty(title))
            {
              List<GUIListItem> rootDrives = VirtualDirectories.Instance.Movies.GetRootExt();
              title = Path.GetPathRoot(fileName);
              title = Util.Utils.RemoveTrailingSlash(title);

              for (int i = rootDrives.Count - 1; i >= 0; i--)
              {
                GUIListItem itemBDroot = (GUIListItem)rootDrives[i];
                string itemBD = Path.GetPathRoot(itemBDroot.Path);
                itemBD = Util.Utils.RemoveTrailingSlash(itemBD);
                if (itemBD == title && !String.IsNullOrEmpty(itemBDroot.DVDLabel)) //cd or dvd drive
                {
                  title = itemBDroot.DVDLabel;
                }
              }
            }
            GUIPropertyManager.SetProperty("#Play.Current.Title", title);
          }
          else if (fileName.ToLower().Contains(".mpls")) // BD folder title check (playlist)
          {
            // Check if index.bdmv is in the VDB
            int index = fileName.ToLower().LastIndexOf(@"\playlist");
            string name = fileName.Remove(index);
            name = name + @"\index.bdmv";
            if (VideoDatabase.HasMovieInfo(name))
            {
              VideoDatabase.GetMovieInfo(name, ref movieDetails);
              movieDetails.SetPlayProperties();
            }
            else
            {
              string title = selectBdHandler.GetBDFolderName(fileName);
              // get the name when play BD directly from Drive letter
              if (String.IsNullOrEmpty(title))
              {
                List<GUIListItem> rootDrives = VirtualDirectories.Instance.Movies.GetRootExt();
                title = Path.GetPathRoot(fileName);
                title = Util.Utils.RemoveTrailingSlash(title);

                for (int i = rootDrives.Count - 1; i >= 0; i--)
                {
                  GUIListItem itemBDroot = (GUIListItem)rootDrives[i];
                  string itemBD = Path.GetPathRoot(itemBDroot.Path);
                  itemBD = Util.Utils.RemoveTrailingSlash(itemBD);
                  if (itemBD == title && !String.IsNullOrEmpty(itemBDroot.DVDLabel)) //cd or dvd drive
                  {
                    title = itemBDroot.DVDLabel;
                  }
                }
              }
              GUIPropertyManager.SetProperty("#Play.Current.Title", title);
            }
          }
        }
      }
      else if (g_Player.IsTV && g_Player.IsTimeShifting)
      {
        GUIPropertyManager.SetProperty("#Play.Current.Title", GUIPropertyManager.GetProperty("#TV.View.channel"));
        GUIPropertyManager.SetProperty("#Play.Current.Genre", GUIPropertyManager.GetProperty("#TV.View.title"));
      }
      else
      {
        GUIListItem item = new GUIListItem();
        item.IsFolder = false;
        item.Path = fileName;
        Util.Utils.SetThumbnails(ref item);
        GUIPropertyManager.SetProperty("#Play.Current.Thumb", item.ThumbnailImage);
      }
      _thumbLogo = GUIPropertyManager.GetProperty("#Play.Current.Thumb");
    }
All Usage Examples Of MediaPortal.Video.Database.IMDBMovie::SetPlayProperties