public override void Fetch()
        {
            folderDate = new FileInfo(Item.Path).LastWriteTimeUtc;
            //all we need to do here is fill in season number
            Season season = Item as Season;

            if (season != null)
            {
                if (season.SeasonNumber == null)
                {
                    string seasonNum    = TVUtils.SeasonNumberFromFolderName(Item.Path);
                    int    seasonNumber = Int32.Parse(seasonNum);

                    season.SeasonNumber = seasonNumber.ToString();

                    if (season.SeasonNumber == "0")
                    {
                        season.Name = "Specials";
                    }
                }
            }
        }
        private bool FetchSeasonData()
        {
            Season season = Season;
            string name   = Item.Name;

            Logger.ReportVerbose("TvDbProvider: Fetching season data: " + name);
            string seasonNum    = TVUtils.SeasonNumberFromFolderName(Item.Path);
            int    seasonNumber = Int32.Parse(seasonNum);

            season.SeasonNumber = seasonNumber.ToString();

            if (season.SeasonNumber == "0")
            {
                season.Name = "Specials";
            }

            if (!string.IsNullOrEmpty(seriesId))
            {
                if ((Item.PrimaryImagePath == null) || (Item.BannerImagePath == null) || (Item.BackdropImagePath == null))
                {
                    XmlDocument banners = TVUtils.Fetch(string.Format("http://www.thetvdb.com/api/" + TVUtils.TVDBApiKey + "/series/{0}/banners.xml", seriesId));


                    XmlNode n = banners.SelectSingleNode("//Banner[BannerType='season'][BannerType2='season'][Season='" + seasonNumber.ToString() + "']");
                    if (n != null)
                    {
                        n = n.SelectSingleNode("./BannerPath");
                        if (n != null)
                        {
                            if (Kernel.Instance.ConfigData.SaveLocalMeta)
                            {
                                season.PrimaryImagePath = TVUtils.FetchAndSaveImage(TVUtils.BannerUrl + n.InnerText, Path.Combine(season.Path, "folder"));
                            }
                            else
                            {
                                season.PrimaryImagePath = TVUtils.BannerUrl + n.InnerText;
                            }
                        }
                    }


                    n = banners.SelectSingleNode("//Banner[BannerType='season'][BannerType2='seasonwide'][Season='" + seasonNumber.ToString() + "']");
                    if (n != null)
                    {
                        n = n.SelectSingleNode("./BannerPath");
                        if (n != null)
                        {
                            if (Kernel.Instance.ConfigData.SaveLocalMeta)
                            {
                                season.BannerImagePath = TVUtils.FetchAndSaveImage(TVUtils.BannerUrl + n.InnerText, Path.Combine(season.Path, "banner"));
                            }
                            else
                            {
                                season.BannerImagePath = TVUtils.BannerUrl + n.InnerText;
                            }
                        }
                    }


                    n = banners.SelectSingleNode("//Banner[BannerType='fanart'][Season='" + seasonNumber.ToString() + "']");
                    if (n != null)
                    {
                        n = n.SelectSingleNode("./BannerPath");
                        if (n != null && Item.BackdropImagePath == null)
                        {
                            if (Kernel.Instance.ConfigData.SaveLocalMeta && Kernel.Instance.ConfigData.SaveSeasonBackdrops)
                            {
                                season.BackdropImagePath = TVUtils.FetchAndSaveImage(TVUtils.BannerUrl + n.InnerText, Path.Combine(Item.Path, "backdrop"));
                            }
                            else
                            {
                                Item.BackdropImagePath = TVUtils.BannerUrl + n.InnerText;
                            }
                        }
                    }
                    else if (!Kernel.Instance.ConfigData.SaveLocalMeta)   //if saving local - season will inherit from series
                    {
                        // not necessarily accurate but will give a different bit of art to each season
                        XmlNodeList lst = banners.SelectNodes("//Banner[BannerType='fanart']");
                        if (lst.Count > 0)
                        {
                            int num = seasonNumber % lst.Count;
                            n = lst[num];
                            n = n.SelectSingleNode("./BannerPath");
                            if (n != null && Item.BackdropImagePath == null)
                            {
                                Item.BackdropImagePath = TVUtils.BannerUrl + n.InnerText;
                            }
                        }
                    }
                }
                Logger.ReportVerbose("TvDbProvider: Success");
                return(true);
            }

            return(false);
        }
        private bool FetchSeasonData()
        {
            Season season = Season;

            string name = Item.Name;

            Logger.ReportInfo("TvDbProvider: Fetching season data: " + name);
            string seasonNum    = TVUtils.SeasonNumberFromFolderName(Item.Path);
            int    seasonNumber = Int32.Parse(seasonNum);

            season.SeasonNumber = seasonNumber.ToString();

            if (!string.IsNullOrEmpty(seriesId))
            {
                if ((Item.PrimaryImagePath == null) || (Item.BannerImagePath == null) || (Item.BackdropImagePath == null))
                {
                    XmlDocument banners = TVUtils.Fetch(string.Format("http://www.thetvdb.com/api/" + TVUtils.TVDBApiKey + "/series/{0}/banners.xml", seriesId));


                    XmlNode n = banners.SelectSingleNode("//Banner[BannerType='season'][BannerType2='season'][Season='" + seasonNumber.ToString() + "']");
                    if (n != null)
                    {
                        n = n.SelectSingleNode("./BannerPath");
                        if (n != null)
                        {
                            season.PrimaryImagePath = TVUtils.BannerUrl + n.InnerText;
                        }
                    }


                    n = banners.SelectSingleNode("//Banner[BannerType='season'][BannerType2='seasonwide'][Season='" + seasonNumber.ToString() + "']");
                    if (n != null)
                    {
                        n = n.SelectSingleNode("./BannerPath");
                        if (n != null)
                        {
                            Item.BannerImagePath = TVUtils.BannerUrl + n.InnerText;
                        }
                    }


                    n = banners.SelectSingleNode("//Banner[BannerType='fanart'][Season='" + seasonNumber.ToString() + "']");
                    if (n != null)
                    {
                        n = n.SelectSingleNode("./BannerPath");
                        if (n != null)
                        {
                            Item.BackdropImagePath = TVUtils.BannerUrl + n.InnerText;
                        }
                    }
                    else
                    {
                        // not necessarily accurate but will give a different bit of art to each season
                        XmlNodeList lst = banners.SelectNodes("//Banner[BannerType='fanart']");
                        if (lst.Count > 0)
                        {
                            int num = seasonNumber % lst.Count;
                            n = lst[num];
                            n = n.SelectSingleNode("./BannerPath");
                            if (n != null)
                            {
                                Item.BackdropImagePath = TVUtils.BannerUrl + n.InnerText;
                            }
                        }
                    }
                }
                Logger.ReportInfo("TvDbProvider: Success");
                return(true);
            }

            return(false);
        }