예제 #1
0
        public static TmdbPerson[] GetPopular(int minPage, int maxPage)
        {
            var l = Tmdb.CollapsePagedJson(
                Tmdb.InvokePaged("/person/popular", minPage, maxPage));

            return(JsonArray.ToArray(l, (d) => new TmdbPerson((IDictionary <string, object>)d)));
        }
예제 #2
0
        public static TmdbMovie[] SearchMovies(string query, int minPage, int maxPage, int year = 0, int primaryReleaseYear = 0, string region = null, bool includeAdult = false)
        {
            var args = new JsonObject();

            args.Add("query", query);
            if (!string.IsNullOrEmpty(region))
            {
                args.Add("region", region);
            }
            if (includeAdult)
            {
                args.Add("include_adult", includeAdult);
            }
            if (0 < year)
            {
                args.Add("year", year);
            }
            if (0 < primaryReleaseYear)
            {
                args.Add("primary_release_year", primaryReleaseYear);
            }
            return(JsonArray.ToArray(
                       Tmdb.CollapsePagedJson(
                           Tmdb.InvokePagedLang("/search/movie", minPage, maxPage, args)),
                       (d) => new TmdbMovie((IDictionary <string, object>)d)));
        }
예제 #3
0
        public TmdbMovieList[] GetLists(int minPage = 0, int maxPage = 999)
        {
            var l = Tmdb.CollapsePagedJson(
                Tmdb.InvokePagedLang(string.Concat("/", string.Join("/", PathIdentity), "/lists"), minPage, maxPage));

            return(JsonArray.ToArray(l, (d) => new TmdbMovieList((IDictionary <string, object>)d)));
        }
예제 #4
0
        public TmdbMovie[] GetRatedMovies(TmdbRatedSortType sortBy = TmdbRatedSortType.Default)
        {
            var    sessionId = Id;
            string sb        = null;

            switch (sortBy)
            {
            case TmdbRatedSortType.DateCreated | TmdbRatedSortType.Ascending:
                sb = "created_at.asc";
                break;

            default:
                // we want to cache the default
                return(RatedMovies);
            }
            var args = new JsonObject();

            args.Add("sort_by", sb);
            var l = Tmdb.CollapsePagedJson(Tmdb.InvokePagedLang(string.Concat("/guest_session/", Id, "/rated/movies"), 0, 0, args));

            if (null != l)
            {
                return(JsonArray.ToArray(l, (d) => new TmdbMovie((IDictionary <string, object>)d)));
            }
            return(null);
        }
예제 #5
0
        static TmdbShow[] _GetShows(string method, int minPage, int maxPage)
        {
            var args = new JsonObject();
            var l    = Tmdb.CollapsePagedJson(
                Tmdb.InvokePagedLang(string.Concat("/tv/", method), minPage, maxPage, args));

            return(JsonArray.ToArray(l, (d) => new TmdbShow((IDictionary <string, object>)d)));
        }
예제 #6
0
        public static TmdbCompany[] SearchCompanies(string query, int minPage, int maxPage)
        {
            var args = new JsonObject();

            args.Add("query", query);
            return(JsonArray.ToArray(
                       Tmdb.CollapsePagedJson(
                           Tmdb.InvokePaged("/search/company", minPage, maxPage, args)),
                       (d) => new TmdbCompany((IDictionary <string, object>)d)));
        }
예제 #7
0
        public static TmdbKeyword[] SearchKeywords(string query, int minPage, int maxPage)
        {
            var args = new JsonObject();

            args.Add("query", query);
            return(JsonArray.ToArray(
                       Tmdb.CollapsePagedJson(
                           Tmdb.InvokePagedLang("/search/keyword", minPage, maxPage, args)),
                       (d) => new TmdbKeyword((IDictionary <string, object>)d)));
        }
예제 #8
0
 public static TmdbMovie[] DiscoverMovies(TmdbDiscoverMoviesInfo query, int minPage, int maxPage)
 {
     if (null == query)
     {
         query = new TmdbDiscoverMoviesInfo();
     }
     return(JsonArray.ToArray(
                Tmdb.CollapsePagedJson(
                    Tmdb.InvokePagedLang("/discover/movie", minPage, maxPage, query.ToArguments())),
                (d) => new TmdbMovie((IDictionary <string, object>)d)));
 }
예제 #9
0
        static TmdbMovie[] _GetMovies(string method, string region, int minPage, int maxPage)
        {
            var args = new JsonObject();

            if (null != region)
            {
                args.Add("region", region);
            }
            var l = Tmdb.CollapsePagedJson(
                Tmdb.InvokePagedLang(string.Concat("/movie/", method), minPage, maxPage, args));

            return(JsonArray.ToArray(l, (d) => new TmdbMovie((IDictionary <string, object>)d)));
        }
예제 #10
0
        public TmdbMovie[] GetMovies(bool includeAdult = false)
        {
            // this routine does not accept a page parameter but returns the results
            // in paged format
            var args = new JsonObject();

            if (includeAdult)
            {
                args.Add("include_adult", true);
            }
            return(JsonArray.ToArray(
                       Tmdb.CollapsePagedJson(Tmdb.InvokePagedLang(string.Concat("/keyword/", Id.ToString(), "/movies"), 0, 0, args)),
                       (d) => new TmdbMovie((IDictionary <string, object>)d)));
        }
예제 #11
0
        public static TmdbShow[] SearchShows(string query, int minPage, int maxPage, int firstAirDateYear = 0)
        {
            var args = new JsonObject();

            args.Add("query", query);
            if (0 < firstAirDateYear)
            {
                args.Add("first_air_date_year", firstAirDateYear);
            }
            return(JsonArray.ToArray(
                       Tmdb.CollapsePagedJson(
                           Tmdb.InvokePagedLang("/search/tv", minPage, maxPage, args)),
                       (d) => new TmdbShow((IDictionary <string, object>)d)));
        }
예제 #12
0
        public static TmdbPrimary[] GetTrending(TmdbTimeWindow window, int minPage = 0, int maxPage = 999)
        {
            string tw = "day";

            switch (window)
            {
            case TmdbTimeWindow.Week:
                tw = "week";
                break;
            }
            var l = Tmdb.CollapsePagedJson(
                Tmdb.InvokePaged(string.Concat("/trending/all/", tw), minPage, maxPage));

            return(JsonArray.ToArray(l, (d) => _GetPrimaryTrending((IDictionary <string, object>)d)));
        }
예제 #13
0
        void _EnsureFetchedRatedShows()
        {
            var l = GetField <IList <object> >("rated_shows");

            if (null == l)
            {
                // this function does not actually accept a page parameter, but it returns the result
                // in paged form, so we use the paged routines with the default page (0) which does not
                // send a page parameter.
                l = Tmdb.CollapsePagedJson(Tmdb.InvokePagedLang(string.Concat("/guest_session/", Id, "/rated/tv"), 0, 0));
                if (null != l)
                {
                    Json.Add("rated_shows", l);
                }
            }
        }
예제 #14
0
        public static TmdbMovie[] GetMovieChanges(DateTime startDate = default(DateTime), DateTime endDate = default(DateTime), int minPage = 0, int maxPage = 999)
        {
            var args = new JsonObject();

            if (default(DateTime) != startDate)
            {
                args.Add("start_date", startDate.ToString("yyyy-MM-dd"));
            }
            if (default(DateTime) != endDate)
            {
                args.Add("end_date", endDate.ToString("yyyy-MM-dd"));
            }
            return(JsonArray.ToArray(
                       Tmdb.CollapsePagedJson(
                           Tmdb.InvokePaged("/movie/changes", minPage, maxPage, args))
                       , (d) => new TmdbMovie(d as IDictionary <string, object>)));
        }
예제 #15
0
        public static TmdbPerson[] SearchPeople(string query, int minPage, int maxPage, string region = null, bool includeAdult = false)
        {
            var args = new JsonObject();

            args.Add("query", query);
            if (!string.IsNullOrEmpty(region))
            {
                args.Add("region", region);
            }
            if (includeAdult)
            {
                args.Add("include_adult", includeAdult);
            }
            return(JsonArray.ToArray(
                       Tmdb.CollapsePagedJson(
                           Tmdb.InvokePagedLang("/search/person", minPage, maxPage, args)),
                       (d) => new TmdbPerson((IDictionary <string, object>)d)));
        }
예제 #16
0
        // TODO: refactor this. It's a duplicate from TmdbMedia and TmdbPerson, and TmdbSeason
        public KeyValuePair <string, TmdbChangeAction[]>[] GetChangesGroupedByKey(int minPage, int maxPage, DateTime startDate = default(DateTime), DateTime endDate = default(DateTime))
        {
            var args = new JsonObject();

            if (default(DateTime) != startDate)
            {
                args.Add("start_date", Tmdb.DateTimeToDate(startDate));
            }
            if (default(DateTime) != endDate)
            {
                args.Add("end_date", Tmdb.DateTimeToDate(endDate));
            }
            var l = Tmdb.CollapsePagedJson(Tmdb.InvokeFlatPaged(string.Concat("/", string.Join("/", PathIdentity), "/changes"), minPage, maxPage, args));

            if (null != l)
            {
                var result = new KeyValuePair <string, TmdbChangeAction[]> [l.Count];
                for (var i = 0; i < result.Length; i++)
                {
                    var ci = l[i] as IDictionary <string, object>;
                    if (null != ci)
                    {
                        string             key = null;
                        TmdbChangeAction[] value;
                        object             o;
                        if (ci.TryGetValue("key", out o))
                        {
                            key = o as string;
                        }
                        if (ci.TryGetValue("items", out o))
                        {
                            var ll = o as IList <object>;
                            value     = JsonArray.ToArray(ll, (dd) => new TmdbChangeAction((IDictionary <string, object>)dd));
                            result[i] = new KeyValuePair <string, TmdbChangeAction[]>(key, value);
                        }
                    }
                }
                return(result);
            }
            return(null);
        }
예제 #17
0
        public static TmdbPrimary[] Search(string query, int minPage, int maxPage, string region = null, bool includeAdult = false)
        {
            var args = new JsonObject();

            args.Add("query", query);
            if (!string.IsNullOrEmpty(region))
            {
                args.Add("region", region);
            }
            if (includeAdult)
            {
                args.Add("includeAdult", includeAdult);
            }
            var l = Tmdb.CollapsePagedJson(
                Tmdb.InvokePagedLang("/search/multi", minPage, maxPage, args));

            return(JsonArray.ToArray <TmdbPrimary>(l, (dd) =>
            {
                var d = dd as IDictionary <string, object>;
                if (null != d)
                {
                    object o;
                    if (d.TryGetValue("media_type", out o))
                    {
                        switch (o as string)
                        {
                        case "movie":
                            return new TmdbMovie((IDictionary <string, object>)dd);

                        case "tv":
                            return new TmdbShow((IDictionary <string, object>)dd);

                        case "person":
                            return new TmdbPerson((IDictionary <string, object>)dd);
                        }
                    }
                }
                return null;
            }
                                                   ));
        }
예제 #18
0
        public static TmdbMovie[] GetGuestSessionRatedMovies(TmdbRatedSortType sortBy = TmdbRatedSortType.Default)
        {
            var    sessionId = GuestSessionId;
            var    args      = new JsonObject();
            string sb        = null;

            switch (sortBy)
            {
            case TmdbRatedSortType.DateCreated | TmdbRatedSortType.Ascending:
                sb = "created_at.asc";
                break;

            default:
                sb = "created_at.desc";
                break;
            }
            args.Add("sort_by", sb);
            // this function does not actually accept a page parameter, but it returns the result
            // in paged form, so we use the paged routines with the default page (0) which does not
            // send a page parameter.
            return(JsonArray.ToArray(
                       Tmdb.CollapsePagedJson(Tmdb.InvokePagedLang(string.Concat("/guest_session/", sessionId, "/rated/movies"), 0, 0, args)),
                       (d) => new TmdbMovie((IDictionary <string, object>)d)));
        }
예제 #19
0
 public TmdbTaggedImage[] GetTaggedImages(int minPage = 0, int maxPage = 999)
 {
     return(JsonArray.ToArray(Tmdb.CollapsePagedJson(
                                  Tmdb.InvokePagedLang(string.Concat("/", string.Join("/", PathIdentity), "/tagged_images"))),
                              (d) => new TmdbTaggedImage((IDictionary <string, object>)d)));
 }
예제 #20
0
 public TmdbShow[] GetSimilar(int minPage = 0, int maxPage = 999)
 {
     return(JsonArray.ToArray(Tmdb.CollapsePagedJson(
                                  Tmdb.InvokePagedLang(string.Concat("/", string.Join("/", PathIdentity), "/similar"), minPage, maxPage)),
                              (d) => new TmdbShow((IDictionary <string, object>)d)));
 }