public void AddProducer(OMLSDKPerson producer) { if (!(_Producers.Exists(p => p.full_name.Equals(producer.full_name, StringComparison.OrdinalIgnoreCase)))) { _Producers.Add(producer); } }
public void AddWriter(OMLSDKPerson writer) { if (!(_Writers.Exists(p => p.full_name.Equals(writer.full_name, StringComparison.OrdinalIgnoreCase)))) { _Writers.Add(writer); } }
public void AddDirector(OMLSDKPerson director) { if (!(_Directors.Exists(p => p.full_name.Equals(director.full_name, StringComparison.OrdinalIgnoreCase)))) { _Directors.Add(director); } }
private static Person ConvertOMLSDKPersonToPerson(OMLSDKPerson person) { Person newperson = new Person(); newperson.BirthDate = person.BirthDate; newperson.full_name = person.full_name; newperson.PhotoPath = person.PhotoPath; newperson.sex = (Sex)person.sex; return(newperson); }
private static Person ConvertOMLSDKPersonToPerson(OMLSDKPerson person) { Person newperson = new Person(); newperson.BirthDate = person.BirthDate; newperson.full_name = person.full_name; newperson.PhotoPath = person.PhotoPath; newperson.sex = (Sex)person.sex; return newperson; }
private void SearchForEpisode(string EpisodeName, int? SeasonNo, int? EpisodeNo, int maxResults) { UriBuilder uri = new UriBuilder("http://thetvdb.com/api/" + API_KEY + "/series/" + SeriesID.ToString() + "/all/"); if (BackDrops == null) { BackDrops = new List<string>(); } else { BackDrops.Clear(); } string actors = ""; string genres = ""; string network = ""; int runtime = 0; string rating = ""; results = new List<TheTVDBDbResult>(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri.Uri); // execute the request using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { //StreamReader reader2 = new StreamReader(response.GetResponseStream()); //string tmp = reader2.ReadToEnd(); //Console.Write(tmp); string mirrorpath = ""; int typemask = 0; // we will read data via the response stream using (Stream resStream = response.GetResponseStream()) { XmlTextReader reader = new XmlTextReader(resStream); reader.WhitespaceHandling = WhitespaceHandling.None; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name.ToLower() == "series") { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name.ToLower()) { case "actors": actors = GetElementValue(reader).ToString(); break; case "genre": genres = GetElementValue(reader); break; case "network": network = GetElementValue(reader); break; case "runtime": int.TryParse(GetElementValue(reader), out runtime); //runtime = int.Parse(GetElementValue(reader)); break; case "fanart": BackDrops.Add("http://images.thetvdb.com/banners/" + GetElementValue(reader)); break; case "poster": BackDrops.Add("http://images.thetvdb.com/banners/" + GetElementValue(reader)); break; case "contentrating": rating = GetElementValue(reader); break; default: break; } } else if (reader.NodeType == XmlNodeType.EndElement && reader.Name.ToLower() == "series") { break; } } } if (reader.Name.ToLower() == "episode") { TheTVDBDbResult result = new TheTVDBDbResult(); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name.ToLower()) { case "id": result.Id = int.Parse(GetElementValue(reader)); break; case "episodename": result.Title.Name = GetElementValue(reader); break; case "director": foreach (string directorstr in GetElementValue(reader).Split('|')) { if (!string.IsNullOrEmpty(directorstr)) { OMLSDKPerson director = new OMLSDKPerson(directorstr); result.Title.AddDirector(director); } } break; case "episodenumber": result.EpisodeNo = int.Parse(GetElementValue(reader)); result.Title.EpisodeNumber = (short)result.EpisodeNo; break; case "firstaired": // result.Title.ReleaseDate = DateTime.Parse(GetElementValue(reader)); break; case "overview": result.Title.Synopsis = GetElementValue(reader); break; case "seasonnumber": result.SeasonNo = int.Parse(GetElementValue(reader)); result.Title.SeasonNumber = (short)result.SeasonNo; break; case "seasonid": // typemask = int.Parse(GetElementValue(reader)); break; case "seriesid": // typemask = int.Parse(GetElementValue(reader)); break; case "filename": result.ImageUrl = GetElementValue(reader); break; case "gueststars": foreach (string actor in GetElementValue(reader).Split('|')) { if (!string.IsNullOrEmpty(actor)) { result.Title.AddActingRole(actor, ""); } } break; case "runtime": result.Title.Runtime = int.Parse(GetElementValue(reader)); break; default: break; } } else if (reader.NodeType == XmlNodeType.EndElement && reader.Name.ToLower() == "episode") { if (result.SeasonNo != 0) { bool AddTitle = true; // If an episode or season number is specified, only add if matched if ((SeasonNo > 0) && (SeasonNo != result.SeasonNo)) AddTitle = false; if ((EpisodeNo > 0) && (EpisodeNo != result.EpisodeNo)) AddTitle = false; // If an episode name is specified, calculate the match confidence if (!string.IsNullOrEmpty(EpisodeName)) result.NameMatchConfidence = StringMatching.Compute(EpisodeName, result.Title.Name); if (AddTitle) { foreach (string actor in actors.Split('|')) { if (!string.IsNullOrEmpty(actor)) { result.Title.AddActingRole(actor, ""); } } foreach (string genre in genres.Split('|')) { if (!string.IsNullOrEmpty(genre)) { result.Title.AddGenre(genre); } } result.Title.Studio = network; result.Title.Runtime = runtime; if (string.IsNullOrEmpty(result.Title.ParentalRating)) { result.Title.ParentalRating = rating; } results.Add(result); } } break; } } } } } } } //if (!string.IsNullOrEmpty(EpisodeName)) //{ // Sort by name confidence and limit result set results = (from r in results orderby r.NameMatchConfidence select r).Take(maxResults).ToList(); //} // load up all the titles with images foreach (TheTVDBDbResult title in results) { title.Title.FrontCoverPath = "http://images.thetvdb.com/banners/" + title.ImageUrl; //DownloadImage(title.Title, "http://images.thetvdb.com/banners/" + title.ImageUrl); } }
// Collection/DVD/Credits/* private void HandleCredits(OMLSDKTitle title, XPathNavigator creditsNavigator) { List<string> writersAlreadyAdded = new List<string>(); List<string> producersAlreadyAdded = new List<string>(); foreach (XPathNavigator creditNavigator in creditsNavigator.SelectChildren("Credit", string.Empty)) { string creditType = creditNavigator.GetAttribute("CreditType", string.Empty); OMLSDKPerson person = new OMLSDKPerson(ReadFullName(creditNavigator)); switch (creditType) { case "Direction": title.AddDirector(person); break; case "Writing": title.AddWriter(person); break; case "Production": title.AddProducer(person); break; } } }