コード例 #1
0
        public virtual TvRageSeries GetSeries(int id)
        {
            var url = string.Format("http://services.tvrage.com/feeds/showinfo.php?key={0}&sid={1}", TVRAGE_APIKEY, id);
            var xmlStream = _httpProvider.DownloadStream(url, null);
            var xml = XDocument.Load(xmlStream);
            var s = xml.Descendants("Showinfo").First();
            try
            {
                if(s.Element("showid") == null)
                {
                    logger.Warn("TvRage did not return valid series info for id: {0}", id);
                    return null;
                }

                var show = new TvRageSeries();
                show.ShowId = s.Element("showid").ConvertTo<Int32>();
                show.Name = s.Element("showname").Value;
                show.Link = s.Element("showlink").Value;
                show.Seasons = s.Element("seasons").ConvertTo<Int32>();
                show.Started = s.Element("started").ConvertTo<Int32>();

                show.StartDate = s.Element("startdate").ConvertTo<DateTime>();
                show.Ended = s.Element("ended").ConvertTo<DateTime>();

                show.OriginCountry = s.Element("origin_country").Value;
                show.Status = s.Element("status").Value;
                show.RunTime = s.Element("runtime").ConvertTo<Int32>();
                show.Network = s.Element("network").Value;
                show.AirTime = s.Element("airtime").ConvertTo<DateTime>();
                show.AirDay = s.Element("airday").ConvertToDayOfWeek();
                show.UtcOffset = GetUtcOffset(s.Element("timezone").Value);
                return show;
            }

            catch (Exception ex)
            {
                logger.DebugException("Failed to parse ShowInfo for ID: " + id, ex);
                return null;
            }
        }
コード例 #2
0
        public void Setup()
        {
            _searchResults = Builder<TvRageSearchResult>
                    .CreateListOfSize(5)
                    .Build();

            _series = Builder<Series>
                    .CreateNew()
                    .With(s => s.TvRageId = 0)
                    .With(s => s.TvRageTitle = null)
                    .With(s => s.UtcOffset = 0)
                    .With(s => s.FirstAired = DateTime.Today.AddDays(-180))
                    .Build();

            _episode = Builder<Episode>
                .CreateNew()
                .With(e => e.AirDate = DateTime.Today.AddDays(-365))
                .Build();

            _tvRageSeries = Builder<TvRageSeries>
                    .CreateNew()
                    .With(s => s.UtcOffset = -8)
                    .Build();

            Mocker.GetMock<EpisodeProvider>()
                  .Setup(s => s.GetEpisode(_series.SeriesId, 1, 1))
                  .Returns(_episode);

            Mocker.GetMock<SceneMappingProvider>()
                  .Setup(s => s.GetCleanName(_series.SeriesId))
                  .Returns("");

            Mocker.GetMock<TvRageProvider>()
                  .Setup(s => s.SearchSeries(_series.Title))
                  .Returns(_searchResults);

            Mocker.GetMock<TvRageProvider>()
                  .Setup(s => s.GetSeries(_searchResults.First().ShowId))
                  .Returns(_tvRageSeries);
        }