示例#1
0
        private object GetUnsort(int max_limit)
        {
            ObjectList dir = new ObjectList("unsort", ObjectList.ListType.FILE);
            List<object> lst = new List<object>();

            List<VideoLocal> vids = RepoFactory.VideoLocal.GetVideosWithoutEpisode();

            foreach (VideoLocal vl in vids)
            {
                try
                {
                    RawFile v = new RawFile(vl, 0);
                    lst.Add(v);
                }
                catch { }

                if (max_limit != -1)
                {
                    if (lst.Count >= max_limit)
                    {
                        break;
                    }
                }
            }

            dir.Add(lst);
            return dir;
        }
示例#2
0
        internal object GetAllEpisodes()
        {
            Request request = this.Request;
            JMMUser user = (JMMUser)this.Context.CurrentUser;
            ObjectList ob = new ObjectList("all episodes", ObjectList.ListType.EPISODE);
            List<object> eps = new List<object>();
            List<int> aepul = RepoFactory.AnimeEpisode_User.GetByUserID(user.JMMUserID).Select(a => a.AnimeEpisodeID).ToList();
            foreach (int id in aepul)
            {
                eps.Add(new Episode().GenerateFromAnimeEpisodeID(id, user.JMMUserID,0));
            }
            ob.Add(eps);

            return ob;
        }
示例#3
0
        private object GetSerieByFolderId(int folder_id, int max)
        {
            Request request = this.Request;
            Entities.JMMUser user = (Entities.JMMUser)this.Context.CurrentUser;

            ObjectList ob = new ObjectList("all series", ObjectList.ListType.SERIE);
            List<object> allseries = new List<object>();

            List<VideoLocal> vlpall = RepoFactory.VideoLocalPlace.GetByImportFolder(folder_id).Select(a => a.VideoLocal).ToList();

            foreach (VideoLocal vl in vlpall)
            {
                Serie ser = new Serie().GenerateFromVideoLocal(vl, user.JMMUserID, 1,0,0);
                allseries.Add(ser);
                if (allseries.Count >= max) { break; }
            }

            ob.Add(allseries);
            return ob;
        }
示例#4
0
        private object GetRecentSeries(int limit)
        {
            Request request = this.Request;
            Entities.JMMUser user = (Entities.JMMUser)this.Context.CurrentUser;

            ObjectList ob = new ObjectList("all series", ObjectList.ListType.SERIE);
            List<object> allseries = new List<object>();

            List<AnimeSeries> series = RepoFactory.AnimeSeries.GetMostRecentlyAdded(limit);

            foreach (AnimeSeries aser in series)
            {
                allseries.Add(new Serie().GenerateFromAnimeSeries(aser, user.JMMUserID, 1,0,0));
            }

            ob.Add(allseries);
            return ob;
        }
示例#5
0
        private object GetRecentEpisodes(int max_limit)
        {
            Request request = this.Request;
            Entities.JMMUser user = (Entities.JMMUser)this.Context.CurrentUser;

            ObjectList obl = new ObjectList("recent episodes", ObjectList.ListType.EPISODE);
            List<object> lst = new List<object>();

            List<VideoLocal> vids = RepoFactory.VideoLocal.GetMostRecentlyAdded(max_limit);

            foreach (VideoLocal vl in vids)
            {
                foreach (AnimeEpisode aep in vl.GetAnimeEpisodes())
                {
                    Episode ep = new Episode().GenerateFromAnimeEpisode(aep, user.JMMUserID, 0);
                    lst.Add(ep);
                }
            }

            obl.Add(lst);

            return obl;
        }
示例#6
0
        private object GetItemsFromGroup(int uid, string GroupId, bool nocast = false)
        {
            int gid;
            int.TryParse(GroupId, out gid);
            if (gid == -1) { return APIStatus.internalError("Invalid Group Id"); }

            ObjectList obl = new ObjectList();

            List<Video> retGroups = new List<Video>();
            AnimeGroup grp = RepoFactory.AnimeGroup.GetByID(gid);
            if (grp == null) { return APIStatus.notFound404("Group not found"); }

            Contract_AnimeGroup basegrp = grp?.GetUserContract(uid);
            if (basegrp != null)
            {
                List<AnimeSeries> seriesList = grp.GetSeries();

                foreach (AnimeGroup grpChild in grp.GetChildGroups())
                {
                    Filter fr = new Filter();

                    var v = grpChild.GetPlexContract(uid);
                    if (v != null)
                    {
                        fr.type = "show";
                        fr.url = APIHelper.ConstructGroupIdUrl(gid.ToString());

                        fr.art.fanart.Add(new Art() { url = Helper.GetRandomFanartFromVideo(v) ?? v.Art, index = 0 });
                        fr.art.banner.Add(new Art() { url = v.Banner = Helper.GetRandomBannerFromVideo(v) ?? v.Banner, index = 0 });

                        obl.list.Add(fr);
                    }
                }
                foreach (AnimeSeries ser in seriesList)
                {
                    Serie seri = new Serie().GenerateFromAnimeSeries(ser, uid, 0,0,0);
                    obl.list.Add(seri);
                }
            }

            return obl;
        }
示例#7
0
        private object GetGroupsOrSubFiltersFromFilter(string GroupFilterID, int uid)
        {
            try
            {
                int groupFilterID = -1;
                int.TryParse(GroupFilterID, out groupFilterID);
                ObjectList dir = new ObjectList();
                if (groupFilterID >= 0)
                {
                    GroupFilter gf = RepoFactory.GroupFilter.GetByID(groupFilterID);

                    if (gf == null) { return APIStatus.notFound404(); }

                    dir.name = gf.GroupFilterName;
                    dir.type = "show";

                    List<GroupFilter> allGfs = RepoFactory.GroupFilter.GetByParentID(groupFilterID).Where(a => a.InvisibleInClients == 0 &&
                    (
                        (a.GroupsIds.ContainsKey(uid) && a.GroupsIds[uid].Count > 0)
                        || (a.FilterType & (int)GroupFilterType.Directory) == (int)GroupFilterType.Directory)
                    ).ToList();

                    List<Filter> dirs = new List<Filter>();
                    foreach (GroupFilter gg in allGfs)
                    {
                        Filter pp = APIHelper.FilterFromGroupFilter(gg, uid);
                        dirs.Add(pp);
                    }

                    if (dirs.Count > 0)
                    {

                        dir.Add(new List<object>(dirs.OrderBy(a => a.name).Cast<object>().ToList()));
                        return dir;
                    }

                    if (gf.GroupsIds.ContainsKey(uid))
                    {
                        foreach (AnimeGroup grp in gf.GroupsIds[uid].ToList().Select(a => RepoFactory.AnimeGroup.GetByID(a)).Where(a => a != null))
                        {
                            Filter pp = APIHelper.FilterFromAnimeGroup(grp, uid);
                            dirs.Add(pp);
                        }

                        dir.Add(new List<object>(dirs.Cast<object>().ToList()));
                    }
                }

                return dir;
            }
            catch (Exception ex)
            {
                return APIStatus.internalError(ex.Message.ToString());
            }
        }