public List<MetroContract_Comment> GetAniDBRecommendationsForAnime(int animeID, int maxRecords)
		{
			List<MetroContract_Comment> contracts = new List<MetroContract_Comment>();
			try
			{
				using (var session = JMMService.SessionFactory.OpenSession())
				{
					AniDB_RecommendationRepository repBA = new AniDB_RecommendationRepository();

					int cnt = 0;
					foreach (AniDB_Recommendation rec in repBA.GetByAnimeID(session, animeID))
					{
						MetroContract_Comment shout = new MetroContract_Comment();

						shout.UserID = rec.UserID;
						shout.UserName = "";

						// shout details
						shout.CommentText = rec.RecommendationText;
						shout.IsSpoiler = false;
						shout.CommentDate = null;

						shout.ImageURL = string.Empty;

						AniDBRecommendationType recType = (AniDBRecommendationType)rec.RecommendationType;
						switch (recType)
						{
							case AniDBRecommendationType.ForFans: shout.CommentType = (int)WhatPeopleAreSayingType.AniDBForFans; break;
							case AniDBRecommendationType.MustSee: shout.CommentType = (int)WhatPeopleAreSayingType.AniDBMustSee; break;
							case AniDBRecommendationType.Recommended: shout.CommentType = (int)WhatPeopleAreSayingType.AniDBRecommendation; break;
						}

						shout.Source = "AniDB";

						cnt++;
						contracts.Add(shout);

						if (cnt == maxRecords) break;
					}

					return contracts;
				}
			}
			catch (Exception ex)
			{
				logger.ErrorException(ex.ToString(), ex);
				return contracts;
			}
		}
示例#2
0
        public List<Contract_AniDB_Recommendation> GetAniDBRecommendations(int animeID)
        {
            List<Contract_AniDB_Recommendation> contracts = new List<Contract_AniDB_Recommendation>();
            try
            {

                AniDB_RecommendationRepository repBA = new AniDB_RecommendationRepository();

                foreach (AniDB_Recommendation rec in repBA.GetByAnimeID(animeID))
                    contracts.Add(rec.ToContract());

                return contracts;
            }
            catch (Exception ex)
            {
                logger.ErrorException(ex.ToString(), ex);
                return contracts;
            }
        }
示例#3
0
        public JMMServer.Providers.Azure.AnimeFull ToContractAzure(ISession session)
        {
            JMMServer.Providers.Azure.AnimeFull contract = new JMMServer.Providers.Azure.AnimeFull();
            contract.Detail = new Providers.Azure.AnimeDetail();
            contract.Characters = new List<Providers.Azure.AnimeCharacter>();
            contract.Comments = new List<Providers.Azure.AnimeComment>();

            contract.Detail.AllTags = this.TagsString;
            contract.Detail.AllCategories = this.TagsString;
            contract.Detail.AnimeID = this.AnimeID;
            contract.Detail.AnimeName = this.MainTitle;
            contract.Detail.AnimeType = this.AnimeTypeDescription;
            contract.Detail.Description = this.Description;
            contract.Detail.EndDateLong = Utils.GetAniDBDateAsSeconds(this.EndDate);
            contract.Detail.StartDateLong = Utils.GetAniDBDateAsSeconds(this.AirDate);
            contract.Detail.EpisodeCountNormal = this.EpisodeCountNormal;
            contract.Detail.EpisodeCountSpecial = this.EpisodeCountSpecial;
            contract.Detail.FanartURL = GetDefaultFanartOnlineURL(session);
            contract.Detail.OverallRating = this.AniDBRating;
            contract.Detail.PosterURL = string.Format(Constants.URLS.AniDB_Images, Picname);
            contract.Detail.TotalVotes = this.AniDBTotalVotes;

            AniDB_Anime_CharacterRepository repAnimeChar = new AniDB_Anime_CharacterRepository();
            AniDB_CharacterRepository repChar = new AniDB_CharacterRepository();

            List<AniDB_Anime_Character> animeChars = repAnimeChar.GetByAnimeID(session, AnimeID);

            if (animeChars != null || animeChars.Count > 0)
            {
                // first get all the main characters
                foreach (AniDB_Anime_Character animeChar in animeChars.Where(item => item.CharType.Equals("main character in", StringComparison.InvariantCultureIgnoreCase)))
                {
                    AniDB_Character chr = repChar.GetByCharID(session, animeChar.CharID);
                    if (chr != null)
                        contract.Characters.Add(chr.ToContractAzure(animeChar));
                }

                // now get the rest
                foreach (AniDB_Anime_Character animeChar in animeChars.Where(item => !item.CharType.Equals("main character in", StringComparison.InvariantCultureIgnoreCase)))
                {
                    AniDB_Character chr = repChar.GetByCharID(session, animeChar.CharID);
                    if (chr != null)
                        contract.Characters.Add(chr.ToContractAzure(animeChar));

                }
            }

            AniDB_RecommendationRepository repBA = new AniDB_RecommendationRepository();

            foreach (AniDB_Recommendation rec in repBA.GetByAnimeID(session, AnimeID))
            {
                JMMServer.Providers.Azure.AnimeComment comment = new JMMServer.Providers.Azure.AnimeComment();

                comment.UserID = rec.UserID;
                comment.UserName = "";

                // Comment details
                comment.CommentText = rec.RecommendationText;
                comment.IsSpoiler = false;
                comment.CommentDateLong = 0;

                comment.ImageURL = string.Empty;

                AniDBRecommendationType recType = (AniDBRecommendationType)rec.RecommendationType;
                switch (recType)
                {
                    case AniDBRecommendationType.ForFans: comment.CommentType = (int)WhatPeopleAreSayingType.AniDBForFans; break;
                    case AniDBRecommendationType.MustSee: comment.CommentType = (int)WhatPeopleAreSayingType.AniDBMustSee; break;
                    case AniDBRecommendationType.Recommended: comment.CommentType = (int)WhatPeopleAreSayingType.AniDBRecommendation; break;
                }

                comment.Source = "AniDB";
                contract.Comments.Add(comment);
            }

            return contract;
        }