internal static void DownloadSeriesInformation(IMLItem item, string parentDir, ref string seriesName, ref string seriesID, bool fileServerIsOnline, bool isUNC, TVDBLib tvdb,string mdfSettingsb, IBaseSystem iBaseSystem ) { if (String.IsNullOrEmpty(seriesName)) return; WebClient client = new WebClient(); bool foundSeries; TVdbTvEpisodeDetailsDownloaderHelpers.NormalizeSeriesName(ref seriesName); if (TVdbTvEpisodeDetailsDownloaderHelpers.GetSeriesMatchFromSectionOrTVDb(item, ref seriesName, out seriesID, tvdb, mdfSettingsb, iBaseSystem, out foundSeries)) return; GetEpisodeKeysFromItemTagsAndPopulateEpisodeMetadata(item, seriesName, seriesID, fileServerIsOnline, isUNC, tvdb, mdfSettingsb, iBaseSystem, client, foundSeries); }
public static bool UpdateMediaSections (IBaseSystem iBaseSystem, IMLSection section, IEnumerable <string> combinedSceneTags) { string pluginpath = Debugger.GetPluginPath(); MainImportingEngine .CurrentProgress = 0; MainImportingEngine.GeneralStatus = "Starting media updating process..."; MainImportingEngine.SpecialStatus = ""; try { if ( !MoviesSectionUpdater .UpdateMoviesSection (pluginpath, iBaseSystem, combinedSceneTags, section)) { return(true); } } catch (Exception e) { Debugger.LogMessageToFile (Environment.NewLine + "An unexpected error occured" + " in DoImport() method." + " The error was: " + Environment.NewLine + e + Environment.NewLine); MainImportingEngine .CurrentProgress = 100; MainImportingEngine.ThisProgress.Progress (MainImportingEngine.CurrentProgress, "The import process terminated" + " unexpectidly due to an error."); } return(true); }
public static bool DoImport (Importer importer, IBaseSystem iBaseSystem, IMLSection section, IMLImportProgress progress) { try { ThisProgress = progress; Settings.ImportingStarted = false; Settings.ImportingCompleted = false; MediaLocationsRetriever .RetrieveMediaLocations (importer); if (ImportingEngineHelpers .PerformInitializationTasks(section)) { return(true); } var combinedSceneTags = VideoFilenameCleaner .ReadDictionaryReturnAllTags(); StartMainImportingEngine (importer, iBaseSystem, section, combinedSceneTags); ImportingEngineHelpers .FinishImport(); return(true); } catch (Exception e) { Debugger.LogMessageToFile ("An unexpected error ocurred " + "in the main import method DoImport(). " + "The error was: " + e); } return(true); }
private static void GetEpisodeKeysFromItemTagsAndPopulateEpisodeMetadata (IMLItem item, string seriesName, string seriesID, bool fileServerIsOnline, bool isUNC, TVDBLib tvdb, string mdfSettingsb, IBaseSystem iBaseSystem, WebClient client, bool foundSeries) { if (!foundSeries) { MainImportingEngine.ThisProgress.Progress(MainImportingEngine.CurrentProgress, "Series with name " + seriesName + " was not found."); Thread.Sleep(2000); return; } string episodeID = Helpers.GetTagValueFromItem(item, "EpisodeID"); if (!String.IsNullOrEmpty(episodeID)) return; int episodeNumber; int seasonNumber; if (TVdbTvEpisodeDetailsDownloaderHelpers .GetEpisodeKeysFromItemTags (item, out episodeNumber, out seasonNumber)) return; if (seasonNumber == 0 || episodeNumber == 0) return; ITVDBEpisode episode; ITVDBSeries series; if (TVdbTvEpisodeDetailsDownloaderHelpers .GetSeriesAndEpisodeFromTVDb(seriesName, seriesID, tvdb, episodeNumber, seasonNumber, out episode, out series)) return; TVdbTvEpisodeDetailsDownloaderHelpers .PopulateEpisodeMetadata (item, fileServerIsOnline, isUNC, mdfSettingsb, iBaseSystem, seasonNumber, client, series, episode); }
internal static bool RunMediaSectionsUpdatingEngine (Importer importer, IBaseSystem iBaseSystem, IMLSection section, IEnumerable <string> combinedSceneTags) { return(!MediaUpdaters .UpdateMediaSections (iBaseSystem, section, combinedSceneTags)); }
public UpdateMediaSectionsParams(IMLSection section, string mdfSettingsa, IBaseSystem iBaseSystem, string mdfSettingsb, string mdfSettingsc, IEnumerable<string> combinedSceneTags) { Section = section; MdfSettingsa = mdfSettingsa; Ibs = iBaseSystem; MdfSettingsb = mdfSettingsb; MdfSettingsc = mdfSettingsc; CombinedSceneTags = combinedSceneTags; }
public UpdateMediaSectionsParams (IMLSection section, IBaseSystem iBaseSystem, IEnumerable <string> combinedSceneTags) { Section = section; Ibs = iBaseSystem; CombinedSceneTags = combinedSceneTags; }
public static bool UpdateMediaSections(IBaseSystem iBaseSystem, IMLSection section, IEnumerable<string> combinedSceneTags) { string pluginpath = Debugger.GetPluginPath(); MainImportingEngine .CurrentProgress = 0; MainImportingEngine.GeneralStatus = "Starting media updating process..."; MainImportingEngine.SpecialStatus = ""; try { if ( !MoviesSectionUpdater .UpdateMoviesSection (pluginpath, iBaseSystem, combinedSceneTags, section)) return true; } catch (Exception e) { Debugger.LogMessageToFile (Environment.NewLine + "An unexpected error occured" + " in DoImport() method." + " The error was: " + Environment.NewLine + e + Environment.NewLine); MainImportingEngine .CurrentProgress = 100; MainImportingEngine.ThisProgress.Progress (MainImportingEngine.CurrentProgress, "The import process terminated" + " unexpectidly due to an error."); } return true; }
public static bool DoImport(Importer importer, IBaseSystem iBaseSystem, IMLSection section, IMLImportProgress progress) { try { ThisProgress = progress; Settings.ImportingStarted = false; Settings.ImportingCompleted = false; MediaLocationsRetriever .RetrieveMediaLocations (importer); if (ImportingEngineHelpers .PerformInitializationTasks(section)) return true; var combinedSceneTags = VideoFilenameCleaner .ReadDictionaryReturnAllTags(); StartMainImportingEngine (importer, iBaseSystem, section, combinedSceneTags); ImportingEngineHelpers .FinishImport(); return true; } catch (Exception e) { Debugger.LogMessageToFile ("An unexpected error ocurred " + "in the main import method DoImport(). " + "The error was: " + e); } return true; }
internal static void StartMainImportingEngine (Importer importer, IBaseSystem iBaseSystem, IMLSection section, IEnumerable <string> combinedSceneTags) { GeneralStatus = "Performing media importing..."; SpecialStatus = String.Empty; MediaImportingEngine.ImportMediaFilesMain (combinedSceneTags, importer, section); MediaImportingEngineHelpers .RunMediaSectionsUpdatingEngine (importer, iBaseSystem, section, combinedSceneTags); }
internal static bool UpdateFilmItem (int itemID, IMLSection moviesSection, string pluginpath, ref int currentItem, int totalItems, IBaseSystem iBaseSystem, IEnumerable<string> combinedSceneTags) { MainImportingEngine .CurrentProgress = ImportingEngineHelpers .ComputeProgress (currentItem, totalItems); #region item variables Helpers.UpdateProgress("", "Fetching library item..."); Debugger.LogMessageToFile( "Fetching library item..."); var item = moviesSection .FindItemByID(itemID); if (item == null) return true; DirectoryInfo parent; string moviehash, imdbid, tmdbID, year, itemTitle, sortTitle, location; SingleMovieItemUpdaterHelpers.InitializeItemKeys (itemID, item, out moviehash, out imdbid, out tmdbID, out year, out itemTitle, out sortTitle, out location); #endregion Helpers.UpdateProgress("", "Creating filesystem instance..."); Debugger.LogMessageToFile(String.Format ("Creating filesystem instances for media file {0}...", location)); try { var fi = new FileInfo (location); parent = fi.Directory; } catch (Exception e) { Debugger.LogMessageToFile(String.Format ("Unable to create filesystem instances" + " for this media file." + "An error occured: {0}", e)); return true; } if (IdentifyFilmAndDownloadMetadata (combinedSceneTags, item, parent)) return true; if (Helpers.UserCancels (MainImportingEngine.SpecialStatus)) return false; SetFilmItemProcessingFlags .SetUpdateFlag(item); item.SaveTags(); currentItem++; return true; }
internal static bool UpdateTvSections (IMLSection section, ref bool fileServerChecked, ref bool fileServerIsOnline, ConnectionResult connectionresult, string mdfSettingsb, IBaseSystem ibs, IEnumerable<string> combinedSceneTags) { TvSectionUpdaterHelpers.CheckIfTvShowsSectionIsSet(); if (!Settings.EnableTvShowsSectionUpdater || MediaSectionsAllocator.TvEpisodesSection.ItemCount == 0) return true; #region TV Shows Section varibales var currentItem = 1; var tvEpisodeItems = MediaSectionsAllocator.TvEpisodesSection.GetAllItemIDs(); var totalItems = tvEpisodeItems.Length; MainImportingEngine.CurrentProgress = 0; MainImportingEngine.GeneralStatus = "Updating Tv Section"; MainImportingEngine.SpecialStatus = ""; if (Settings.SleepValue > 3000) Settings.SleepValue = 3000; #endregion TVDBLib tvdb = TvSectionUpdaterHelpers .ConnectToTVDb(connectionresult); if (tvdb == null) return true; TvSectionUpdaterHelpers .BeginUpdatingSections(); foreach (int id in tvEpisodeItems) { if (!SingleTvEpisodeItemUpdater.UpdateTvEpisodeItem (section, ref fileServerChecked, ref fileServerIsOnline, connectionresult, mdfSettingsb,ibs, combinedSceneTags, tvdb, totalItems, id, ref currentItem)) return false; } TvSectionUpdaterHelpers.EndUpdatingSections(); TvSectionUpdaterHelpers.PerformPostUpdatingOperations(); return true; }
public void Initalize(IBaseSystem baseSystem) { Ibs = baseSystem; }
internal static bool UpdateMoviesSection (string pluginpath, ref bool FileServerChecked, ref bool FileServerIsOnline, ref ConnectionResult connectionresult, IMDbOperations imdbOP, string MDFSettingsa, IBaseSystem IBS, IEnumerable<string> combinedSceneTags) { if (String.IsNullOrEmpty(Settings.FilmsLibrary)) Settings.EnableMoviesSectionUpdater = false; if (Settings.EnableMoviesSectionUpdater) { Debugger.LogMessageToFile (Environment.NewLine + Environment.NewLine + "Film Updater is enabled."); if (MediaSectionsAllocator.MoviesSection.ItemCount != 0) { #region Pre-Updating Operations Debugger.LogMessageToFile("Initializing section variables..."); #region Movies Section varibales IMLItemList allFilmItems; int TotalItems = MediaSectionsAllocator.MoviesSection.ItemCount; int CurrentItem = 1; MainImportingEngine.CurrentProgress = 0; MainImportingEngine.GeneralStatus = "Updating Movies Section"; MainImportingEngine.SpecialStatus = ""; if (Settings.SleepValue > 3000) Settings.SleepValue = 3000; #endregion #region Decide selective updating bool SelectiveUpdatingEnabled = false; Debugger.LogMessageToFile("Scanning section for Selective Updating request..."); try { foreach (int id in MediaSectionsAllocator.MoviesSection.GetAllItemIDs()) { IMLItem Item = MediaSectionsAllocator.MoviesSection.FindItemByID(id); if (Item.Tags["SelectiveUpdating"] != null && Helpers.GetTagValueFromItem(Item, "SelectiveUpdating") != "") SelectiveUpdatingEnabled = true; } } catch (NullReferenceException) { StatusForm.statusForm.TrayIcon.ShowBalloonTip(10000, "Films section is corrupt.", "MediaFairy was unable to update your Films media section because it's database file is corrupt. Please restore it using an available backup.", ToolTipIcon.Error); Debugger.LogMessageToFile("The media section " + Settings.FilmsLibrary + " is corrupt. This section will not be updated."); return false; } #endregion //FilmReleasesDownloader // .DownloadFilmReleases // (pluginpath, connectionresult, // combinedSceneTags, // SelectiveUpdatingEnabled); #region Cache films section for the chain linking if (!SelectiveUpdatingEnabled && Settings.FilmItemChainLinkerIsEnabled) { allFilmItems = MediaSectionsAllocator.MoviesSection.SearchAll("*"); } else allFilmItems = null; #endregion #region Connect to OSdb //connectionresult = Helpers.CheckInternetConnectionAndConnectToOSDb(); #endregion #endregion #region Main Updating Loop Debugger.LogMessageToFile("Beginning to update Films section..."); MainImportingEngine.ThisProgress.Progress(MainImportingEngine.CurrentProgress, "Preparing to update Movies section..."); Thread.Sleep(1000); MediaSectionsAllocator.MoviesSection.BeginUpdate(); foreach (int id in MediaSectionsAllocator.MoviesSection.GetAllItemIDs()) { if ( !SingleMovieItemUpdater.UpdateFilmItem (id, MediaSectionsAllocator.MoviesSection, allFilmItems, ref FileServerChecked, ref FileServerIsOnline, connectionresult, imdbOP, pluginpath, ref CurrentItem, TotalItems, MDFSettingsa, IBS, combinedSceneTags)) return false; } MediaSectionsAllocator.MoviesSection.EndUpdate(); Debugger.LogMessageToFile("Completing updating of Films section..."); #endregion #region Post-Updating Operations if (Helpers.UserCancels (MainImportingEngine .SpecialStatus, null)) return false; LibraryCleaners.CleanupSection (Settings.CleanEmptyFields, Settings.CleanSelectedFields, Settings.SelectedFieldsToClean, MediaSectionsAllocator.MoviesSection); if (Helpers.UserCancels (MainImportingEngine .SpecialStatus, null)) return false; MeePopupProvider .ImportMeePopupProviderField (MediaSectionsAllocator.MoviesSection); //if (Settings.EnableXmlBackupFilms) // MediaLibrarySynchronizerBackup // .LibrarySynchronizerBackupMediaSection // (MediaSectionsAllocator.MoviesSection, // Settings.XmlBackupsDirectory); #endregion } } return true; }
internal static bool RunMediaSectionsUpdatingEngine(Importer importer, IBaseSystem iBaseSystem, IMLSection section, IEnumerable<string> combinedSceneTags) { return !MediaUpdaters .UpdateMediaSections (iBaseSystem, section, combinedSceneTags); }
internal static void GetEpisodeThumbnail(IMLItem item, bool fileServerIsOnline, bool isUNC, string mdfSettingsb, IBaseSystem iBaseSystem, ITVDBEpisode episode, WebClient client) { string imageFile = TVShows.CreateEpisodeThumbsFilePath (item, mdfSettingsb, ".jpg", iBaseSystem); string imagelocation = imageFile; if (File.Exists(imagelocation)) { item.ImageFile = imagelocation; item.SaveTags(); return; } if (!Settings.WantEpisodeThumbnails) return; if (String.IsNullOrEmpty(episode.ImageFile)) return; if (!fileServerIsOnline && isUNC) return; MainImportingEngine.ThisProgress.Progress(MainImportingEngine.CurrentProgress, "Downloading episode thumbnail..."); try { client.DownloadFile(episode.ImageFile, imagelocation); item.ImageFile = imagelocation; item.SaveTags(); } catch { try { client.DownloadFile(episode.ImageFile, imagelocation); item.ImageFile = imagelocation; item.SaveTags(); } catch { } } }
internal static void GetSeasonPoster(IMLItem item, string mdfSettingsb, IBaseSystem iBaseSystem, ITVDBEpisode episode, int seasonNumber) { if (!Settings.WantSeasonImages) return; string imageFile = TVShows.CreateSeasonPostersFilePath (item, mdfSettingsb, ".jpg", iBaseSystem); TvSeriesOperations.DownloadSeriesBanner (item, "SeasonImage", seasonNumber, episode.SeasonID, imageFile); }
internal static bool GetSeriesKeysFromTVDb(IMLItem item, ref string seriesName, out string seriesID, TVDBLib tvdb, string mdfSettingsb, IBaseSystem iBaseSystem, IMLItemList seriesItems, out bool foundSeries) { IList<ITVDBSeries> seriesResults; if (SearchTVDbForSeries (seriesName, tvdb, out seriesResults)) { seriesID = null; foundSeries = false; return true; } foundSeries = IfSeriesWasFoundPopulateSeriesDetailsElseMarkAsNotListed (item, ref seriesName, out seriesID, mdfSettingsb, iBaseSystem, seriesItems, seriesResults); return false; }
private static void GetSeriesBanner(IMLItem item, string mdfSettingsb, IBaseSystem ibs) { if (!Settings.WantSeriesBanners) return; try { string imageFile = TVShows.CreateSeriesBannersFilePath(item, mdfSettingsb, ".jpg", ibs); Debugger.LogMessageToFile("Downloading Series banner..."); TvSeriesOperations.DownloadSeriesBanner(item, "SeriesBanner", 0, "", imageFile); } catch (Exception e) { Debugger.LogMessageToFile( "[Series metadata downloader] An unexpected error occured while" + " trying to create a Series banner file path. The error was: " + e); StatusForm.statusForm.TrayIcon.ShowBalloonTip(5000, "Error creating image file path", "MediaFairy encountered an error while trying to create a Series banner file path." + " Please see Debug.log for details on this error.", ToolTipIcon.Warning); } }
public void Initalize(IBaseSystem baseSystem) { Ibs = baseSystem; return; }
public UpdateMediaSectionsParams(IMLSection section, IBaseSystem iBaseSystem, IEnumerable<string> combinedSceneTags) { Section = section; Ibs = iBaseSystem; CombinedSceneTags = combinedSceneTags; }
internal static void DownloadMusicArtistBackdropFromMeedioFr (IMLItem Item,string MDFSettingsc, IBaseSystem IBS, ConnectionResult connectionresult) { #region Return if disabled if (!MediaFairy.Settings.ArtistBackdropsEnabled) return; Debugger.LogMessageToFile ("[Artist fanart downloader]" + " Artist fanart downloader is enabled"); #endregion if (!connectionresult.InternetConnectionAvailable && MediaFairy.Settings.ConnectionDiagnosticsEnabled) return; #region Retrieve Artist string Artist = Helpers.GetTagValueFromItem(Item, "Artist"); if (String.IsNullOrEmpty(Artist)) return; Debugger.LogMessageToFile("[Artist fanart downloader] Artist: " + Artist); #endregion string Fanart = Helpers.GetTagValueFromItem(Item, "fanart"); if (String.IsNullOrEmpty(Fanart)) { Debugger.LogMessageToFile("[Artist fanart downloader] Library tag 'fanart' is empty for this item. Proceeding to download image..."); } else { Debugger.LogMessageToFile("[Artist fanart downloader] Library tag 'fanart' was found populated for this item. Checking if image file exists..."); if (File.Exists(Fanart)) { Debugger.LogMessageToFile("[Artist fanart downloader] Image file exists! Continuing to next item"); return; } else { Debugger.LogMessageToFile("[Artist fanart downloader] Image file found in tag 'fanart' does not exist. Proceeding to download image..."); Item.Tags["fanart"] = ""; Item.SaveTags(); Fanart = ""; } } Debugger.LogMessageToFile("[Artist fanart downloader] Artist fanart retrieved from library tag: " + Fanart); //MessageBox.Show("Step 3"); #region Normalize Artist name string ArtistNorm = Artist.ToLower(); if (ArtistNorm.StartsWith("the")) ArtistNorm = ArtistNorm.Remove(0,4); ArtistNorm = ArtistNorm.Replace(" ", "%20"); //MessageBox.Show(ArtistNorm); #endregion string ImageURL = "http://www.meediofr.org/~dmdocuments/music/artist_backdrops/" + ArtistNorm + ".jpg"; //MessageBox.Show("Step 5"); string ImageFile = Music.CreateArtistFanartFilePath(Item, MDFSettingsc, ".jpg", IBS); Debugger.LogMessageToFile("[Artist fanart downloader] Fanart file path created by MetadataFolders: " + ImageFile); if (File.Exists(ImageFile)) { Debugger.LogMessageToFile("[Artist fanart downloader] Fanart image already exists. Will now save it's path to library tag 'fanart'"); Item.Tags["fanart"] = ImageFile; Item.SaveTags(); return; } else { Debugger.LogMessageToFile("[Artist fanart downloader] Fanart image does not exist for this Artist. Proceeding to download image..."); } //MessageBox.Show("Step 6"); Helpers.UpdateProgress("Updating Music section...", "Searching meediofr.org for fanart image for artist: " + Artist + "...", Item); Debugger.LogMessageToFile("[Artist fanart downloader] Searching meediofr.org for fanart image for artist: " + Artist + "..."); if (!Helpers.RemoteFileExists(ImageURL)) { Debugger.LogMessageToFile("[Artist fanart downloader] The remote image path constructed was not found on the server. Continuing to next item..."); return; } WebClient client = new WebClient(); try { Helpers.UpdateProgress("Updating Music Section...", "Downloading fanart image for Artist '" + Artist + "'...", Item); Debugger.LogMessageToFile("[Artist fanart downloader] Downloading fanart image for Artist '" + Artist + "'..."); client.DownloadFile(ImageURL, ImageFile); Item.Tags["fanart"] = ImageFile; Item.SaveTags(); } catch (Exception e) { StatusForm.statusForm.TrayIcon.ShowBalloonTip(10000, "Error downloading image", "MediaFairy encountered an error while trying to download an artist fanart image. Please see Debug.log for details on this error.", ToolTipIcon.Warning); Debugger.LogMessageToFile("[Artist fanart downloader] An unexpected error occured while trying to download an artist fanart image. The error was: " + e.ToString() ); } }
internal static void PopulateSeriesDetails(IMLItem item, string mdfSettingsb, IBaseSystem ibs, ITVDBSeries series) { Debugger.LogMessageToFile("Populating Series Details..."); GetMainDetails(item, series); GetSeriesBanner(item, mdfSettingsb, ibs); //TODO: Add Series Posters downloading feature //if (Importer.WantSeriesPosters) //{ // try // { // string ImageFile = MetaDataFolders.TVShows.CreateSeasonPostersFilePath(Item, MDFSettingsb, ".jpg", IBS); // //MessageBox.Show(ImageFile); // Debugger.LogMessageToFile("Downloading Series Poster..."); // TvSeriesOperations.DownloadSeriesBanner(SeriesItem, "SeriesPoster", 0, "", ImageFile); // } // catch (Exception e) // { // Debugger.LogMessageToFile("[Series metadata downloader] An unexpected error occured while trying to create a Series Poster file path. The error was: " + e.ToString()); // StatusForm.statusForm.TrayIcon.ShowBalloonTip(5000, "Error creating image file path", "MediaFairy encountered an error while trying to create a Series Poster file path. Please see Debug.log for details on this error.", ToolTipIcon.Warning); // } //} GetSeriesFanart(item, mdfSettingsb, ibs); }
private static bool PerformMusicSectionUpdate(ref bool fileServerIsChecked, ref bool fileServerIsOnline, ConnectionResult connectionresult, string mediaDataFoldersSettingsMusic, IBaseSystem iBaseSystem, List<string[]> albumsWithCoverArt, bool connectedToiTunes, int tracksRemainingToIdentifyCount, List<string> albumsWithoutCoverArt, int allTracksToIdentifyCount, int musicDnsIdentificationTime) { MediaSectionsAllocator.MusicSection.BeginUpdate(); MainImportingEngine.ThisProgress.Progress (0, "Preparing to update Music Section..."); Thread.Sleep(1000); #region Section variables Debugger.LogMessageToFile("Creating section variables..."); int currentItem = 1; int[] allItems = MediaSectionsAllocator.MusicSection.GetAllItemIDs(); int totalItemCount = allItems.Length; #endregion MediaSectionsAllocator.MusicSection.BeginUpdate(); foreach (int id in allItems) { if (!MusicTrackItemUpdater.UpdateMusicTrackItem(ref fileServerIsChecked, ref fileServerIsOnline, connectionresult, mediaDataFoldersSettingsMusic, iBaseSystem, allTracksToIdentifyCount, connectedToiTunes, totalItemCount, id, ref albumsWithCoverArt, ref albumsWithoutCoverArt, ref tracksRemainingToIdentifyCount, ref musicDnsIdentificationTime, ref currentItem)) return false; } MediaSectionsAllocator.MusicSection.EndUpdate(); return true; }
internal static bool IfSeriesWasFoundPopulateSeriesDetailsElseMarkAsNotListed (IMLItem item, ref string seriesName, out string seriesID, string mdfSettingsb, IBaseSystem ibs, IMLItemList seriesItems, IList<ITVDBSeries> seriesResults) { bool foundSeries = false; if (seriesResults.Count > 0) { foundSeries = true; ITVDBSeries series = seriesResults[0]; seriesID = seriesResults[0].ID; Debugger.LogMessageToFile("SeriesID found : " + seriesID); seriesName = series.SeriesName; Debugger.LogMessageToFile("SeriesName found : " + seriesName); if (seriesItems.Count == 0) PopulateSeriesDetails (item, mdfSettingsb, ibs, series); } else { MarkSeriesAsNotListed(item, seriesName); seriesID = null; } return foundSeries; }
internal static bool UpdateMusicSection(ref bool fileServerIsChecked, ref bool fileServerIsOnline, ConnectionResult connectionresult, string mediaDataFoldersSettingsMusic, IBaseSystem iBaseSystem) { Debugger.LogMessageToFile("Checking for valid Music Section..."); if (String.IsNullOrEmpty(Settings.MusicLibrary)) Settings.EnableMusicSectionUpdater = false; if (!Settings.EnableMusicSectionUpdater) return true; if (MediaSectionsAllocator.MusicSection.ItemCount == 0) return true; #region Music Section varibales Debugger.LogMessageToFile("Creating album cover lists..."); var albumsWithoutCoverArt = new List<string>(); var albumsWithCoverArt = new List<string[]>(); int allTracksToIdentifyCount = 0; int tracksRemainingToIdentifyCount = 0; MainImportingEngine.CurrentProgress = 0; MainImportingEngine.GeneralStatus = "Updating Music Section"; MainImportingEngine.SpecialStatus = ""; //Debugger.LogMessageToFile("Creating iTunes instance..."); //IiTunes iTunesApp; if (Settings.SleepValue > 3000) Settings.SleepValue = 3000; #endregion int musicDnsIdentificationTime = 0; // MusicDnsIdentificationTimeCalculator.CalculateMusicDnsIdentificationTime // (connectionresult, out tracksRemainingToIdentifyCount, // ref allTracksToIdentifyCount); #region Synchronize with ITunes const bool connectedToiTunes = false; //if (Settings.WantItunesSync) //{ // Debugger.LogMessageToFile("Launching iTunes..."); // #region Launch itunes // try // { // //Importer.CurrentProgress++; // MainImportingEngine.ThisProgress.Progress // (MainImportingEngine.CurrentProgress, // "Launching iTunes..."); // connectedToiTunes = true; // } // catch (Exception) // { // StatusForm.statusForm.TrayIcon.ShowBalloonTip(10000, "Unable to connect to iTunes", // "MediaFairy was unable to detect a valid iTunes installation. " + // "If you don't have iTunes installed, please disable the iTunes synchronization feature.", // ToolTipIcon.Warning); // connectedToiTunes = false; // } //} #endregion if (!PerformMusicSectionUpdate(ref fileServerIsChecked, ref fileServerIsOnline, connectionresult, mediaDataFoldersSettingsMusic, iBaseSystem, albumsWithCoverArt, connectedToiTunes, tracksRemainingToIdentifyCount, albumsWithoutCoverArt, allTracksToIdentifyCount, musicDnsIdentificationTime)) return false; LibraryCleaners.CleanupSection(Settings.CleanEmptyFields, Settings.CleanSelectedFields, Settings.SelectedFieldsToClean, MediaSectionsAllocator.MusicSection); MeePopupProvider.ImportMeePopupProviderField(MediaSectionsAllocator.MusicSection); //if (Settings.EnableXmlBackupMusic) // MediaLibrarySynchronizerBackup // .LibrarySynchronizerBackupMediaSection // (MediaSectionsAllocator.MusicSection, // Settings.XmlBackupsDirectory); return true; }
internal static bool GetSeriesMatchFromSectionOrTVDb(IMLItem item, ref string seriesName, out string SeriesID, TVDBLib tvdb, string mdfSettingsb, IBaseSystem IBS, out bool foundSeries) { var seriesItems = SearchForSeriesInSection(seriesName); if (seriesItems.Count > 0) { foundSeries = GetSeriesKeysFromLocalMatch(seriesName, out SeriesID, seriesItems); if (string.IsNullOrEmpty(SeriesID)) { if (GetSeriesKeysFromTVDb(item, ref seriesName, out SeriesID, tvdb, mdfSettingsb, IBS, seriesItems, out foundSeries)) return true; } } else { if (GetSeriesKeysFromTVDb(item, ref seriesName, out SeriesID, tvdb, mdfSettingsb, IBS, seriesItems, out foundSeries)) return true; } return false; }
internal static bool DownloadBackdropFromTheMovieDb (IMLItem item, string videofilename, string location, string itemTitle, string parent, bool fileServerIsOnline, bool isUNC,string mdfSettingsa, IBaseSystem ibs) { try { #region return cases if (MeediFier.Settings.WantToDisableSources && !MeediFier.Settings.TMDbIsOnline) return false; if (!MeediFier.Settings.FilmBackdropArtDownloaderIsEnabled) return false; if (isUNC && !fileServerIsOnline) return false; #endregion #region set item variables string imdbid = Helpers.GetTagValueFromItem(item, "ImdbID"); if (imdbid.Length == 8 && imdbid.StartsWith("tt")) { imdbid = imdbid.Remove(0,2); imdbid = "0" + imdbid; imdbid = "tt" + imdbid; item.Tags["ImdbID"] = imdbid; item.SaveTags(); } string fanart = Helpers.GetTagValueFromItem (item, "fanart"); string lastUpdated = Helpers.GetTagValueFromItem (item, "LastUpdated"); #endregion #region check if image file in item's location exists if (!String.IsNullOrEmpty(fanart)) { if (File.Exists(fanart)) return true; } #endregion Application.DoEvents(); const string ext = ".jpg"; string imageFile = Movies.CreateFanartFilePath (item, mdfSettingsa, ext, ibs); #region look for backdrop in item's location and save to image tag if (File.Exists(imageFile)) { item.Tags["fanart"] = imageFile; item.SaveTags(); return true; } #endregion #region Check Last Updated date if (!String.IsNullOrEmpty(lastUpdated)) { DateTime todayDate = DateTime.Today; DateTime updatedDate = DateTime.Parse (Helpers.GetTagValueFromItem (item, "LastUpdated")); if (todayDate.DayOfYear < (updatedDate.DayOfYear + 2)) return false; } #endregion var previewImages = new List<string>(); List<string> imageUrls = GetFilmBackdropsFromTMDb (item, ref previewImages); if (imageUrls.Count == 0 || previewImages.Count == 0) { Debugger.LogMessageToFile ("The image URLs list is empty. " + "No online backdrops were found for this film."); return false; } string posterUrl = ImageSelectionEngine.UserSelectsImage (item, imageUrls, previewImages,"backdrop"); #region Download, save and import backdrop #region download the image Helpers.UpdateProgress ("Updating Movies Section", "Downloading backdrop " + "from themoviedb.org...", item); byte[] imageData = MeediFier.Downloaders.TrytoDownloadData (posterUrl, "Movies", "TheMovieDatabase", item); if (imageData == null) return false; #endregion #region save the image & update tags if ( String.IsNullOrEmpty (ImageFileConstructor.SaveImage (imageData, item, false, "fanart", imageFile))) return false; if (MeediFier.Settings.ResizeFilmBackdrops) { Helpers.UpdateProgress ("Updating Movies Section", "Resizing image...", item); ImageResizer.ResizeImage (imageFile, imageFile, MeediFier.Settings.FilmBackdropWidth, MeediFier.Settings.FilmBackdropHeight, false); } return true; #endregion #endregion } catch (Exception e) { Debugger.LogMessageToFile ("The backdrops downloading method" + " returned an unexpected error: " + e); return false; } }
internal static void GetEpisodeDetailsAndImages(IMLItem item, bool fileServerIsOnline, bool isUNC, string mdfSettingsb, IBaseSystem iBaseSystem, WebClient client, int seasonNumber, ITVDBEpisode episode, ITVDBSeries series) { PopulateEpisodeDetails (item, episode, series); GetEpisodeThumbnail(item, fileServerIsOnline, isUNC, mdfSettingsb, iBaseSystem, episode, client); GetSeasonPoster (item, mdfSettingsb, iBaseSystem, episode, seasonNumber); }
internal static bool UpdateMusicTrackItem(ref bool fileServerChecked, ref bool fileServerIsOnline, ConnectionResult connectionresult, string mdfSettingsc, IBaseSystem iBaseSystem, int allTracksToIdentify, bool connectedToiTunes, int totalItems, int id, ref List<string[]> albumsWithCover, ref List<string> albumsWithoutcover, ref int tracksToIdentify, ref int remainingTime, ref int currentItem) { #region item varibales Debugger.LogMessageToFile("Retrieving item's key tags..."); IMLItem item = MediaSectionsAllocator.MusicSection.FindItemByID(id); string artist = Helpers.GetTagValueFromItem(item, "Artist"); string album = Helpers.GetTagValueFromItem(item, "Album"); album = MusicTrackItemUpdaterHelpers.NormalizeAlbumName(item, album); string title = Helpers.GetTagValueFromItem(item, "Title"); string location = item.Location; bool isUNC = false; int i = location.LastIndexOf('\\'); string parent = location.Substring(0, i); parent = parent + "\\"; i = parent.LastIndexOf('\\'); string root = parent.Substring(0, i); root = root + "\\"; string parentDirectory = parent; #endregion MainImportingEngine.CurrentProgress = ImportingEngineHelpers.ComputeProgress(currentItem, totalItems); #region validate filename //try //{ // Debugger.LogMessageToFile("Validating filename..."); // Helpers.CheckFileServer(Settings.WantFileserverDiagnostics, location, ref isUNC, // ref fileServerChecked, root, ref fileServerIsOnline); //} //catch (Exception) //{ // return true; //} #endregion if (MissingItemRemover.DeleteMissingItem(Settings.DeleteMissing, isUNC, fileServerIsOnline, location, MediaSectionsAllocator.MusicSection, item)) return true; try { var audioDuration = MusicTrackItemUpdaterHelpers.ExtractAudioDuration(item); if (Helpers.UserCancels(MainImportingEngine.SpecialStatus, item)) return false; if (!MusicTrackItemUpdaterHelpers.PerformAudioIdentificationAndDownloadAlbumCoverArt (fileServerIsOnline, connectionresult, mdfSettingsc, iBaseSystem, allTracksToIdentify, ref albumsWithCover, ref albumsWithoutcover, ref tracksToIdentify, ref remainingTime, parentDirectory, isUNC, location, audioDuration, item, ref artist, ref title, ref album)) return false; if (Helpers.UserCancels (MainImportingEngine.SpecialStatus, item)) return false; MusicTrackItemUpdaterHelpers .OrganizeAudioFile (artist, album, title, item); if (Helpers.UserCancels (MainImportingEngine.SpecialStatus, item)) return false; //SongLyricsDonwloader // .DownloadSongLyrics // (item, connectionresult); //if (Helpers.UserCancels // (MainImportingEngine.SpecialStatus, item)) // return false; //MeedioFrMusicArtistBackdropDownloader // .DownloadMusicArtistBackdropFromMeedioFr // (item, mdfSettingsc, // iBaseSystem, connectionresult); //if (Helpers.UserCancels // (MainImportingEngine.SpecialStatus, item)) // return false; #region update iTunes library //if (Settings.WantItunesSync) //{ // if (connectedToiTunes) // { // IiTunes iTunesApp = new iTunesAppClass(); // IITLibraryPlaylist playlist = iTunesApp.LibraryPlaylist; // MainImportingEngine.ThisProgress.Progress(MainImportingEngine.CurrentProgress, // "Adding audio track " + item.Name + // " to iTunes library..."); // try // { // playlist.AddFile(item.Location); // } // catch (Exception e) // { // MessageBox.Show(e.ToString()); // } // } //} #endregion item.SaveTags(); } catch (Exception e) { Debugger.LogMessageToFile( "An uncexpected error occurred in the Music Updater method. The error was: " + e); StatusForm.statusForm.TrayIcon.ShowBalloonTip(10000, "Error updating Music Section", "An uncexpected error occurred in the Music Updater method." + Environment.NewLine + "Please see Debug.log for details.", ToolTipIcon.Error); return true; } currentItem++; return true; }
internal static void PopulateEpisodeMetadata(IMLItem item, bool fileServerIsOnline, bool isUNC, string mdfSettingsb, IBaseSystem iBaseSystem, int seasonNumber, WebClient client, ITVDBSeries series, ITVDBEpisode episode) { if (episode == null) return; if (String.IsNullOrEmpty(episode.ID.Trim()) || episode.ID == null) return; Debugger.LogMessageToFile("Found episode named " + episode.EpisodeName + "with ID " + episode.ID + "."); Debugger.LogMessageToFile("Writing series tags..."); item.Tags["SeriesName"] = series.SeriesName; item.Tags["SeriesIMDbID"] = series.IMDb_ID; item.Tags["SeriesID"] = series.ID; GetEpisodeDetailsAndImages(item, fileServerIsOnline, isUNC, mdfSettingsb, iBaseSystem, client, seasonNumber, episode, series); }
internal static bool LocateOrDownloadFimCoverArt (IMLItem item, string location, string itemTitle, string videoFilename, string parentDirectory, bool fileServerIsOnline, bool isUNC, string metadataFoldersSettingsA, IBaseSystem ibs) { Application.DoEvents(); if (!MeediFier.Settings.FilmCoverArtDownloaderIsEnabled) return false; if (isUNC && !fileServerIsOnline) return false; Application.DoEvents(); if (ImageFileExistsInItemLocatiohn (item, fileServerIsOnline, isUNC)) return true; Application.DoEvents(); var imageFile = ConstructMoviePosterFilePath (item, metadataFoldersSettingsA, ibs); if (String.IsNullOrEmpty(imageFile)) return false; Application.DoEvents(); if (LookForPosterInItemLocation (item, fileServerIsOnline, isUNC, imageFile)) return true; return SearchForAndDownloadFilmCoverArtFromMultipleSources (item, location, videoFilename, metadataFoldersSettingsA, ibs, imageFile); }
internal static bool UpdateMoviesSection (string pluginpath, IBaseSystem iBaseSystem, IEnumerable <string> combinedSceneTags, IMLSection section) { if (section.ItemCount == 0) { return(true); } Debugger.LogMessageToFile (Environment.NewLine + Environment.NewLine + "Film Updater is enabled."); #region Pre-Updating Operations Debugger.LogMessageToFile ("Initializing section variables..."); int totalItems = section.ItemCount; int currentItem = 1; MainImportingEngine .CurrentProgress = 0; MainImportingEngine .GeneralStatus = "Updating Movies Section"; MainImportingEngine .SpecialStatus = ""; #endregion #region Main Updating Loop Debugger.LogMessageToFile ("Beginning to update" + " Films section..."); section.BeginUpdate(); foreach (int id in section.GetAllItemIDs()) { if (!SingleMovieItemUpdater .UpdateFilmItem (id, section, pluginpath, ref currentItem, totalItems, iBaseSystem, combinedSceneTags)) { return(false); } } section.EndUpdate(); Debugger.LogMessageToFile ("Completing updating" + " of Films section..."); #endregion return(true); }
internal static bool SearchForAndDownloadFilmCoverArtFromMultipleSources (IMLItem item, string location, string videoFilename, string mdfSettingsa, IBaseSystem ibs, string imageFile) { #region initialize variables string movieName = Helpers.GetTagValueFromItem(item, "Title"); string releaseYear = Helpers.GetTagValueFromItem(item, "Year"); #endregion string title = Helpers.GetTagValueFromItem(item, "Title"); var imageUrls = new List<string>(); var previewImages = new List<string>(); //PreviewImages = ImageUrls; //TODO: Skip searching secondary sources if cover art is found from the first source. #region Add the image URLs from all sources if (MeediFier.Settings.PosterPrimarySource == "TheMovieDatabase") { if (MeediFier.Settings.TMDbPostersEnabled) { if (imageUrls.Count == 0 || MeediFier.Settings.AlwaysPromptForImages) { //imageUrls.AddRange(TMDbFilmCoverArtScraper.GetFilmPostersFromTMDb(item, ref previewImages)); //tmp = ""; //tmp = GetFilmPosterFromTMDb(Item); //if (!String.IsNullOrEmpty(tmp)) // ImageUrls.Add(tmp); } } if (MeediFier.Settings.ImpAwardsPostersEnabled) { if (imageUrls.Count == 0 || MeediFier.Settings.AlwaysPromptForImages) { List<string> tmpList = ImpAwardsFilmCoverArtDownloader.GetPoster(item, movieName, releaseYear, "Both"); imageUrls.AddRange(tmpList); previewImages.AddRange(tmpList); } } } else { if (MeediFier.Settings.ImpAwardsPostersEnabled) { if (imageUrls.Count == 0 || MeediFier.Settings.AlwaysPromptForImages) { List<string> tmpList = ImpAwardsFilmCoverArtDownloader.GetPoster(item, movieName, releaseYear, "Both"); imageUrls.AddRange(tmpList); previewImages.AddRange(tmpList); } } if (MeediFier.Settings.TMDbPostersEnabled) { if (imageUrls.Count == 0 || MeediFier.Settings.AlwaysPromptForImages) { //imageUrls.AddRange(TMDbFilmCoverArtScraper.GetFilmPostersFromTMDb(item, ref previewImages)); //tmp = ""; //tmp = GetFilmPosterFromTMDb(Item); //if (!String.IsNullOrEmpty(tmp)) // ImageUrls.Add(tmp); } } } if (MeediFier.Settings.IMDbPostersEnabled) { if (imageUrls.Count == 0 || MeediFier.Settings.AlwaysPromptForImages) { string tmp = IMDbCoverArtScraper.GetFilmPosterFromIMDb (item); if (!String.IsNullOrEmpty(tmp)) { imageUrls.Add(tmp); previewImages.Add(tmp); } } } #endregion if (imageUrls.Count == 0 || previewImages.Count == 0) { Debugger.LogMessageToFile("The image URLs list is empty. No online posters were found for this film."); return false; } string posterUrl = ImageSelectionEngine .UserSelectsImage (item, imageUrls, previewImages, "poster"); #region Download Image Helpers.UpdateProgress ("Updating Films Section...", "Downloading film poster for " + title + "...", item); byte[] imageData = MeediFier.Downloaders .TrytoDownloadData(posterUrl, "Movies", "", item); if (imageData == null) return false; #endregion #region Save Image //if (SaveImage(imageData, Item, Importer.PosterNamingMethod, Importer.WhereToSavePoster, Importer.PosterFolder, true, VideoFilename, filepath, "", "") != "") if (ImageFileConstructor.SaveImage(imageData, item,true,"",imageFile) != "") { if (MeediFier.Settings.ResizeFilmPosters) { Helpers.UpdateProgress ("Updating Movies Section", "Resizing image...", item); ImageResizer.ResizeImage (imageFile, imageFile, MeediFier.Settings.FilmPosterWidth, MeediFier.Settings.FilmPosterHeight, false); } item.SaveTags(); return true; } return false; #endregion }
internal static void StartMainImportingEngine(Importer importer, IBaseSystem iBaseSystem, IMLSection section, IEnumerable<string> combinedSceneTags) { GeneralStatus = "Performing media importing..."; SpecialStatus = String.Empty; MediaImportingEngine.ImportMediaFilesMain (combinedSceneTags, importer, section); MediaImportingEngineHelpers .RunMediaSectionsUpdatingEngine (importer, iBaseSystem, section, combinedSceneTags); }
private static string ConstructMoviePosterFilePath(IMLItem item, string metadataFoldersSettingsA, IBaseSystem ibs) { const string ext = ".jpg"; string imageFile; try { imageFile = Movies.CreatePosterFilePath(item, metadataFoldersSettingsA, ext, ibs); } catch (Exception) { Debugger.LogMessageToFile("[Media Image Downloader] " + "The Media Image Downloader was unable to construct the file path" + " for a movie poster image. Movie Poster Metadata Folders were not set."); return String.Empty; } return imageFile; }
internal static bool UpdateTvEpisodeItem (IMLSection section, ref bool fileServerChecked, ref bool fileServerIsOnline, ConnectionResult connectionresult, string mdfSettingsb, IBaseSystem iBaseSystem, IEnumerable<string> combinedSceneTags, TVDBLib tvdb, int totalItems, int id, ref int currentItem) { #region item variables IMLItem item = MediaSectionsAllocator.TvEpisodesSection.FindItemByID(id); string seriesID = string.Empty; //TODO: This var should be removed! const bool isMultipart = false; string location = item.Location; //TODO: This var must be removed! string[] multipart = new string[] {}; bool isUNC = false; DirectoryInfo root; var parentDir = GetParentAndRootDirectories(location, out root); SingleTvEpisodeItemUpdaterHelpers.UpdateProgressTexts(totalItems, currentItem, item); #endregion try { #region Skip Not Listed item if (Helpers.GetTagValueFromItem(item, "NotListed") == "true") return true; if (Helpers.UserCancels(MainImportingEngine.SpecialStatus, item)) return false; #endregion FileServerDiagnostic.CheckFileServer (Settings.WantFileserverDiagnostics, location, ref isUNC, ref fileServerChecked, root.FullName, ref fileServerIsOnline); if (Helpers.UserCancels(MainImportingEngine.SpecialStatus, item)) return false; #region Delete Missing Item if (MissingItemRemover.DeleteMissingItem(Settings.DeleteMissing, isUNC, fileServerIsOnline, location, section, item)) return true; if (Helpers.UserCancels(MainImportingEngine.SpecialStatus, item)) return false; #endregion if (EpisodeFileMetadataExtractor.ExtractMetadataFromEpisodeFilename (item, location, section, MediaSectionsAllocator.TvEpisodesSection, true, combinedSceneTags)) return true; if (Helpers.UserCancels(MainImportingEngine.SpecialStatus, item)) return false; #region Calculate Video Hash TvSeriesOperations.CalculateVideoHash(item, fileServerIsOnline, isUNC, location); if (Helpers.UserCancels(MainImportingEngine.SpecialStatus, item)) return false; #endregion #region Perform Online Tasks if (!SingleTvEpisodeItemUpdaterHelpers.PerfrormOnlineTasks (fileServerChecked, fileServerIsOnline, connectionresult, mdfSettingsb, iBaseSystem, tvdb, currentItem, location, isMultipart, multipart, item, isUNC, seriesID, parentDir)) return false; if (Helpers.UserCancels(MainImportingEngine.SpecialStatus, item)) return false; #endregion SingleTvEpisodeItemUpdaterHelpers.SetProccesedFlag(item); SingleTvEpisodeItemUpdaterHelpers.ProceedToNextItem(ref currentItem, item); } catch (Exception e) { SingleTvEpisodeItemUpdaterHelpers.LogException(e, item); } return true; }
internal static bool UpdateFilmItem (int itemID, IMLSection moviesSection, string pluginpath, ref int currentItem, int totalItems, IBaseSystem iBaseSystem, IEnumerable <string> combinedSceneTags) { MainImportingEngine .CurrentProgress = ImportingEngineHelpers .ComputeProgress (currentItem, totalItems); #region item variables Helpers.UpdateProgress("", "Fetching library item..."); Debugger.LogMessageToFile("Fetching library item..."); var item = moviesSection .FindItemByID(itemID); if (item == null) { return(true); } DirectoryInfo parent; string moviehash, imdbid, tmdbID, year, itemTitle, sortTitle, location; SingleMovieItemUpdaterHelpers.InitializeItemKeys (itemID, item, out moviehash, out imdbid, out tmdbID, out year, out itemTitle, out sortTitle, out location); #endregion Helpers.UpdateProgress("", "Creating filesystem instance..."); Debugger.LogMessageToFile(String.Format ("Creating filesystem instances for media file {0}...", location)); try { var fi = new FileInfo (location); parent = fi.Directory; } catch (Exception e) { Debugger.LogMessageToFile(String.Format ("Unable to create filesystem instances" + " for this media file." + "An error occured: {0}", e)); return(true); } if (IdentifyFilmAndDownloadMetadata (combinedSceneTags, item, parent)) { return(true); } if (Helpers.UserCancels (MainImportingEngine.SpecialStatus)) { return(false); } SetFilmItemProcessingFlags .SetUpdateFlag(item); item.SaveTags(); currentItem++; return(true); }