コード例 #1
0
        public System.IO.Stream Search(string UserId, string limit, string query, bool searchTag)
        {
            KodiObject ret = new KodiObject(KodiHelper.NewMediaContainer("Search", false));

            ret.MediaContainer.Title2 = "Search Results for '" + query + "'...";
            AniDB_AnimeRepository repAnime  = new AniDB_AnimeRepository();
            AnimeSeriesRepository repSeries = new AnimeSeriesRepository();

            int lim;

            if (!int.TryParse(limit, out lim))
            {
                lim = 100;
            }
            JMMUser user = KodiHelper.GetUser(UserId);

            if (user == null)
            {
                return(new MemoryStream());
            }
            List <Video>       ls  = new List <Video>();
            int                cnt = 0;
            List <AniDB_Anime> animes;

            if (searchTag)
            {
                animes = repAnime.SearchByTag(query);
            }
            else
            {
                animes = repAnime.SearchByName(query);
            }
            foreach (AniDB_Anime anidb_anime in animes)
            {
                if (!user.AllowedAnime(anidb_anime))
                {
                    continue;
                }
                AnimeSeries ser = repSeries.GetByAnimeID(anidb_anime.AnimeID);
                if (ser != null)
                {
                    Contract_AnimeSeries cserie = ser.ToContract(ser.GetUserRecord(user.JMMUserID), true);
                    Video v = KodiHelper.FromSerieWithPossibleReplacement(cserie, ser, user.JMMUserID);

                    //proper naming
                    v.OriginalTitle = "";
                    foreach (AniDB_Anime_Title title in anidb_anime.GetTitles())
                    {
                        if (title.TitleType == "official" || title.TitleType == "main")
                        {
                            v.OriginalTitle += "{" + title.TitleType + ":" + title.Language + "}" + title.Title + "|";
                        }
                    }
                    v.OriginalTitle = v.OriginalTitle.Substring(0, v.OriginalTitle.Length - 1);
                    //proper naming end

                    //experiment
                    Characters c = new Characters();
                    c.CharactersList = new List <Character>();
                    c.CharactersList = GetCharactersFromAniDB(anidb_anime);
                    v.CharactersList = new List <Characters>();
                    v.CharactersList.Add(c);
                    //experiment END

                    switch (anidb_anime.AnimeTypeEnum)
                    {
                    case enAnimeType.Movie:
                        v.SourceTitle = "Anime Movies";
                        break;

                    case enAnimeType.OVA:
                        v.SourceTitle = "Anime Ovas";
                        break;

                    case enAnimeType.Other:
                        v.SourceTitle = "Anime Others";
                        break;

                    case enAnimeType.TVSeries:
                        v.SourceTitle = "Anime Series";
                        break;

                    case enAnimeType.TVSpecial:
                        v.SourceTitle = "Anime Specials";
                        break;

                    case enAnimeType.Web:
                        v.SourceTitle = "Anime Web Clips";
                        break;
                    }

                    ls.Add(v);
                    cnt++;
                    if (cnt == lim)
                    {
                        break;
                    }
                }
            }
            ret.MediaContainer.Childrens = ls;
            return(ret.GetStream());
        }
コード例 #2
0
        public System.IO.Stream Search(string UserId, string limit, string query)
        {
            HistoryInfo info = new HistoryInfo {
                Key = PlexHelper.ConstructSearchUrl(UserId, limit, query), Title = "Search for '" + query + "'"
            };

            PlexObject            ret       = new PlexObject(PlexHelper.NewMediaContainer(MediaContainerTypes.Show, info, true));
            AniDB_AnimeRepository repAnime  = new AniDB_AnimeRepository();
            AnimeSeriesRepository repSeries = new AnimeSeriesRepository();
            int lim;

            if (!int.TryParse(limit, out lim))
            {
                lim = 20;
            }
            JMMUser user = PlexHelper.GetUser(UserId);

            if (user == null)
            {
                return(new MemoryStream());
            }
            List <Video>       ls     = new List <Video>();
            int                cnt    = 0;
            List <AniDB_Anime> animes = repAnime.SearchByName(query);

            foreach (AniDB_Anime anidb_anime in animes)
            {
                if (!user.AllowedAnime(anidb_anime))
                {
                    continue;
                }
                AnimeSeries ser = repSeries.GetByAnimeID(anidb_anime.AnimeID);
                if (ser != null)
                {
                    Contract_AnimeSeries cserie = ser.ToContract(ser.GetUserRecord(user.JMMUserID), true);
                    Video v = PlexHelper.FromSerieWithPossibleReplacement(cserie, ser, anidb_anime, user.JMMUserID);
                    switch (anidb_anime.AnimeTypeEnum)
                    {
                    case enAnimeType.Movie:
                        v.SourceTitle = "Anime Movies";
                        break;

                    case enAnimeType.OVA:
                        v.SourceTitle = "Anime Ovas";
                        break;

                    case enAnimeType.Other:
                        v.SourceTitle = "Anime Others";
                        break;

                    case enAnimeType.TVSeries:
                        v.SourceTitle = "Anime Series";
                        break;

                    case enAnimeType.TVSpecial:
                        v.SourceTitle = "Anime Specials";
                        break;

                    case enAnimeType.Web:
                        v.SourceTitle = "Anime Web Clips";
                        break;
                    }

                    ls.Add(v, info);
                    cnt++;
                    if (cnt == lim)
                    {
                        break;
                    }
                }
            }
            ret.MediaContainer.Childrens = PlexHelper.ConvertToDirectoryIfNotUnique(ls);
            return(ret.GetStream());
        }