private TheTVDBSeries GetFullSeriesData(int seriesId) { //http://www.thetvdb.com/api/FC18699D6C4514F7/series/79488/all/en.zip UriBuilder builder = new UriBuilder(string.Format("http://www.thetvdb.com/api/{0}/series/{1}/", API_KEY, seriesId)); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(builder.Uri); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (Stream resStream = response.GetResponseStream()) { XmlDocument xDoc = new XmlDocument(); xDoc.Load(resStream); XmlNodeList seriesNodes = xDoc.SelectNodes("//Data/Series"); foreach (XmlNode seriesNode in seriesNodes) { XmlNode idNode = seriesNode.SelectSingleNode("id"); if (seriesId == Int32.Parse(idNode.ChildNodes[0].Value)) { TheTVDBSeries series = new TheTVDBSeries(); series.Id = seriesId; XmlNode contentRatingNode = seriesNode.SelectSingleNode("ContentRating"); if (contentRatingNode.ChildNodes.Count > 0) { series.ContentRating = contentRatingNode.ChildNodes[0].Value; } XmlNode genreNode = seriesNode.SelectSingleNode("Genre"); if (genreNode.ChildNodes.Count > 0) { series.Genre = genreNode.ChildNodes[0].Value; } XmlNode imdbidNode = seriesNode.SelectSingleNode("IMDB_ID"); if (imdbidNode.ChildNodes.Count > 0) { series.IMDBId = imdbidNode.ChildNodes[0].Value; } XmlNode networkNode = seriesNode.SelectSingleNode("Network"); if (networkNode.ChildNodes.Count > 0) { series.network = networkNode.ChildNodes[0].Value; } XmlNode runtimeNode = seriesNode.SelectSingleNode("Runtime"); if (runtimeNode.ChildNodes.Count > 0) { series.Runtime = Int16.Parse(runtimeNode.ChildNodes[0].Value); } XmlNode seriesNameNode = seriesNode.SelectSingleNode("SeriesName"); if (seriesNameNode.ChildNodes.Count > 0) { series.SeriesName = seriesNameNode.ChildNodes[0].Value; } XmlNode bannerNode = seriesNode.SelectSingleNode("banner"); if (bannerNode.ChildNodes.Count > 0) { series.BannerUrl = "http://images.thetvdb.com/banners/" + bannerNode.ChildNodes[0].Value; } XmlNode fanartNode = seriesNode.SelectSingleNode("fanart"); if (fanartNode.ChildNodes.Count > 0) { series.FanartUrl = "http://images.thetvdb.com/banners/" + fanartNode.ChildNodes[0].Value; } XmlNode posterNode = seriesNode.SelectSingleNode("poster"); if (posterNode.ChildNodes.Count > 0) { series.PosterUrl = posterNode.ChildNodes[0].Value; } XmlNode zap2itNode = seriesNode.SelectSingleNode("zap2it_id"); if (zap2itNode.ChildNodes.Count > 0) { series.Zap2ItId = zap2itNode.ChildNodes[0].Value; } return(series); } } } } return(null); }
/// <summary> /// Queries tvdb to get a list of tc shows matching 'SeriesName' /// </summary> /// <param name="SeriesName"></param> private void SearchForTVShow(string SeriesName) { // Reset current series ID SeriesID = 0; UriBuilder uri = new UriBuilder("http://www.thetvdb.com/api/GetSeries.php"); uri.Query = "seriesname=" + SeriesName; results = new List <TheTVDBDbResult>(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri.Uri); // execute the request using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { 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") { TheTVDBDbResult result = new TheTVDBDbResult(); //TheTVDBDbResult title = GetTitleFromMovieNode(reader); //if (title != null) // results.Add(title); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name.ToLower()) { case "seriesid": result.Id = int.Parse(GetElementValue(reader)); break; //case "language": // result. = GetElementValue(reader); // break; case "seriesname": result.Title.Name = GetElementValue(reader); break; case "banner": TheTVDBSeries seriesObj = GetFullSeriesData(result.Id); if (seriesObj != null) { result.ImageUrl = seriesObj.PosterUrl; } break; case "overview": result.Title.Synopsis = GetElementValue(reader); break; case "firstAired": result.Title.ReleaseDate = DateTime.Parse(GetElementValue(reader)); break; //case "IMDB_ID": // typemask = int.Parse(GetElementValue(reader)); // break; //case "zap2it_id": // typemask = int.Parse(GetElementValue(reader)); // break; //case "id": // typemask = int.Parse(GetElementValue(reader)); // break; //case "IMDB_ID": // typemask = int.Parse(GetElementValue(reader)); // break; default: break; } } else if (reader.NodeType == XmlNodeType.EndElement && reader.Name.ToLower() == "series") { results.Add(result); break; } } } } } } } }
private TheTVDBSeries GetFullSeriesData(int seriesId) { //http://www.thetvdb.com/api/FC18699D6C4514F7/series/79488/all/en.zip UriBuilder builder = new UriBuilder(string.Format("http://www.thetvdb.com/api/{0}/series/{1}/", API_KEY, seriesId)); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(builder.Uri); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (Stream resStream = response.GetResponseStream()) { XmlDocument xDoc = new XmlDocument(); xDoc.Load(resStream); XmlNodeList seriesNodes = xDoc.SelectNodes("//Data/Series"); foreach (XmlNode seriesNode in seriesNodes) { XmlNode idNode = seriesNode.SelectSingleNode("id"); if (seriesId == Int32.Parse(idNode.ChildNodes[0].Value)) { TheTVDBSeries series = new TheTVDBSeries(); series.Id = seriesId; XmlNode contentRatingNode = seriesNode.SelectSingleNode("ContentRating"); if (contentRatingNode.ChildNodes.Count > 0) { series.ContentRating = contentRatingNode.ChildNodes[0].Value; } XmlNode genreNode = seriesNode.SelectSingleNode("Genre"); if (genreNode.ChildNodes.Count > 0) { series.Genre = genreNode.ChildNodes[0].Value; } XmlNode imdbidNode = seriesNode.SelectSingleNode("IMDB_ID"); if (imdbidNode.ChildNodes.Count > 0) { series.IMDBId = imdbidNode.ChildNodes[0].Value; } XmlNode networkNode = seriesNode.SelectSingleNode("Network"); if (networkNode.ChildNodes.Count > 0) { series.network = networkNode.ChildNodes[0].Value; } XmlNode runtimeNode = seriesNode.SelectSingleNode("Runtime"); if (runtimeNode.ChildNodes.Count > 0) { series.Runtime = Int16.Parse(runtimeNode.ChildNodes[0].Value); } XmlNode seriesNameNode = seriesNode.SelectSingleNode("SeriesName"); if (seriesNameNode.ChildNodes.Count > 0) { series.SeriesName = seriesNameNode.ChildNodes[0].Value; } XmlNode bannerNode = seriesNode.SelectSingleNode("banner"); if (bannerNode.ChildNodes.Count > 0) { series.BannerUrl = "http://images.thetvdb.com/banners/" + bannerNode.ChildNodes[0].Value; } XmlNode fanartNode = seriesNode.SelectSingleNode("fanart"); if (fanartNode.ChildNodes.Count > 0) { series.FanartUrl = "http://images.thetvdb.com/banners/" + fanartNode.ChildNodes[0].Value; } XmlNode posterNode = seriesNode.SelectSingleNode("poster"); if (posterNode.ChildNodes.Count > 0) { series.PosterUrl = posterNode.ChildNodes[0].Value; } XmlNode zap2itNode = seriesNode.SelectSingleNode("zap2it_id"); if (zap2itNode.ChildNodes.Count > 0) { series.Zap2ItId = zap2itNode.ChildNodes[0].Value; } return series; } } } } return null; }