Beispiel #1
0
 public void AddProducer(OMLSDKPerson producer)
 {
     if (!(_Producers.Exists(p => p.full_name.Equals(producer.full_name, StringComparison.OrdinalIgnoreCase))))
     {
         _Producers.Add(producer);
     }
 }
Beispiel #2
0
 public void AddWriter(OMLSDKPerson writer)
 {
     if (!(_Writers.Exists(p => p.full_name.Equals(writer.full_name, StringComparison.OrdinalIgnoreCase))))
     {
         _Writers.Add(writer);
     }
 }
Beispiel #3
0
 public void AddDirector(OMLSDKPerson director)
 {
     if (!(_Directors.Exists(p => p.full_name.Equals(director.full_name, StringComparison.OrdinalIgnoreCase))))
     {
         _Directors.Add(director);
     }
 }
Beispiel #4
0
        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;
 }
 public void AddWriter(OMLSDKPerson writer)
 {
     if (!(_Writers.Exists(p => p.full_name.Equals(writer.full_name, StringComparison.OrdinalIgnoreCase))))
     {
         _Writers.Add(writer);
     }
 }
 public void AddProducer(OMLSDKPerson producer)
 {
     if (!(_Producers.Exists(p => p.full_name.Equals(producer.full_name, StringComparison.OrdinalIgnoreCase))))
     {
         _Producers.Add(producer);
     }
 }
 public void AddDirector(OMLSDKPerson director)
 {
     if (!(_Directors.Exists(p => p.full_name.Equals(director.full_name, StringComparison.OrdinalIgnoreCase))))
     {
         _Directors.Add(director);
     }
 }
        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;
                }
            }
        }