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; }
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; }