/// <summary> /// Downloads the image for the results url and sets it to the internal title object /// </summary> /// <param name="result"></param> private void DownloadImage(OMLSDKTitle title, string imageUrl) { if (!string.IsNullOrEmpty(imageUrl)) { string tempFileName = Path.GetTempFileName(); WebClient web = new WebClient(); try { web.DownloadFile(imageUrl, tempFileName); title.FrontCoverPath = tempFileName; } catch { File.Delete(tempFileName); } } }
public override void ProcessFile(string file) { SDKUtilities.DebugLine("[MyMoviesImporter] created[filename(" + file + ")]"); currentFile = file; if (File.Exists(currentFile)) { XmlDocument xDoc = new XmlDocument(); xDoc.Load(file); SDKUtilities.DebugLine("[MyMoviesImporter] file loaded"); XmlNodeList nodeList = xDoc.SelectNodes("//Titles/Title"); if (nodeList.Count == 0) { nodeList = xDoc.SelectNodes("Title"); } foreach (XmlNode movieNode in nodeList) { SDKUtilities.DebugLine("[MyMoviesImporter] Found base Title node"); OMLSDKTitle newTitle = new OMLSDKTitle(); XPathNavigator navigator = movieNode.CreateNavigator(); newTitle.Name = GetChildNodesValue(navigator, "LocalTitle"); loadDataFromNavigatorToTitle(ref navigator, ref newTitle); if (ValidateTitle(newTitle, file)) { SDKUtilities.DebugLine("[MyMoviesImporter] Validating title"); try { AddTitle(newTitle); } catch (Exception e) { SDKUtilities.DebugLine("[MyMoviesImporter] Error adding row: " + e.Message); } } else { SDKUtilities.DebugLine("[MyMoviesImporter] Error saving row"); } } } else { AddError("[MyMoviesImporter] File not found when trying to load file: {0}", currentFile); } }
public void GetImagesForNewTitle(OMLSDKTitle newTitle) { string id = newTitle.MetadataSourceID; if (!string.IsNullOrEmpty(id)) { if (imagesPath != null && Directory.Exists(imagesPath)) { if (File.Exists(Path.Combine(imagesPath, string.Format("{0}f.{1}", id, @"jpg")))) { newTitle.FrontCoverPath = Path.Combine(imagesPath, string.Format("{0}f.{1}", id, @"jpg")); } if (File.Exists(Path.Combine(imagesPath, string.Format("{0}b.{1}", id, @"jpg")))) { newTitle.BackCoverPath = Path.Combine(imagesPath, string.Format("{0}b.{1}", id, @"jpg")); } } } }
public void TEST_MULTIPLE_DISCS_FAIL_TO_IMPORT() { MyMoviesImporter importer = new MyMoviesImporter(); importer.ProcessFile(@"..\..\..\Sample Files\mymovies-multiple-avi-files-bug.xml"); IList <OMLSDKTitle> titles = importer.GetTitles(); Assert.AreEqual(1, titles.Count); OMLSDKTitle t = titles[0]; Assert.AreEqual("f7262c3b-f1a3-4128-a026-c7abdbbd6e51", t.MetadataSourceID); Assert.AreEqual("Beatles Anthology, The", t.Name); Assert.AreEqual("1.33:1", t.AspectRatio); Assert.AreEqual(3, t.AudioTracks.Count); Assert.AreEqual("English, Dolby Digital, 5.1", t.AudioTracks[0]); Assert.AreEqual("English, DTS, 5.1", t.AudioTracks[1]); Assert.AreEqual("English, PCM, 2.0", t.AudioTracks[2]); Assert.AreEqual("United States", t.CountryOfOrigin); Assert.AreEqual(new DateTime(1995, 01, 01), t.ReleaseDate); Assert.AreEqual(674, t.Runtime); Assert.AreEqual("PG", t.ParentalRating); Assert.AreEqual(3, t.Genres.Count); Assert.AreEqual("Music", t.Genres[0]); Assert.AreEqual("Documentary", t.Genres[1]); Assert.AreEqual("Special Interest", t.Genres[2]); Assert.AreEqual(6, t.Subtitles.Count); Assert.AreEqual("English", t.Subtitles[0]); Assert.AreEqual("German", t.Subtitles[1]); Assert.AreEqual("Spanish", t.Subtitles[2]); Assert.AreEqual("French", t.Subtitles[3]); Assert.AreEqual("Italian", t.Subtitles[4]); Assert.AreEqual("Portuguese", t.Subtitles[5]); Assert.AreEqual("Apple Films", t.Studio); Assert.AreEqual(1, t.Disks.Count); // this is because none of the files exist but it finds a wpl file the original source location Assert.AreEqual("Nudity, hahaha", t.ParentalRatingReason); Assert.AreEqual("NTSC", t.VideoStandard); Assert.AreEqual(1, t.Directors.Count); Assert.AreEqual("Geoff Wonfor", ((OMLSDKPerson)t.Directors[0]).full_name); }
public void TEST_DISCS() { OMLSDKTitle title = LoadTitle("1"); Assert.AreEqual(3, title.Disks.Count, "The number of disks is incorrect"); Assert.AreEqual(VideoFormat.MKV, title.Disks[0].Format, "Video format for disk 1a is incorrect"); Assert.AreEqual("Main Feature", title.Disks[0].Name, "Name for disk 1a is incorrect"); Assert.AreEqual(@"\\unc_server\share\folder with space\file.mkv", title.Disks[0].Path, "Path for disk 1a is incorrect"); Assert.AreEqual(VideoFormat.ISO, title.Disks[1].Format, "Video format for disk 1b is incorrect"); Assert.AreEqual("Bonus Materials", title.Disks[1].Name, "Name for disk 1b is incorrect"); Assert.AreEqual(@"Z:\folder\image.iso", title.Disks[1].Path, "Path for disk 1b is incorrect"); Assert.AreEqual(VideoFormat.UNKNOWN, title.Disks[2].Format, "Video format for disk 2a is incorrect"); Assert.AreEqual("Disc 2a", title.Disks[2].Name, "Name for disk 2a is incorrect"); Assert.AreEqual(@"\\127.0.0.1\share\folder\unknown.unknown", title.Disks[2].Path, "Path for disk 2a is incorrect"); title = LoadTitle("2"); Assert.AreEqual(0, title.Disks.Count, "The second DVD should not have any disks defined."); }
private void ReadFilmReview(OMLSDKTitle title, XPathNavigator reviewNavigator) { switch (reviewNavigator.GetAttribute("Film", String.Empty)) { case "9": title.UserStarRating = 100; break; case "8": title.UserStarRating = 90; break; case "7": title.UserStarRating = 80; break; case "6": title.UserStarRating = 70; break; case "5": title.UserStarRating = 60; break; case "4": title.UserStarRating = 50; break; case "3": title.UserStarRating = 40; break; case "2": title.UserStarRating = 20; break; // Have to skip somewhere to avoid fractions :( case "1": title.UserStarRating = 10; break; } }
private static OMLSDKTitle LoadTitle(string id) { if (string.IsNullOrEmpty(id)) { throw new ArgumentNullException("id"); } OMLSDKTitle result = null; if (defaultTitles == null) { DVDProfilerImporter importer; using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(defaultSettings), false)) { importer = new DVDProfilerImporter(new XmlTextReader(ms)); } string xmlPath = @"..\..\..\Sample Files\DVDProfilerUnitTest.xml"; importer.DoWork(new[] { xmlPath }); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlPath); defaultTitles = importer.GetTitles(); Assert.AreEqual(xmlDoc.SelectNodes("Collection/DVD").Count, defaultTitles.Count, "Unexpected number of profiles loaded."); } foreach (OMLSDKTitle title in defaultTitles) { if (title.MetadataSourceID == id) { result = title; break; } } Assert.IsNotNull(result, "The DVDProfilerUnitTest.xml file does not contain a title with ID " + id); return(result); }
// Collection/DVD/Audio/* private void HandleAudio(OMLSDKTitle title, XPathNavigator audioTracksNavigator) { foreach (XPathNavigator audioTrackNavigator in audioTracksNavigator.SelectChildren("AudioTrack", string.Empty)) { string content = null; string format = null; foreach (XPathNavigator audioTrackElementNavigator in audioTrackNavigator.SelectChildren(string.Empty, string.Empty)) { switch (audioTrackElementNavigator.Name) { case "AudioContent": content = audioTrackElementNavigator.Value; break; case "AudioFormat": format = audioTrackElementNavigator.Value; break; } } // Move both into content, leaving it null if none of them are set if (string.IsNullOrEmpty(content)) { content = format; } else if (!string.IsNullOrEmpty(format)) { content += " (" + format + ")"; } if (!string.IsNullOrEmpty(content)) { title.AddAudioTrack(content); } } }
private void loadDataFromNavigatorToTitle(ref XPathNavigator navigator, ref OMLSDKTitle newTitle) { SDKUtilities.DebugLine("[MyMoviesImporter] Loading data for a new title"); newTitle.MetadataSourceID = GetChildNodesValue(navigator, "WebServiceID"); #region covers SDKUtilities.DebugLine("[MyMoviesImporter] Scanning for {0} node", "Covers"); if (navigator.MoveToChild("Covers", "")) { SDKUtilities.DebugLine("[MyMoviesImporter] Covers found, processing"); SDKUtilities.DebugLine("[MyMoviesImporter] Scanning for {0} node", "Front"); if (navigator.MoveToChild("Front", "")) { string imagePath = navigator.Value; string finalImagePath = FindFinalImagePath(imagePath); SDKUtilities.DebugLine("[MyMoviesImporter] Final image path is: {0}", finalImagePath); if (File.Exists(finalImagePath)) { SDKUtilities.DebugLine("[MyMoviesImporter] This file appears to be valid, we'll set it on the title"); newTitle.FrontCoverPath = finalImagePath; } navigator.MoveToParent(); } SDKUtilities.DebugLine("[MyMoviesImporter] Scanning for {0} node", "Back"); if (navigator.MoveToChild("Back", "")) { string imagePath = navigator.Value; if (File.Exists(imagePath)) { SDKUtilities.DebugLine("[MyMoviesImporter] Found Back cover image"); newTitle.BackCoverPath = imagePath; } navigator.MoveToParent(); } navigator.MoveToParent(); } #endregion newTitle.Synopsis = GetChildNodesValue(navigator, "Description"); #region production year if (navigator.MoveToChild("ProductionYear", "")) { SDKUtilities.DebugLine("[MyMoviesImporter] Found production year, I hope the format is something we can read"); try { string year = navigator.Value; if (!string.IsNullOrEmpty(year)) { DateTime rls_date = new DateTime(int.Parse(year), 1, 1); if (rls_date != null) { SDKUtilities.DebugLine("[MyMoviesImporter] Got it, loading the production year"); newTitle.ReleaseDate = rls_date; } } navigator.MoveToParent(); } catch (Exception e) { navigator.MoveToParent(); SDKUtilities.DebugLine("[MyMoviesImporter] error reading ProductionYear: " + e.Message); } } #endregion #region parental rating (mpaa rating) if (navigator.MoveToChild("ParentalRating", "")) { SDKUtilities.DebugLine("[MyMoviesImporter] Scanning for the ParentalRating"); if (navigator.HasChildren) { string ratingId = GetChildNodesValue(navigator, "Value"); if (!string.IsNullOrEmpty(ratingId)) { int mmRatingId; if (int.TryParse(ratingId, out mmRatingId)) { switch (mmRatingId) { case 0: SDKUtilities.DebugLine("[MyMoviesImporter] This appears to be unrated"); newTitle.ParentalRating = "Unrated"; break; case 1: SDKUtilities.DebugLine("[MyMoviesImporter] This appears to be rated G"); newTitle.ParentalRating = "G"; break; case 2: SDKUtilities.DebugLine("[MyMoviesImporter] I have no idea what rating this is"); break; case 3: SDKUtilities.DebugLine("[MyMoviesImporter] This appears to be rated PG"); newTitle.ParentalRating = "PG"; break; case 4: SDKUtilities.DebugLine("[MyMoviesImporter] This appears to be rated PG13"); newTitle.ParentalRating = "PG13"; break; case 5: SDKUtilities.DebugLine("[MyMoviesImporter] I have NO idea what rating this is"); break; case 6: SDKUtilities.DebugLine("[MyMoviesImporter] This appears to be rated R"); newTitle.ParentalRating = "R"; break; } } else { SDKUtilities.DebugLine("[MyMoviesImporter] Error parsing rating: {0} not a number", ratingId); } } string ratingReason = GetChildNodesValue(navigator, "Description"); if (!string.IsNullOrEmpty(ratingReason)) { newTitle.ParentalRatingReason = ratingReason; } } navigator.MoveToParent(); } #endregion newTitle.Runtime = Int32.Parse(GetChildNodesValue(navigator, "RunningTime")); #region persons if (navigator.MoveToChild("Persons", "")) { SDKUtilities.DebugLine("[MyMoviesImporter] Beginning the long, painful process of scanning people"); if (navigator.HasChildren) { XPathNodeIterator nIter = navigator.SelectChildren("Person", ""); if (navigator.MoveToFirstChild()) { XPathNavigator localNav = navigator.CreateNavigator(); navigator.MoveToParent(); for (int i = 0; i < nIter.Count; i++) { string name = GetChildNodesValue(localNav, "Name"); string role = GetChildNodesValue(localNav, "Role"); string type = GetChildNodesValue(localNav, "Type"); if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(type)) { switch (type) { case "Actor": SDKUtilities.DebugLine("[MyMoviesImporter] actor {0}, {1}", name, role); newTitle.AddActingRole(name, role); break; case "Director": SDKUtilities.DebugLine("[MyMoviesImporter] director {0}", name); newTitle.AddDirector(new OMLSDKPerson(name)); break; default: break; } } localNav.MoveToNext("Person", ""); } } } navigator.MoveToParent(); } #endregion #region studio (s) if (navigator.MoveToChild("Studios", "")) { SDKUtilities.DebugLine("[MyMoviesImporter] Ahh... Studios (pssst.. we only copy the last entry from here... dont tell anyone)"); if (navigator.HasChildren) { XPathNodeIterator nIter = navigator.SelectChildren("Studio", ""); if (navigator.MoveToFirstChild()) { XPathNavigator localNav = navigator.CreateNavigator(); navigator.MoveToParent(); for (int i = 0; i < nIter.Count; i++) { newTitle.Studio = localNav.Value; } } } navigator.MoveToParent(); } #endregion newTitle.CountryOfOrigin = GetChildNodesValue(navigator, "Country"); newTitle.AspectRatio = GetChildNodesValue(navigator, "AspectRatio"); newTitle.VideoStandard = GetChildNodesValue(navigator, "VideoStandard"); newTitle.OriginalName = GetChildNodesValue(navigator, "OriginalTitle"); newTitle.SortName = GetChildNodesValue(navigator, "SortTitle"); #region genres if (navigator.MoveToChild("Genres", "")) { SDKUtilities.DebugLine("[MyMoviesImporter] Genres... good old genres"); XPathNodeIterator nIter = navigator.SelectChildren("Genre", ""); if (navigator.MoveToFirstChild()) { XPathNavigator localNav = navigator.CreateNavigator(); navigator.MoveToParent(); for (int i = 0; i < nIter.Count; i++) { newTitle.AddGenre(localNav.Value); localNav.MoveToNext("Genre", ""); } } navigator.MoveToParent(); } #endregion #region audio tracks if (navigator.MoveToChild("AudioTracks", "")) { SDKUtilities.DebugLine("[MyMoviesImporter] AudioTracks.. yeah, like you can even change them anyway"); XPathNodeIterator nIter = navigator.SelectChildren("AudioTrack", ""); if (navigator.MoveToFirstChild()) { XPathNavigator localNav = navigator.CreateNavigator(); navigator.MoveToParent(); for (int i = 0; i < nIter.Count; i++) { string audioLanguage = localNav.GetAttribute("Language", ""); string audioType = localNav.GetAttribute("Type", ""); string audioChannels = localNav.GetAttribute("Channels", ""); if (!string.IsNullOrEmpty(audioLanguage)) { string audioTrackString = audioLanguage; if (!string.IsNullOrEmpty(audioType)) { audioTrackString += string.Format(", {0}", audioType); } if (!string.IsNullOrEmpty(audioChannels)) { audioTrackString += string.Format(", {0}", audioChannels); } SDKUtilities.DebugLine("[MyMoviesImporter] Got one: {0}, {1}, {2}", audioLanguage, audioType, audioChannels); newTitle.AddAudioTrack(audioTrackString); } localNav.MoveToNext("AudioTrack", ""); } } navigator.MoveToParent(); } #endregion #region watched status (Submitted by yodine from our forums) if (navigator.MoveToChild("Watched", "")) { navigator.MoveToParent(); // move back, we just wanted to know this field existed. SDKUtilities.DebugLine("[MyMoviesImporter] Found Watched status. Trying to decode"); string watched = GetChildNodesValue(navigator, "Watched"); if (!string.IsNullOrEmpty(watched)) { if (Boolean.Parse(watched)) { newTitle.WatchedCount++; } } } #endregion #region subtitles if (navigator.MoveToChild("Subtitles", "")) { SDKUtilities.DebugLine("[MyMoviesImporter] Subtitles here we come!"); if (navigator.GetAttribute("NotPresent", "").CompareTo("False") == 0) { XPathNodeIterator nIter = navigator.SelectChildren("Subtitle", ""); if (navigator.MoveToFirstChild()) { XPathNavigator localNav = navigator.CreateNavigator(); navigator.MoveToParent(); for (int i = 0; i < nIter.Count; i++) { string subtitleLanguage = localNav.GetAttribute("Language", ""); if (!string.IsNullOrEmpty(subtitleLanguage)) { SDKUtilities.DebugLine("[MyMoviesImporter] Subtitle {0}", subtitleLanguage); newTitle.AddSubtitle(subtitleLanguage); } localNav.MoveToNext("Subtitle", ""); } } } navigator.MoveToParent(); } #endregion #region discs if (navigator.MoveToChild("Discs", "")) { SDKUtilities.DebugLine("[MyMoviesImporter] Discs... ok here is the good one, we'll passing this off to some other method to handle."); XPathNodeIterator nIter = navigator.SelectChildren("Disc", ""); if (navigator.MoveToFirstChild()) { XPathNavigator localNav = navigator.CreateNavigator(); extractDisksFromXML(nIter, localNav, newTitle); navigator.MoveToParent(); } navigator.MoveToParent(); } #endregion }
public OMLSDKTitle LoadTitle(XPathNavigator dvdNavigator, bool lookForDiskInfo) { OMLSDKTitle title = new OMLSDKTitle(); OMLSDKVideoFormat videoFormat = OMLSDKVideoFormat.DVD; string notes = string.Empty; var discs = new Dictionary <string, string>(); // The key is on the form "1a", "10b", etc - the value is the description foreach (XPathNavigator dvdElement in dvdNavigator.SelectChildren(XPathNodeType.Element)) { switch (dvdElement.Name) { case "ID": title.MetadataSourceID = dvdElement.Value; break; case "MediaTypes": videoFormat = HandleMediaTypes(dvdElement); break; case "UPC": title.UPC = dvdElement.Value; break; case "Title": title.Name = dvdElement.Value; break; case "OriginalTitle": title.OriginalName = dvdElement.Value; break; case "SortTitle": title.SortName = dvdElement.Value; break; case "CountryOfOrigin": title.CountryOfOrigin = dvdElement.Value; break; /*case "ProductionYear": * // Set to January first in the appropriate year in lack of better... * int releaseYear; * if (TryReadItemInt(dvdElement, out releaseYear)) * { * title.ReleaseDate = new DateTime(releaseYear, 1, 1); * } * break;*/ // Fix from DVDJunkie // http://www.ornskov.dk/forum/index.php?topic=1605.msg12171#msg12171 case "ProductionYear": string ryear = dvdElement.Value; try { if (!string.IsNullOrEmpty(ryear)) { title.ProductionYear = Convert.ToInt32(ryear); } } catch (FormatException) { } break; case "Released": string rdate = dvdElement.Value; try { if (!string.IsNullOrEmpty(rdate)) { title.ReleaseDate = DateTime.Parse(rdate); } } catch (ArgumentException) { } catch (FormatException) { } break; case "RunningTime": int runningTime; if (TryReadItemInt(dvdElement, out runningTime)) { title.Runtime = runningTime; } break; case "Rating": title.ParentalRating = dvdElement.Value; break; case "RatingDetails": title.ParentalRatingReason = dvdElement.Value; break; case "Genres": foreach (XPathNavigator genreNavigator in dvdElement.Select("Genre[. != '']")) { title.AddGenre(genreNavigator.Value); } break; case "Format": HandleFormat(title, dvdElement); break; case "Studios": var studioNavigator = dvdElement.SelectSingleNode("Studio[. != '']"); if (studioNavigator != null) { title.Studio = studioNavigator.Value; } break; case "Audio": HandleAudio(title, dvdElement); break; case "Subtitles": foreach (XPathNavigator subtitleNavigator in dvdElement.SelectChildren("Subtitle", string.Empty)) { title.AddSubtitle(subtitleNavigator.Value); } break; case "Actors": HandleActors(title, dvdElement); break; case "Credits": HandleCredits(title, dvdElement); break; case "Review": ReadFilmReview(title, dvdElement); break; case "Overview": string synopsis = removeFormattingRegex.Replace(dvdElement.Value, string.Empty); title.Synopsis = removeExtraLinebreaksRegex.Replace(synopsis, "\r\n").Trim(); break; case "Discs": discs = HandleDiscs(dvdElement); break; case "Notes": notes = dvdElement.Value; break; case "PurchaseInfo": HandlePurchaseInfo(title, dvdElement); break; } } if (lookForDiskInfo) { MergeDiscInfo(title, videoFormat, discs, notes); } ApplyTags(title, dvdNavigator); return(title); }
public bool SearchForMovie(string movieName, int maxResults) { if (_xmlFile == null) { Initialize(PluginName, null); } if (_xmlFile == null) { return(false); } if (!File.Exists(_xmlFile)) { return(false); } DataSet ds = new DataSet(); ds.ReadXml(_xmlFile); movieName = movieName.ToLowerInvariant(); List <DataRow> dvds = (from dvd in ds.Tables["DVD"].AsEnumerable() where dvd.Field <String>("Title").ToLowerInvariant().Contains(movieName) select dvd).ToList <DataRow>(); List <OMLSDKTitle> dvdList = new List <OMLSDKTitle>(); foreach (DataRow dr in dvds) { OMLSDKTitle t = new OMLSDKTitle(); t.Name = (String)dr["Title"]; t.ParentalRating = (String)dr["Rating"]; t.Synopsis = (String)dr["Overview"]; t.CountryOfOrigin = (String)dr["CountryOfOrigin"]; t.UPC = (String)dr["UPC"]; t.OriginalName = (String)dr["OriginalTitle"]; t.SortName = (String)dr["SortTitle"]; int runTime; if (int.TryParse((String)dr["RunningTime"], out runTime)) { t.Runtime = runTime; } DateTime dtReleased; if (DateTime.TryParse((String)dr["Released"], out dtReleased)) { t.ReleaseDate = dtReleased; } int prodYr; if (int.TryParse((String)dr["ProductionYear"], out prodYr)) { t.ProductionYear = prodYr; } t.FrontCoverPath = Path.Combine(DVDProfilerImageDir, (String)dr["ID"] + @"f.jpg"); t.BackCoverPath = Path.Combine(DVDProfilerImageDir, (String)dr["ID"] + @"b.jpg"); if (ds.Relations.Contains("DVD_Format")) { DataRow Format = dr.GetChildRows("DVD_Format")[0]; t.VideoStandard = (String)Format["FormatVideoStandard"]; t.VideoResolution = (String)Format["FormatAspectRatio"]; } if (ds.Relations.Contains("DVD_Genres") && ds.Relations.Contains("Genres_Genre")) { DataRow genres = dr.GetChildRows("DVD_Genres")[0]; foreach (DataRow gen in genres.GetChildRows("Genres_Genre")) { String genre = (String)gen[0]; t.Genres.Add(genre); } } if (ds.Relations.Contains("DVD_Actors") && ds.Relations.Contains("Actors_Actor")) { DataRow actors = dr.GetChildRows("DVD_Actors")[0]; foreach (DataRow actor in actors.GetChildRows("Actors_Actor")) { String fullName = String.Format(@"{0} {1}", actor["FirstName"], actor["LastName"]); t.AddActingRole(fullName, (String)actor["Role"]); } } if (ds.Relations.Contains("DVD_Credits") && ds.Relations.Contains("Credits_Credit")) { DataRow credits = dr.GetChildRows("DVD_Credits")[0]; foreach (DataRow credit in credits.GetChildRows("Credits_Credit")) { String CreditType = (String)credit["CreditType"]; String fullName = String.Format(@"{0} {1}", credit["FirstName"], credit["LastName"]); if (CreditType == "Direction") { t.AddDirector(new OMLSDKPerson(fullName)); } else if (CreditType == "Writing") { t.AddWriter(new OMLSDKPerson(fullName)); } else if (CreditType == "Production") { t.AddProducer(new OMLSDKPerson(fullName)); } } } List <String> _studios = new List <String>(); if (ds.Relations.Contains("DVD_Studios") && ds.Relations.Contains("Studios_Studio")) { DataRow studios = dr.GetChildRows("DVD_Studios")[0]; foreach (DataRow studio in studios.GetChildRows("Studios_Studio")) { _studios.Add((String)studio[0]); } } t.Studio = String.Join("; ", _studios.ToArray <String>()); dvdList.Add(t); } _searchResult = new DVDProfilerSearchResult(dvdList, dvds.Count, dvds.Count); bool rslt = (dvds.Count > 0); ds.Dispose(); ds = null; return(rslt); }
public bool SearchForMovie(string movieName, int maxResults) { _locale = AmazonLocale.FromString(Properties.Settings.Default.AmazonLocale); BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; client = new AWSECommerceServicePortTypeClient( binding, new EndpointAddress(_locale.URL) ); client.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior()); try { ItemSearchRequest req = new ItemSearchRequest(); req.SearchIndex = Properties.Settings.Default.AmazonSearchMode; req.Title = movieName; req.ItemPage = @"1"; req.ResponseGroup = new string[] { "Medium", "Subjects" }; ItemSearch iSearch = new ItemSearch(); iSearch.Request = new ItemSearchRequest[] { req }; iSearch.AWSAccessKeyId = Properties.Settings.Default.AWEAccessKeyId; ItemSearchResponse res = client.ItemSearch(iSearch); if (res.Items[0].Item.Length > 0) { Item[] amazonItems = res.Items[0].Item; int itemsToProcess = Math.Min(amazonItems.Length, maxResults); if (amazonItems != null) { // convert Amazon Items to generic collection of DVDs OMLSDKTitle[] searchResults = new OMLSDKTitle[itemsToProcess]; for (int i = 0; i < itemsToProcess; i++) { searchResults[i] = AmazonToOML.TitleFromAmazonItem(amazonItems[i]); } int totalPages = 0; int totalItems = 0; if (res.Items[0].TotalPages != null) { totalPages = Convert.ToInt32(res.Items[0].TotalPages); } if (res.Items[0].TotalResults != null) { totalItems = Convert.ToInt32(res.Items[0].TotalResults); } _searchResult = (new AmazonSearchResult(searchResults, totalPages, totalItems)); } else { _searchResult = (new AmazonSearchResult(null, 0, 0)); } return(true); } } catch { _searchResult = (new AmazonSearchResult(null, 0, 0)); } return(false); }
public void GetMovies(string startFolder) { try { List <string> moviePaths = new List <string>(); List <string> dirList = new List <string>(); List <string> fileList = new List <string>(); GetSubFolders(startFolder, dirList); // the share or link may not exist nowbb if (Directory.Exists(startFolder)) { dirList.Add(startFolder); } foreach (string currentFolder in dirList) { SDKUtilities.DebugLine("DVDImporter: folder " + currentFolder); if (currentFolder.ToUpperInvariant().Contains("fanart".ToUpperInvariant())) { SDKUtilities.DebugLine("[DVDImporter] Skipping fanart directory"); } else { OMLSDKTitle dvd = GetDVDMetaData(currentFolder); string[] fileNames = null; try { fileNames = Directory.GetFiles(currentFolder); } catch { fileNames = null; } if (dvd != null) { // if any video files are found in the DVD folder assume they are trailers if (fileNames != null) { foreach (string video in fileNames) { string extension = Path.GetExtension(video).ToUpper(); if (Enum.IsDefined(typeof(OMLSDKVideoFormat), extension.ToUpperInvariant())) { foreach (OMLSDKVideoFormat format in Enum.GetValues(typeof(OMLSDKVideoFormat))) { if (Enum.GetName(typeof(OMLSDKVideoFormat), format).ToLowerInvariant() == extension) { dvd.AddTrailer(video); } } } } } AddTitle(dvd); }// found dvd else { if (fileNames != null && fileNames.Length > 0) { if (OMLEngine.Settings.OMLSettings.TreatFoldersAsTitles) { OMLSDKTitle newVideo = new OMLSDKTitle(); // Create the title name DirectoryInfo di = new DirectoryInfo(currentFolder); newVideo.Name = ""; if (OMLEngine.Settings.OMLSettings.AddParentFoldersToTitleName) { // If AddParentFolderToTitleName is true then check if the parent folder // Is the startfolder. If not add parent folder to name DirectoryInfo st = new DirectoryInfo(startFolder); if (st.Name != di.Parent.Name) { newVideo.Name = di.Parent.Name + " - "; } } newVideo.Name += (new DirectoryInfo(currentFolder)).Name; int diskNumber = 1; foreach (string video in fileNames) { try { string extension = Path.GetExtension(video).ToUpper().Substring(1); extension = extension.Replace("-", ""); if (Enum.IsDefined(typeof(OMLSDKVideoFormat), extension.ToUpperInvariant())) { OMLSDKDisk disk = new OMLSDKDisk(); disk.Path = video; disk.Format = (OMLSDKVideoFormat)Enum.Parse(typeof(OMLSDKVideoFormat), extension, true); disk.Name = string.Format("Disk {0}", diskNumber++); newVideo.AddDisk(disk); } } catch (Exception ex) { SDKUtilities.DebugLine("[DVDLibraryImporter] Problem importing file " + video + " : " + ex.Message); } } if (File.Exists(Path.Combine(currentFolder, "folder.jpg"))) { newVideo.FrontCoverPath = Path.Combine(currentFolder, "folder.jpg"); } if (newVideo.Disks.Count > 0) { // There is one or more valid disks for this title. Add it. //string temp = newVideo.BackDropFolder; // This initialises the fanart folder forcing a search for fanart AddTitle(newVideo); } } else { foreach (string video in fileNames) { try { string extension = Path.GetExtension(video).ToUpper().Substring(1); extension = extension.Replace("-", ""); if (Enum.IsDefined(typeof(OMLSDKVideoFormat), extension.ToUpperInvariant())) { // this isn't 100% safe since there are videoformats that don't map 1-1 to extensions OMLSDKVideoFormat videoFormat = (OMLSDKVideoFormat)Enum.Parse(typeof(OMLSDKVideoFormat), extension, true); OMLSDKTitle newVideo = new OMLSDKTitle(); newVideo.Name = GetSuggestedMovieName(Path.GetFileNameWithoutExtension(video)); OMLSDKDisk disk = new OMLSDKDisk(); disk.Path = video; disk.Name = "Disk 1"; disk.Format = videoFormat; string pathWithNoExtension = Path.GetDirectoryName(video) + "\\" + Path.GetFileNameWithoutExtension(video); if (File.Exists(pathWithNoExtension + ".jpg")) { newVideo.FrontCoverPath = pathWithNoExtension + ".jpg"; } else if (File.Exists(video + ".jpg")) { newVideo.FrontCoverPath = video + ".jpg"; } else if (File.Exists(Path.GetDirectoryName(video) + "\\folder.jpg")) { newVideo.FrontCoverPath = Path.GetDirectoryName(video) + "\\folder.jpg"; } newVideo.AddDisk(disk); //string temp = newVideo.BackDropFolder; // This initialises the fanart folder forcing a search for fanart AddTitle(newVideo); } } catch (Exception ex) { SDKUtilities.DebugLine("[DVDLibraryImporter] Problem importing file " + video + " : " + ex.Message); } } } } } } } // loop through the sub folders } catch (Exception ex) { SDKUtilities.DebugLine("[DVDLibraryImporter] An error occured: " + ex.Message); } }
private void UpdateTitleFromOMLXML(OMLSDKTitle t) { }
private OMLSDKTitle ReadMetaData(string movieFolder, string dvdCacheXMLFile) { OMLSDKTitle t = new OMLSDKTitle(); try { if (File.Exists(dvdCacheXMLFile)) { XmlReaderSettings xmlSettings = new XmlReaderSettings(); xmlSettings.IgnoreWhitespace = false; using (XmlReader reader = XmlReader.Create(dvdCacheXMLFile, xmlSettings)) { bool bFound = reader.ReadToFollowing("MDR-DVD"); if (!bFound) { return(null); } bFound = reader.ReadToFollowing("dvdTitle"); if (!bFound) { return(null); } t.Name = reader.ReadString().Trim(); bFound = reader.ReadToFollowing("studio"); if (bFound) { t.Studio = reader.ReadString().Trim(); } bFound = reader.ReadToFollowing("leadPerformer"); if (bFound) { string leadPerformer = reader.ReadString(); string[] actors = leadPerformer.Split(new char[] { ';', ',', '|' }); foreach (string actor in actors) { t.AddActingRole(actor.Trim(), ""); } } bFound = reader.ReadToFollowing("director"); if (bFound) { string directorList = reader.ReadString(); string[] directors = directorList.Split(new char[] { ';', ',', '|' }); foreach (string director in directors) { t.AddDirector(new OMLSDKPerson(director.Trim())); } } bFound = reader.ReadToFollowing("MPAARating"); if (bFound) { t.ParentalRating = reader.ReadString().Trim(); } bFound = reader.ReadToFollowing("language"); if (bFound) { t.AddAudioTrack(reader.ReadString().Trim()); } bFound = reader.ReadToFollowing("releaseDate"); if (bFound) { string releaseDate = reader.ReadString().Trim(); DateTime dt; if (DateTime.TryParse(releaseDate, out dt)) { t.ReleaseDate = dt; } } bFound = reader.ReadToFollowing("genre"); if (bFound) { string genreList = reader.ReadString(); string[] genres = genreList.Split(new char[] { ';', ',', '|' }); foreach (string genre in genres) { t.AddGenre(genre.Trim()); } } string imageFileName = ""; bFound = reader.ReadToFollowing("largeCoverParams"); if (bFound) { imageFileName = reader.ReadString().Trim(); if (!File.Exists(imageFileName) && File.Exists(movieFolder + "\\folder.jpg")) { imageFileName = movieFolder + "\\folder.jpg"; } } else if (File.Exists(movieFolder + "\\folder.jpg")) { imageFileName = movieFolder + "\\folder.jpg"; } t.FrontCoverPath = imageFileName; bFound = reader.ReadToFollowing("duration"); if (bFound) { int runtime; if (Int32.TryParse(reader.ReadString(), out runtime)) { t.Runtime = runtime; } } bFound = reader.ReadToFollowing("synopsis"); if (bFound) { t.Synopsis = reader.ReadString().Trim(); } } } else { return(null); } } catch (Exception ex) { SDKUtilities.DebugLine("[DVDLibraryImporter] An error occured: " + ex.Message); return(null); } return(t); }
public override void ProcessFile(string file) { OMLSDKTitle newTitle = new OMLSDKTitle(); String fPath = Path.GetDirectoryName(file); newTitle.Name = Path.GetFileNameWithoutExtension(file); IDictionary meta; DvrmsMetadataEditor editor = new DvrmsMetadataEditor(file); meta = editor.GetAttributes(); foreach (string item in meta.Keys) { MetadataItem attr = (MetadataItem)meta[item]; switch (item) { case DvrmsMetadataEditor.Title: string sTitle = (string)attr.Value; sTitle = sTitle.Trim(); if (!String.IsNullOrEmpty(sTitle)) { newTitle.Name = sTitle; } newTitle.ImporterSource = @"DVRMSImporter"; newTitle.MetadataSourceName = @"DVR-MS"; OMLSDKDisk disk = new OMLSDKDisk(); string ext = Path.GetExtension(file).Substring(1).Replace(@"-", @""); disk.Format = (OMLSDKVideoFormat)Enum.Parse(typeof(OMLSDKVideoFormat), ext, true); SDKUtilities.DebugLine("[DVRMSPlugin] Adding file: " + Path.GetFullPath(file)); disk.Path = Path.GetFullPath(file); disk.Name = @"Disk 1"; newTitle.AddDisk(disk); //newTitle.FileLocation = file; if (!String.IsNullOrEmpty(newTitle.AspectRatio)) { newTitle.AspectRatio = @"Widescreen"; } //string ext = Path.GetExtension(file).Substring(1).Replace(@"-", @""); //newTitle.VideoFormat = (VideoFormat)Enum.Parse(typeof(VideoFormat), ext, true); string cover = fPath + @"\" + Path.GetFileNameWithoutExtension(file) + @".jpg"; if (File.Exists(cover)) { SDKUtilities.DebugLine("[DVRMSPlugin] Setting CoverArt: " + Path.GetFullPath(cover)); newTitle.FrontCoverPath = Path.GetFullPath(cover); //newTitle.FrontCoverPath = cover; } else { SDKUtilities.DebugLine("[DVRMSPlugin] No coverart found"); } break; case DvrmsMetadataEditor.MediaOriginalBroadcastDateTime: string sDT = (string)attr.Value; if (!String.IsNullOrEmpty(sDT)) { DateTime dt; if (DateTime.TryParse(sDT, out dt)) { newTitle.ReleaseDate = dt; } } break; case DvrmsMetadataEditor.Genre: if (!String.IsNullOrEmpty((string)attr.Value)) { string sGenre = (string)attr.Value; string[] gen = sGenre.Split(','); newTitle.Genres.Clear(); foreach (string genre in gen) { string uGenre = genre.ToUpper().Trim(); if (String.IsNullOrEmpty(uGenre)) { continue; } if (uGenre.StartsWith(@"MOVIE")) { continue; } uGenre = genre.Trim(); newTitle.AddGenre(uGenre); } } break; case DvrmsMetadataEditor.Duration: Int64 rTime = (long)attr.Value; rTime = rTime / 600 / 1000000; newTitle.Runtime = (int)rTime; break; case DvrmsMetadataEditor.ParentalRating: if (!String.IsNullOrEmpty((string)attr.Value)) { newTitle.ParentalRating = (string)attr.Value; } break; case DvrmsMetadataEditor.Credits: string persona = (string)attr.Value; persona += @";;;;"; string[] credits = persona.Split(';'); string[] cast = credits[0].Split('/'); foreach (string nm in cast) { if (!String.IsNullOrEmpty(nm)) { newTitle.AddActingRole(nm, ""); } } string[] dirs = credits[1].Split('/'); if (dirs.Length > 0) { if (!String.IsNullOrEmpty(dirs[0])) { string nm = dirs[0]; newTitle.AddDirector(new OMLSDKPerson(nm)); } } break; case DvrmsMetadataEditor.SubtitleDescription: newTitle.Synopsis = (string)attr.Value; break; } attr = null; } if (ValidateTitle(newTitle)) { try { if (String.IsNullOrEmpty(newTitle.Name)) { newTitle.Name = Path.GetFileNameWithoutExtension(file); newTitle.ImporterSource = @"DVRMSImporter"; newTitle.MetadataSourceName = @"DVR-MS"; OMLSDKDisk disk = new OMLSDKDisk(); disk.Name = @"Disk 1"; disk.Path = file; //newTitle.FileLocation = file; string ext = Path.GetExtension(file).Substring(1).Replace(@"-", @""); //newTitle.VideoFormat = (VideoFormat)Enum.Parse(typeof(VideoFormat), ext, true); disk.Format = (OMLSDKVideoFormat)Enum.Parse(typeof(OMLSDKVideoFormat), ext, true); newTitle.AddDisk(disk); string cover = fPath + @"\" + Path.GetFileNameWithoutExtension(file) + @".jpg"; if (File.Exists(Path.GetFullPath(cover))) { SDKUtilities.DebugLine("[DVRMSPlugin] Setting CoverArt: " + Path.GetFullPath(cover)); newTitle.FrontCoverPath = cover; } else { SDKUtilities.DebugLine("[DVRMSPlugin] No coverart found"); } } if (String.IsNullOrEmpty(newTitle.AspectRatio)) { newTitle.AspectRatio = @"Widescreen"; } if (String.IsNullOrEmpty(newTitle.ParentalRating)) { newTitle.ParentalRating = @"--"; } AddTitle(newTitle); } catch (Exception e) { Trace.WriteLine("[DVRMSPlugin] Error adding row: " + e.Message); } } else { Trace.WriteLine("[DVRMSPlugin] Error saving row"); } }
public bool SearchForMovie(string movieName, int maxResults) { movieName = CleanString(movieName); foundTitle = null; List <string> possibleIds = new List <string>(); if (dvdsByName.ContainsKey(movieName)) { possibleIds.Add(dvdsByName[movieName]); } else if (dvdsBySortName.ContainsKey(movieName)) { possibleIds.Add(dvdsBySortName[movieName]); } else { foreach (string key in dvdsByName.Keys) { if (key.StartsWith(movieName, StringComparison.OrdinalIgnoreCase)) { possibleIds.Add(dvdsByName[key]); } } } // try the sort names if none of the other names panned out if (possibleIds.Count == 0) { foreach (string key in dvdsBySortName.Keys) { if (key.StartsWith(movieName, StringComparison.OrdinalIgnoreCase)) { possibleIds.Add(dvdsBySortName[key]); } } } IEnumerable <string> unusedPossibleIds = SDKUtilities.GetUniqueMetaIds(possibleIds, this.PluginName); foreach (string possibleId in unusedPossibleIds) { var navigator = document.CreateNavigator(); foreach (XPathNavigator dvd in navigator.Select("/Collection/DVD|/DVD")) // Allow both collection file and single profile export { foreach (XPathNavigator child in dvd.SelectChildren(XPathNodeType.Element)) { if (child.Name == "ID") { if (child.Value == possibleId) { child.MoveToParent(); DVDProfilerImporter importer = new DVDProfilerImporter(); foundTitle = importer.LoadTitle(child, false); importer.GetImagesForNewTitle(foundTitle); } } if (foundTitle != null) { break; } } if (foundTitle != null) { break; } } // we only care about the first one for now break; } return(foundTitle != null); }
public void TEST_RUNNINGTIME() { OMLSDKTitle title = LoadTitle("1"); Assert.AreEqual(42, title.Runtime, "Running time is incorrect"); }
public TheTVDBDbResult() { Title = new OMLSDKTitle(); }
private void extractDisksFromXML(XPathNodeIterator nIter, XPathNavigator localNav, OMLSDKTitle newTitle) { SDKUtilities.DebugLine("[MyMoviesImporter] Scanning for Discs..."); SDKUtilities.DebugLine("[MyMoviesImporter] {0} entries found", nIter.Count); for (int i = 0; i < nIter.Count; i++) { bool isDoubleSided = (((string)GetChildNodesValue(localNav, "DoubleSided")).CompareTo("False") == 0) ? false : true; string discName = (string)GetChildNodesValue(localNav, "Name"); string sideAId = (string)GetChildNodesValue(localNav, "DiscIdSideA"); string sideALocation = (string)GetChildNodesValue(localNav, "LocationSideA"); string sideALocationType = (string)GetChildNodesValue(localNav, "LocationTypeSideA"); string changerSlot = (string)GetChildNodesValue(localNav, "ChangerSlot"); string sideBId = string.Empty; string sideBLocation = string.Empty; string sideBLocationType = string.Empty; if (isDoubleSided) { sideBId = (string)GetChildNodesValue(localNav, "DiscIdSideB"); sideBLocation = (string)GetChildNodesValue(localNav, "LocationSideB"); sideBLocationType = (string)GetChildNodesValue(localNav, "LocationTypeSideB"); } SDKUtilities.DebugLine("[MyMoviesImporter] Ok, I've collected some info... now we actually start looking for files"); IList <OMLSDKDisk> sideAdisks = GetDisksForLocation(sideALocation, sideALocationType); int j = 1; SDKUtilities.DebugLine("[MyMoviesImporter] Ok, we found {0} possible files", sideAdisks.Count); foreach (OMLSDKDisk disk in sideAdisks) { disk.Name = string.Format(@"Disk{0}", j++); newTitle.AddDisk(disk); } if (isDoubleSided) { SDKUtilities.DebugLine("[MyMoviesImporter] Whoa... this thing appears to be double-sided (old schooling it huh?)"); IList <OMLSDKDisk> sideBdisks = GetDisksForLocation(sideBLocation, sideBLocationType); SDKUtilities.DebugLine("[MyMoviesImporter] We found {0} disks on the B side", sideBdisks.Count); foreach (OMLSDKDisk disk in sideBdisks) { disk.Name = string.Format(@"Disk{0}", j++); newTitle.AddDisk(disk); } } localNav.MoveToNext("Disc", ""); } }
public override void ProcessFile(string file) { XmlDocument xDoc = new XmlDocument(); xDoc.Load(file); XmlNodeList nodeList = xDoc.SelectNodes("//movielist/movie"); foreach (XmlNode movieNode in nodeList) { OMLSDKTitle newTitle = new OMLSDKTitle(); XPathNavigator nav = movieNode.CreateNavigator(); newTitle.MetadataSourceID = GetChildNodesValue(nav, "id"); if (nav.MoveToChild("coverfront", "")) { newTitle.FrontCoverPath = nav.Value; nav.MoveToParent(); } if (nav.MoveToChild("coverback", "")) { newTitle.BackCoverPath = nav.Value; nav.MoveToParent(); } if (nav.MoveToChild("country", "")) { if (nav.MoveToChild("displayname", "")) { newTitle.CountryOfOrigin = nav.Value; nav.MoveToParent(); } nav.MoveToParent(); } if (nav.MoveToChild("title", "")) { newTitle.Name = nav.Value; nav.MoveToParent(); } /*if (nav.MoveToChild("plot", "")) * { * newTitle.Synopsis = nav.Value; * nav.MoveToParent(); * }*/ // Fix from DVDJunkie // http://www.ornskov.dk/forum/index.php?topic=1605.msg12171#msg12171 if (nav.MoveToChild("plot", "")) { string plot = nav.Value; plot = plot.Replace("<B>", ""); plot = plot.Replace("<b>", ""); plot = plot.Replace("</B>", ""); plot = plot.Replace("</b>", ""); plot = plot.Replace("<I>", ""); plot = plot.Replace("<i>", ""); plot = plot.Replace("</I>", ""); plot = plot.Replace("</i>", ""); newTitle.Synopsis = plot; nav.MoveToParent(); } /*if (nav.MoveToChild("releasedate", "")) * { * XPathNavigator localNav = nav.CreateNavigator(); * //XmlNode rdYear = nav.SelectSingleNode("year"); * //XmlNode rdMonth = nav.SelectSingleNode("month"); * //XmlNode rdDay = nav.SelectSingleNode("day"); * * //if (rdYear != null && rdMonth != null && rdDay != null) * //{ * // DateTime rd = new DateTime(Int32.Parse(rdYear.InnerText), * // Int32.Parse(rdMonth.InnerText), * // Int32.Parse(rdDay.InnerText)); * * // if (rd != null) * // newTitle.ReleaseDate = rd; * //} * nav.MoveToParent(); * }*/ // Fix from DVDJunkie // http://www.ornskov.dk/forum/index.php?topic=1605.msg12171#msg12171 //hwh 12-7-09 if (nav.MoveToChild("releasedate", "")) { XPathNavigator localNav = nav.CreateNavigator(); string rdate = GetChildNodesValue(localNav, "date"); try { if (!string.IsNullOrEmpty(rdate)) { newTitle.ProductionYear = Convert.ToInt32(rdate); } } catch (FormatException) { } nav.MoveToParent(); } //hwh 12-7-09 if (nav.MoveToChild("dvdreleasedate", "")) { XPathNavigator localNav = nav.CreateNavigator(); string rdate = GetChildNodesValue(localNav, "date"); try { if (!string.IsNullOrEmpty(rdate)) { newTitle.ReleaseDate = DateTime.Parse(rdate); } } catch (ArgumentException) { } catch (FormatException) { } nav.MoveToParent(); } if (nav.MoveToChild("mpaarating", "")) { newTitle.ParentalRating = GetChildNodesValue(nav, "displayname"); nav.MoveToParent(); } if (nav.MoveToChild("upc", "")) { newTitle.UPC = nav.Value; nav.MoveToParent(); } if (nav.MoveToChild("runtimeminutes", "")) { //newTitle.Runtime = nav.ValueAsInt; newTitle.Runtime = ConvertStringToInt(nav.Value); nav.MoveToParent(); } if (nav.MoveToChild("genres", "")) { XPathNodeIterator genreIter = nav.SelectChildren("genre", ""); if (nav.MoveToFirstChild()) { XPathNavigator localNav = nav.CreateNavigator(); nav.MoveToParent(); for (int i = 0; i < genreIter.Count; i++) { newTitle.AddGenre(GetChildNodesValue(localNav, "displayname")); localNav.MoveToNext("genre", ""); } } nav.MoveToParent(); } if (nav.MoveToChild("cast", "")) { XPathNodeIterator starIter = nav.SelectChildren("star", ""); if (nav.MoveToFirstChild()) { XPathNavigator localNav = nav.CreateNavigator(); nav.MoveToParent(); for (int i = 0; i < starIter.Count; i++) { string role = GetChildNodesValue(localNav, "role"); XPathNavigator personNav = localNav.SelectSingleNode("person"); if (personNav != null) { string name = GetChildNodesValue(personNav, "displayname"); if (!string.IsNullOrEmpty(role) && !string.IsNullOrEmpty(name)) { newTitle.AddActingRole(name, role); } } localNav.MoveToNext("star", ""); } } nav.MoveToParent(); } if (nav.MoveToChild("crew", "")) { XPathNodeIterator crewMemberIter = nav.SelectChildren("crewmember", ""); if (nav.MoveToFirstChild()) { XPathNavigator localNav = nav.CreateNavigator(); nav.MoveToParent(); for (int i = 0; i < crewMemberIter.Count; i++) { string role = GetChildNodesValue(localNav, "role"); XPathNavigator cmNav = localNav.SelectSingleNode("person"); if (cmNav != null) { string name = GetChildNodesValue(cmNav, "displayname"); if (!string.IsNullOrEmpty(role) && !string.IsNullOrEmpty(name)) { switch (role.ToLower()) { case "director": newTitle.AddDirector(new OMLSDKPerson(name)); break; case "writer": newTitle.AddWriter(new OMLSDKPerson(name)); break; default: break; } } } localNav.MoveToNext("crewmember", ""); } } nav.MoveToParent(); } if (nav.MoveToChild("subtitles", "")) { XPathNodeIterator subtitleIter = nav.SelectChildren("subtitle", ""); if (nav.MoveToFirstChild()) { XPathNavigator localNav = nav.CreateNavigator(); nav.MoveToParent(); for (int i = 0; i < subtitleIter.Count; i++) { newTitle.AddSubtitle(GetChildNodesValue(localNav, "displayname")); localNav.MoveToNext("subtitle", ""); } } nav.MoveToParent(); } if (nav.MoveToChild("audios", "")) { XPathNodeIterator audioIter = nav.SelectChildren("audio", ""); if (nav.MoveToFirstChild()) { XPathNavigator localNav = nav.CreateNavigator(); nav.MoveToParent(); for (int i = 0; i < audioIter.Count; i++) { newTitle.AddAudioTrack(GetChildNodesValue(localNav, "displayname")); localNav.MoveToNext("audio", ""); } } nav.MoveToParent(); } if (nav.MoveToChild("studios", "")) { XPathNodeIterator studioIter = nav.SelectChildren("studio", ""); if (nav.MoveToFirstChild()) { XPathNavigator localNav = nav.CreateNavigator(); nav.MoveToParent(); for (int i = 0; i < studioIter.Count; i++) { newTitle.Studio = GetChildNodesValue(localNav, "displayname"); localNav.MoveToNext("studio", ""); } } nav.MoveToParent(); } if (nav.MoveToChild("links", "")) { XPathNodeIterator linkIter = nav.SelectChildren("link", ""); if (nav.MoveToFirstChild()) { XPathNavigator localNav = nav.CreateNavigator(); nav.MoveToParent(); for (int i = 0; i < linkIter.Count; i++) { string type = GetChildNodesValue(localNav, "urltype"); if (!string.IsNullOrEmpty(type)) { if (type.ToUpper().CompareTo("MOVIE") == 0) { string path = GetChildNodesValue(localNav, "url"); if (!string.IsNullOrEmpty(path)) { try { FileInfo fi = new FileInfo(path); if (fi.Exists) { string ext = fi.Extension.Substring(1); if (!string.IsNullOrEmpty(ext)) { if (IsSupportedFormat(ext)) { OMLSDKDisk disk = new OMLSDKDisk(); disk.Format = (OMLSDKVideoFormat)Enum.Parse(typeof(OMLSDKVideoFormat), ext, true); disk.Path = path; disk.Name = GetChildNodesValue(localNav, "description"); newTitle.AddDisk(disk); } } } } catch (Exception ex) { SDKUtilities.DebugLine("MovieCollectorzPlugin: {0}", ex); } } } } localNav.MoveToNext("link", ""); } } } if (ValidateTitle(newTitle)) { try { AddTitle(newTitle); } catch (Exception e) { SDKUtilities.DebugLine("[MovieCollectorzPlugin] Error adding row: " + e.Message); } } else { SDKUtilities.DebugLine("[MovieCollectorzPlugin] Error saving row"); } } }
public NetFlixDbResult() { Title = new OMLSDKTitle(); }
private OMLSDKTitle GetDVDMetaData(string folderName) { try { string xmlFile = ""; DirectoryType dirType = GetDirectoryType(folderName); if (dirType != DirectoryType.Normal) { string[] xmlFiles = Directory.GetFiles(folderName, "*dvdid.xml"); if (xmlFiles.Length > 0) { //xmlFile = Path.GetFileName(xmlFiles[0]); // get the first one xmlFile = xmlFiles[0]; } //else //{ // xmlFiles = Directory.GetFiles(folderName, "*xml"); // if (xmlFiles.Length > 0) // //xmlFile = Path.GetFileName(xmlFiles[0]); // get the first one // xmlFile = xmlFiles[0]; // get the first one // else // xmlFile = ""; //} OMLSDKTitle t = null; // xmlFile contains the dvdid - then we need to lookup in the cache folder based on this id if (xmlFile != "" && File.Exists(xmlFile)) { string dvdid = GetDVDID(xmlFile); string xmlDetailsFile = GetDVDCacheFileName(dvdid); t = ReadMetaData(folderName, xmlDetailsFile); } if (t == null) { // for DVDs with no dvdid.xml add a stripped down title with just a suggested name t = new OMLSDKTitle(); t.Name = GetSuggestedMovieName(folderName); } if (!File.Exists(t.FrontCoverPath)) { if (File.Exists(folderName + "\\folder.jpg")) { t.FrontCoverPath = folderName + "\\folder.jpg"; } } t.ImporterSource = "VMCDVDLibraryPlugin"; OMLSDKDisk disk = new OMLSDKDisk(); disk.Name = "Disk 1"; switch (dirType) { case DirectoryType.BluRay: disk.Format = OMLSDKVideoFormat.BLURAY; disk.Path = folderName; break; case DirectoryType.HDDvd: disk.Format = OMLSDKVideoFormat.HDDVD; disk.Path = folderName; break; case DirectoryType.DVD_Flat: disk.Format = OMLSDKVideoFormat.DVD; disk.Path = folderName; break; case DirectoryType.DVD_Ripped: disk.Format = OMLSDKVideoFormat.DVD; disk.Path = folderName; break; } t.AddDisk(disk); t.MetadataSourceName = "VMC DVD Library"; return(t); } } catch (Exception ex) { SDKUtilities.DebugLine("[DVDLibraryImporter] An error occured: " + ex.Message); } return(null); }
public bool ValidateTitle(OMLSDKTitle title_to_validate, string file) { SDKUtilities.DebugLine("[MyMoviesImporter] This is the part where we validate (or not) your shiny new title, wouldn't want you to drive off the lot with it untested now would we"); if (title_to_validate.Disks.Count == 0) { SDKUtilities.DebugLine("[MyMoviesImporter] Whoa... you dont appear to have any discs... lets double check that"); string directoryName = Path.GetDirectoryName(file); if (Directory.Exists(directoryName)) { if (SDKUtilities.IsBluRay(directoryName)) { SDKUtilities.DebugLine("[MyMoviesImporter] its a bluray, adding a new disk"); title_to_validate.AddDisk(new OMLSDKDisk("Disk1", directoryName, OMLSDKVideoFormat.BLURAY)); return(true); } if (SDKUtilities.IsHDDVD(directoryName)) { SDKUtilities.DebugLine("[MyMoviesImporter] its an hddvd, adding a new disk"); title_to_validate.AddDisk(new OMLSDKDisk("Disk1", directoryName, OMLSDKVideoFormat.HDDVD)); return(true); } if (SDKUtilities.IsDVD(directoryName)) { SDKUtilities.DebugLine("[MyMoviesImporter] its a dvd, adding a new disk"); title_to_validate.AddDisk(new OMLSDKDisk("Disk1", directoryName, OMLSDKVideoFormat.DVD)); return(true); } string[] files = Directory.GetFiles(directoryName); SDKUtilities.DebugLine("[MyMoviesImporter] You have {0} files in the current location {1}", files.Length, directoryName); /* patch from KingManon to limit files only to those of valid file types */ string localExt; List <string> newFiles = new List <string>(); List <string> allowedExtensions = new List <string>(Enum.GetNames(typeof(OMLSDKVideoFormat))); foreach (string singleFile in files) { localExt = Path.GetExtension(singleFile).Substring(1); if (allowedExtensions.Contains(localExt.ToUpper())) { newFiles.Add(singleFile); } } files = newFiles.ToArray(); Array.Sort(files); for (int i = 0; i < files.Length; i++) { string ext = Path.GetExtension(files[i]).Substring(1); try { if (new List <string>(Enum.GetNames(typeof(OMLSDKVideoFormat))).Contains(ext.ToUpper())) { OMLSDKVideoFormat format; try { SDKUtilities.DebugLine("[MyMoviesImporter] Checking file for format {0}", files[i]); format = (OMLSDKVideoFormat)Enum.Parse(typeof(OMLSDKVideoFormat), ext, true); OMLSDKDisk disk = new OMLSDKDisk(); disk.Name = string.Format("Disk{0}", i + 1); disk.Path = Path.Combine(directoryName, files[i]); disk.Format = format; title_to_validate.AddDisk(disk); } catch (Exception) { AddError("[MyMoviesImporter] Unable to determine format for extension: {0}", ext); } } } catch { SDKUtilities.DebugLine("[MyMoviesImporter] Yeah, no extention on file ({0}), skip it!", files[i]); // didnt get the extension, its not a valid file, skip it } } if (title_to_validate.Disks.Count == 0) { SDKUtilities.DebugLine("[MyMoviesImporter] No disks found on the title, we'll skip it"); return(false); } } } return(true); }
public static OMLSDKTitle TitleFromAmazonItem(Item amazonItem) { try { OMLSDKTitle t = new OMLSDKTitle(); t.Name = amazonItem.ItemAttributes.Title; if (!String.IsNullOrEmpty(amazonItem.ASIN.ToString())) { t.UPC = amazonItem.ASIN.ToString(); } t.Synopsis = AmazonItemDescriptionToString(amazonItem); if (amazonItem.ItemAttributes.Actor != null) { foreach (string actor in amazonItem.ItemAttributes.Actor) { t.AddActingRole(actor, ""); } } if (amazonItem.ItemAttributes.Director != null) { foreach (string director in amazonItem.ItemAttributes.Director) { t.AddDirector(new OMLSDKPerson(director)); } } if (amazonItem.ItemAttributes.AudienceRating != null) { t.ParentalRating = AmazonRatingToString(amazonItem.ItemAttributes.AudienceRating); } if (amazonItem.ItemAttributes.RunningTime != null) { t.Runtime = Convert.ToInt32(amazonItem.ItemAttributes.RunningTime.Value); } if (amazonItem.ItemAttributes.TheatricalReleaseDate != null) { t.ReleaseDate = AmazonYearToDateTime(amazonItem.ItemAttributes.TheatricalReleaseDate); } if (amazonItem.DetailPageURL != null) { t.OfficialWebsiteURL = amazonItem.DetailPageURL; } if (amazonItem.ItemAttributes.Studio != null) { t.Studio = amazonItem.ItemAttributes.Studio; } if (amazonItem.ItemAttributes.AspectRatio != null) { t.AspectRatio = amazonItem.ItemAttributes.AspectRatio; } // add only the genres that we have in our list otherwise we get too much crap if (amazonItem.Subjects != null) { foreach (string subject in amazonItem.Subjects) { if (Properties.Settings.Default.Genres.Contains(subject)) { t.AddGenre(subject); } } } if (amazonItem.LargeImage.URL != null) { t.FrontCoverPath = amazonItem.LargeImage.URL;// title.ImageUrl; } //DownloadImage(t, amazonItem); return(t); } catch { return(null); } }
public TheMovieDbResult() { Title = new OMLSDKTitle(); }