Ejemplo n.º 1
0
    public static string[] Search_Fanart(string title, bool main, string searched, bool isGroupView, string filecover, string group, Configuration tmpconf)
    //                     Search_Fanart(wlabel, true, "file", false, facadeFilms.SelectedListItem.ThumbnailImage.ToString(), string.Empty);
    {
      //if (MyFilms.conf == tmpconf) LogMyFilms.Debug("Search_Fanart(): Using '" + title + "'");
      string[] wfanart = new string[2];
      wfanart[0] = " ";
      wfanart[1] = " ";
      if (tmpconf.StrFanart)
      {
        if (title.Contains(tmpconf.TitleDelim))
          title = title.Substring(title.LastIndexOf(tmpconf.TitleDelim, StringComparison.Ordinal) + 1);
        title = GrabUtil.CreateFilename(title.ToLower()).Replace(' ', '.');

        if (!tmpconf.StrFanart)
          return wfanart;

        string safeName = string.Empty;
        if (isGroupView)
        {
          if ((group == "country" || group == "year" || group == "category") && tmpconf.StrFanartDefaultViews) // Default views and fanart for group view enabled?
          {
            if (!Directory.Exists(tmpconf.StrPathFanart + "\\_View")) Directory.CreateDirectory(tmpconf.StrPathFanart + "\\_View");
            if (!Directory.Exists(tmpconf.StrPathFanart + "\\_View\\" + group)) Directory.CreateDirectory(tmpconf.StrPathFanart + "\\_View\\" + group);
            safeName = tmpconf.StrPathFanart + "\\_View\\" + group + "\\{" + title + "}";
          }
          else
            if (tmpconf.StrFanartDfltImageAll && (wfanart[0] == "" || wfanart[0] == " "))
            {
              wfanart[0] = tmpconf.DefaultFanartImage;
              wfanart[1] = "file";
              return wfanart;
            }
        }
        else

          if ((tmpconf.StrPathFanart + title + "\\{" + title + "}.jpg").Length > 259) // Added to avoid crash with very long filenames - better is if user configures titledelimiters properly !
          {
            return wfanart;
          }
          else
          {
            safeName = tmpconf.StrPathFanart + "\\{" + title + "}";
          }


        try //Added to avoid crash with very long filenames - better is if user configures titledelimiters properly !
        {
          FileInfo wfile = new FileInfo(safeName + "\\{" + title + "}.jpg");
        }
        catch (Exception e)
        {
          LogMyFilms.Error("Title too long to create fanart path/filename from it - not loading fanart! - Exception: " + e.Message);
          return wfanart;
        }

        //LogMyFilms.Debug("(SearchFanart) - safename(file) = '" + wfile + "'");
        //LogMyFilms.Debug("(SearchFanart) - safename(file&ext) = '" + (safeName + "\\{" + title + "}.jpg") + "'");
        if ((main || searched == "file") && File.Exists(safeName + "\\{" + title + "}.jpg"))
        {
          wfanart[0] = safeName + "\\{" + title + "}.jpg";
          wfanart[1] = "file";
          return wfanart;
        }

        if (Directory.Exists(safeName))
        {
          if (main || searched == "file")
          {
            if (Directory.GetFiles(safeName).Length > 0)
            {
              wfanart[0] = Directory.GetFiles(safeName)[0];
              wfanart[1] = "file";
              LogMyFilms.Debug("Search_Fanart(): File Mode - searchtitle = '" + title + "', safename = '" + safeName + "'wfanart[0,1]: '" + wfanart[0] + "', '" + wfanart[1] + "'");
              return wfanart;
            }
          }
          else
          {
            if (Directory.GetFiles(safeName).Length > 0)
            {
              wfanart[0] = safeName;
              wfanart[1] = "dir";
              return wfanart;
            }
          }
        }
        else
        {
          try { Directory.CreateDirectory(safeName); } catch { }
        }

        // Added to support fanart for external catalogs
        switch (tmpconf.StrFileType)
        {
          case Configuration.CatalogType.AntMovieCatalog3:
            break;
          case Configuration.CatalogType.AntMovieCatalog4Xtended:
            break;
          case Configuration.CatalogType.DVDProfiler:
            break;
          case Configuration.CatalogType.MovieCollector:
            break;
          case Configuration.CatalogType.MyMovies:
            break;
          case Configuration.CatalogType.EaxMovieCatalog2:
          case Configuration.CatalogType.EaxMovieCatalog3:
            if (!string.IsNullOrEmpty(tmpconf.StrPathFanart)) //Search matching files in XMM fanart directory
            {
              string searchname = HTMLParser.removeHtml(title).Replace(" ", "."); // replaces special character "á" and other special chars !
              //searchname = Regex.Replace(searchname, "[\n\r\t]", "-") + "_*.jpg";
              searchname = searchname + ".*.jpg";
              string[] files = Directory.GetFiles(tmpconf.StrPathFanart, searchname, SearchOption.TopDirectoryOnly);
              if (files.Any())
              {
                wfanart[0] = files[0];
                wfanart[1] = "file";
                return wfanart;
              }
            }
            break;
          case Configuration.CatalogType.PersonalVideoDatabase: // PVD artist thumbs: e.g. Natalie Portman_1.jpg , then Natalie Portman_2.jpg 
            if (!string.IsNullOrEmpty(tmpconf.StrPathFanart)) //Search matching files in XMM fanart directory
            {
              string searchname = HTMLParser.removeHtml(title); // replaces special character "á" and other special chars !
              //searchname = Regex.Replace(searchname, "[\n\r\t]", "-") + "_*.jpg";
              searchname = searchname + "*.jpg";
              string[] files = Directory.GetFiles(tmpconf.StrPathFanart, searchname, SearchOption.TopDirectoryOnly);
              if (files.Any())
              {
                wfanart[0] = files[0];
                wfanart[1] = "file";
                return wfanart;
              }
            }
            break;
          case Configuration.CatalogType.eXtremeMovieManager:
            if (!string.IsNullOrEmpty(tmpconf.StrPathFanart)) //Search matching files in XMM fanart directory
            {
              string searchname = HTMLParser.removeHtml(title).Replace(" ", "-"); // replaces special character "á" and other special chars !
              searchname = searchname.Replace(" ", "-");
              searchname = searchname.Replace(".", "-");
              searchname = searchname.Replace("'", "-");
              searchname = "*" + Regex.Replace(searchname, "[\n\r\t]", "-") + "_fanart*.jpg";
              string[] files = Directory.GetFiles(tmpconf.StrPathFanart, searchname, SearchOption.TopDirectoryOnly);
              LogMyFilms.Debug("Search_Fanart - XMM - search for '" + searchname + "'");
              if (files.Any())
              {
                wfanart[0] = files[0];
                wfanart[1] = "file";
                return wfanart;
              }
            }
            break;

          case Configuration.CatalogType.XBMC: // XBMC fulldb export (all movies in one DB)
            break;

          case Configuration.CatalogType.MovingPicturesXML:
            if (!string.IsNullOrEmpty(tmpconf.StrPathFanart)) //Search matching files in MoPi fanart directory
            {
              string searchname = HTMLParser.removeHtml(title); // replaces special character "á" and other special chars !
              //searchname = Regex.Replace(searchname, "[\n\r\t]", "-") + "_*.jpg";
              searchname = "{" + searchname + "}" + "*.jpg";
              string[] files = Directory.GetFiles(tmpconf.StrPathFanart, searchname, SearchOption.TopDirectoryOnly);
              if (files.Any())
              {
                wfanart[0] = files[0];
                wfanart[1] = "file";
                return wfanart;
              }
            }
            break;

          case Configuration.CatalogType.XBMCnfoReader: // XBMC Nfo (separate nfo files, to scan dirs - MovingPictures or XBMC)
            break;

        }
        if ((tmpconf.StrFanartDflt) && !(isGroupView) && System.IO.File.Exists(filecover))
        {
          wfanart[0] = filecover;
          wfanart[1] = "file";
          //Added Guzzi - Fix that no fanart was returned ...
          return wfanart;
        }
        if (tmpconf.StrFanartDfltImage && (wfanart[0] == "" || wfanart[0] == " "))
        {
          wfanart[0] = tmpconf.DefaultFanartImage;
          wfanart[1] = "file";
        }
      }

      // LogMyFilms.Debug("(SearchFanart) - Fanart config for '" + title + "': wfanart[0,1]: '" + wfanart[0] + "', '" + wfanart[1] + "'");
      return wfanart;
    }
Ejemplo n.º 2
0
    public static Searchtitles GetSearchTitles(DataRow movieRecord, string mediapath, Configuration tmpconf) // returns the first title name of the configured mastertitle field
    {
      Searchtitles stitles = new Searchtitles
      {
        SearchTitle = "",
        FanartTitle = "",
        MasterTitle = "",
        SecondaryTitle = "",
        SortTitle = "",
        MovieDirectoryTitle = "",
        MovieFileTitle = "",
        OriginalTitle = "",
        TranslatedTitle = "",
        FormattedTitle = "",
        Year = 0,
        Director = ""
      };

      if (movieRecord["OriginalTitle"] != null && movieRecord["OriginalTitle"].ToString().Length > 0) stitles.OriginalTitle = RemoveGroupNames(movieRecord["OriginalTitle"].ToString());
      if (tmpconf.StrTitle1 == "OriginalTitle") stitles.MasterTitle = stitles.OriginalTitle;
      if (tmpconf.StrTitle2 == "OriginalTitle") stitles.SecondaryTitle = stitles.OriginalTitle;
      if (tmpconf.StrSTitle == "OriginalTitle") stitles.SortTitle = stitles.OriginalTitle;

      if (movieRecord["TranslatedTitle"] != null && movieRecord["TranslatedTitle"].ToString().Length > 0) stitles.TranslatedTitle = RemoveGroupNames(movieRecord["TranslatedTitle"].ToString());
      if (tmpconf.StrTitle1 == "TranslatedTitle") stitles.MasterTitle = stitles.TranslatedTitle;
      if (tmpconf.StrTitle2 == "TranslatedTitle") stitles.SecondaryTitle = stitles.TranslatedTitle;
      if (tmpconf.StrSTitle == "TranslatedTitle") stitles.SortTitle = stitles.TranslatedTitle;

      if (movieRecord["FormattedTitle"] != null && movieRecord["FormattedTitle"].ToString().Length > 0) stitles.FormattedTitle = RemoveGroupNames(movieRecord["FormattedTitle"].ToString());
      if (tmpconf.StrTitle1 == "FormattedTitle") stitles.MasterTitle = stitles.FormattedTitle;
      if (tmpconf.StrTitle2 == "FormattedTitle") stitles.SecondaryTitle = stitles.FormattedTitle;
      if (tmpconf.StrSTitle == "FormattedTitle") stitles.SortTitle = stitles.FormattedTitle;

      if (movieRecord["OriginalTitle"].ToString().Length > 0 && tmpconf.StrFanart)
      {
        try { stitles.Year = Convert.ToInt16(movieRecord["Year"]); } catch { stitles.Year = 0; }
        try { stitles.Director = (string)movieRecord["Director"]; } catch { stitles.Director = string.Empty; }
      }
      if (tmpconf.StrTitle1 == "FormattedTitle") // special setting for formatted title - we don't want to use it, as it is usually too long and causes problems with path length
      {
        if (!string.IsNullOrEmpty(stitles.TranslatedTitle))       stitles.FanartTitle = stitles.TranslatedTitle;
        else if (!string.IsNullOrEmpty(stitles.OriginalTitle))    stitles.FanartTitle = stitles.OriginalTitle;
        else                                                      stitles.FanartTitle = stitles.FormattedTitle;
      }
      else
      {
        if (!string.IsNullOrEmpty(stitles.MasterTitle))           stitles.FanartTitle = stitles.MasterTitle;
        else if (!string.IsNullOrEmpty(stitles.OriginalTitle))    stitles.FanartTitle = stitles.OriginalTitle;
        else if (!string.IsNullOrEmpty(stitles.TranslatedTitle))  stitles.FanartTitle = stitles.TranslatedTitle;
        else if (!string.IsNullOrEmpty(stitles.FormattedTitle))   stitles.FanartTitle = stitles.FormattedTitle;
        else                                                      stitles.FanartTitle = "";
      }

      // if mediapath is given, create mediapath search titles
      if (!string.IsNullOrEmpty(mediapath) && mediapath.Contains(".") && mediapath.Contains(@"\"))
      {
        string CleanStringFile = "";
        string CleanStringDir = "";
        Regex CutText;
        Match m;

        //Strip Path
        CleanStringFile = mediapath.Substring(mediapath.LastIndexOf(@"\") + 1);
        //Strip Extension
        CleanStringFile = CleanStringFile.Substring(0, CleanStringFile.LastIndexOf("."));
        CutText = new Regex(@"\(" + "[-|_|.| +][cC][dD][0-9]|[-|_|.| +][dD][iI][sS][kKcC][0-9]|[0-9]of[0-9]" + @"\)");
        m = CutText.Match(CleanStringFile);
        if (m.Success) //Finally remove anything which may be a multi-part indicator (e.g. 1of2)
          CleanStringFile = CutText.Replace(CleanStringFile, "");
        CutText = new Regex("[-|_|.| +][cC][dD][0-9]|[-|_|.| +][dD][iI][sS][kKcC][0-9]|[0-9]of[0-9]");
        m = CutText.Match(CleanStringFile);
        if (m.Success) CleanStringFile = CutText.Replace(CleanStringFile, "");
        stitles.MovieFileTitle = Utility.RemoveNastyCharacters(CleanStringFile.Trim());

        // foldername
        //Strip filename:
        CleanStringDir = mediapath.Substring(0, mediapath.LastIndexOf(@"\"));
        //Strip Path:
        CleanStringDir = CleanStringDir.Substring(CleanStringDir.LastIndexOf(@"\") + 1);
        CutText = new Regex(@"\(" + "[-|_|.| +][cC][dD][0-9]|[-|_|.| +][dD][iI][sS][kKcC][0-9]|[0-9]of[0-9]" + @"\)");
        m = CutText.Match(CleanStringDir);
        if (m.Success) //Finally remove anything which may be a multi-part indicator (e.g. 1of2)
          CleanStringDir = CutText.Replace(CleanStringDir, "");
        CutText = new Regex("[-|_|.| +][cC][dD][0-9]|[-|_|.| +][dD][iI][sS][kKcC][0-9]|[0-9]of[0-9]");
        m = CutText.Match(CleanStringDir);
        if (m.Success) CleanStringDir = CutText.Replace(CleanStringDir, "");
        stitles.MovieDirectoryTitle = Utility.RemoveNastyCharacters(CleanStringDir.Trim());

        // DVD_Folders
        if (mediapath.ToLower().Contains("video_ts"))
        {
          string CleanString = Utility.GetDVDFolderName(mediapath);
          stitles.MovieDirectoryTitle = Utility.RemoveNastyCharacters(CleanString.Trim());
        }
        if (mediapath.ToLower().Contains("index.bdmv"))
        {
          string CleanString = Utility.GetBRFolderName(mediapath);
          stitles.MovieDirectoryTitle = Utility.RemoveNastyCharacters(CleanString.Trim());
        }
      }

      if (MyFilms.conf == tmpconf) // only log if internal operation
        LogMyFilms.Debug("GetSearchTitles: returning Titles: '" + stitles.FanartTitle + "' - mastertitle (" + tmpconf.StrTitle1 + ") =  '" + stitles.MasterTitle + "' - originaltitle: '" + stitles.OriginalTitle + "' - translatedtitle: '" + stitles.TranslatedTitle + "' - formattedtitle: '" + stitles.FormattedTitle + "' - director: '" + stitles.Director + "' - year: '" + stitles.Year.ToString() + "'");
      return stitles;
    }