public void FilmPageConstructorTest()
        {
            const uint filmId = 526;
            var target = new FilmPage(filmId);
            Assert.AreEqual(target.LocalTitle, "Большой куш");
            Assert.AreEqual(target.Title, "Snatch.");
            Assert.AreEqual(target.Year, 2000);
            Assert.AreEqual(target.MPAA, "R");
            Assert.AreEqual(target.Runtime, "102 мин. / 01:42");
            Assert.IsTrue(target.Summary.Length > 10);

            // Added with plugin system version 2.1
            CollectionAssert.AreEqual(target.GetContries(), new string[] { "США", "Великобритания" });

            // Added with plugin system version 2.2
            Assert.AreEqual(target.TagLine, "«Stealing stones is hazardous.»");
            Assert.AreEqual(target.FullMPAA, "лицам до 17 лет обязательно присутствие взрослого");
            Assert.AreEqual(target.GetOnlyPoster(), "http://st.kinopoisk.ru/im/poster/1/4/1/kinopoisk.ru-Snatch-14167.jpg");
            Assert.AreEqual(target.GetOnlyBackdrop(), "http://st.kinopoisk.ru/im/wallpaper/1/9/7/kinopoisk.ru-Snatch-1971--w--1024.jpg");
            var director = string.Join(", ", target.GetCrew().Where(p => p.Type == "director").Select(p => p.LocalName).ToArray());
            Assert.AreEqual(director, "Гай Ричи");
            var writers = target.GetCrew().Where(p => p.Type == "writer").Select(p => p.LocalName).ToArray();
            CollectionAssert.AreEqual(writers, new string[] {"Гай Ричи"});
            Assert.IsTrue(target.Rating.ImdbRating.Votes > 0);
            //Assert.AreEqual(target.IMDBScore, "8,3");
        }
        protected static MovieInfo FetchFilm(uint filmId, FetchOptions options = FetchOptions.None)
        {
            var movie = new MovieInfo();
            var filmInfo = new Kinopoisk.FilmPage(filmId);

            movie.AllGenres = filmInfo.GetGenreList().ToArray();
            movie.Budget = filmInfo.Budget;
            movie.MPAArating = filmInfo.MPAA;
            movie.Revenue = filmInfo.Revenue;
            movie.Runtime = filmInfo.Runtime;
            movie.Summary = Utils.UnHTML(filmInfo.Summary);
            movie.IMDBscore = filmInfo.IMDBScore;
            movie.Year = Utils.SafeYear(filmInfo.Year);
            movie.Local_Title = filmInfo.LocalTitle;
            movie.Original_Title = filmInfo.Title;

            // Added with plugin system version 2.1
            var countries = filmInfo.GetContries();
            if (countries.Count() > 0)
                movie.Country = string.Join(", ", countries);

            //public string Language = string.Empty;
            //public string ParentalRatingSummary = string.Empty;

            // Added with plugin system version 2.2
            movie.TagLine = filmInfo.TagLine;
            movie.FullMPAA = filmInfo.FullMPAA;
            movie.PosterURL = filmInfo.GetOnlyPoster();
            movie.BackdropURL = filmInfo.GetOnlyBackdrop();

            movie.Director = string.Join(", ", filmInfo.GetCrew().Where(p => p.Type == "director").Select(p=>p.LocalName).ToArray());
            movie.Writers = filmInfo.GetCrew().Where(p => p.Type == "writer").Select(p => p.LocalName).ToArray();
            movie.NumberOfVotes = filmInfo.Rating.ImdbRating.Votes.ToString();

            //public string FullCertifications = string.Empty;
            //public string Outline = string.Empty;
            //public string Plot = string.Empty;
            //public string Top250 = string.Empty;
            //public string Awards = string.Empty;
            //public string Website = string.Empty;
            //public string Trailer = string.Empty;

            if ((options & FetchOptions.FetchImages)==FetchOptions.FetchImages)
            {
                var link = filmInfo.GetOnlyBackdrop();
                if (link != null) movie.Backdrop = Utils.SerializeBitmap(Utils.LoadPictureFromURI(link));
                link = filmInfo.GetOnlyPoster();
                if (link != null) movie.Poster = Utils.SerializeBitmap(Utils.LoadPictureFromURI(link));
            }

            movie.AllCastAndCrew = ProcessCastAndCrew(filmInfo);

            //movie.IMDB_ID = Utils.ChopperBlank(sMoviePageContents, "<imdb>", "</imdb>");
            //movie.Studios  // not supported by tMDB API 2.0

            return movie;
        }
        /// <summary>
        /// Retrieves a list of all available posters in a string array.
        /// 
        /// This is an optional interface and can be removed if it is not applicable to your fetcher.
        /// 
        /// Optional for:
        ///     meta data fetches (all)
        /// </summary>
        /// <returns>An array of string's (can be empty, but not null)</returns>
        public static string[] GetAllPosters(string localId, string externalId)
        {
            Utils.Logger(Tag + string.Format("<b>GetAllPosters</b> called with localId = \"{0}\", externalId=\"{1}\"", localId, externalId));
            try
            {
                var filmInfo = new Kinopoisk.FilmPage(localId);
                List<string> posters = filmInfo.GetPosters();
                Utils.Logger(Tag + string.Format("<b>GetAllPosters</b> returned \"{0}\" results.", localId, posters.Count));
                return posters.ToArray();
            }
            catch (Exception ex)
            {
                Utils.Logger(Utils.GetAllErrorDetails(ex));
            }

            return new string[]{};
        }