public List<Contract_Trakt_CommentUser> GetTraktCommentsForAnime(int animeID) { List<Contract_Trakt_CommentUser> comments = new List<Contract_Trakt_CommentUser>(); try { Trakt_FriendRepository repFriends = new Trakt_FriendRepository(); List<TraktV2Comment> commentsTemp = TraktTVHelper.GetShowCommentsV2(animeID); if (commentsTemp == null || commentsTemp.Count == 0) return comments; foreach (TraktV2Comment sht in commentsTemp) { Contract_Trakt_CommentUser comment = new Contract_Trakt_CommentUser(); Trakt_Friend traktFriend = repFriends.GetByUsername(sht.user.username); // user details comment.User = new Contract_Trakt_User(); if (traktFriend == null) comment.User.Trakt_FriendID = 0; else comment.User.Trakt_FriendID = traktFriend.Trakt_FriendID; comment.User.Username = sht.user.username; comment.User.Full_name = sht.user.name; // comment details comment.Comment = new Contract_Trakt_Comment(); comment.Comment.CommentType = (int)TraktActivityType.Show; // episode or show comment.Comment.Text = sht.comment; comment.Comment.Spoiler = sht.spoiler; comment.Comment.Inserted = sht.CreatedAtDate; // urls comment.Comment.Comment_Url = string.Format(TraktURIs.WebsiteComment, sht.id); comments.Add(comment); } } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } return comments; }
public static List<TraktV2Follower> GetFriendsV2() { List<TraktV2Follower> friends = new List<TraktV2Follower>(); try { if (!ServerSettings.Trakt_IsEnabled || string.IsNullOrEmpty(ServerSettings.Trakt_AuthToken)) return friends; string url = TraktURIs.GetUserFriends; logger.Trace("GetFollowers: {0}", url); string json = GetFromTrakt(url); if (string.IsNullOrEmpty(json)) return null; var resultFollowers = json.FromJSONArray<TraktV2Follower>(); Trakt_ShowRepository repShows = new Trakt_ShowRepository(); Trakt_EpisodeRepository repEpisodes = new Trakt_EpisodeRepository(); Trakt_FriendRepository repFriends = new Trakt_FriendRepository(); foreach (TraktV2Follower friend in resultFollowers) { Trakt_Friend traktFriend = repFriends.GetByUsername(friend.user.username); if (traktFriend == null) traktFriend = new Trakt_Friend(); traktFriend.Populate(friend.user); repFriends.Save(traktFriend); // get a watched history for each friend url = string.Format(TraktURIs.GetUserHistory, friend.user.username); logger.Trace("GetUserHistory: {0}", url); json = GetFromTrakt(url); if (string.IsNullOrEmpty(json)) continue; var resultHistory = json.FromJSONArray<TraktV2UserEpisodeHistory>(); /* foreach (TraktV2UserEpisodeHistory wtch in resultHistory) { if (wtch.episode != null && wtch.show != null) { Trakt_Show show = repShows.GetByTraktID(wtch.show.ids.slug); if (show == null) { show = new Trakt_Show(); show.Populate(wtch.show); repShows.Save(show); } Trakt_Episode episode = repEpisodes.GetByShowIDSeasonAndEpisode(show.Trakt_ShowID, wtch.episode.season, wtch.episode.number); if (episode == null) episode = new Trakt_Episode(); episode.Populate(wtch.episode, show.Trakt_ShowID); repEpisodes.Save(episode); if (!string.IsNullOrEmpty(episode.FullImagePath)) { bool fileExists = File.Exists(episode.FullImagePath); if (!fileExists) { CommandRequest_DownloadImage cmd = new CommandRequest_DownloadImage(episode.Trakt_EpisodeID, JMMImageType.Trakt_Episode, false); cmd.Save(); } } } }*/ } //Contract_Trakt_Friend fr = friends[0].ToContract(); } catch (Exception ex) { logger.ErrorException("Error in TraktTVHelper.GetFriends: " + ex.ToString(), ex); return friends; } return friends; }
public Contract_Trakt_Activity GetTraktFriendInfo(int maxResults, bool animeOnly, bool getShouts, bool getScrobbles) { CrossRef_AniDB_TraktRepository repXrefTrakt = new CrossRef_AniDB_TraktRepository(); CrossRef_AniDB_TvDBV2Repository repXrefTvDB = new CrossRef_AniDB_TvDBV2Repository(); AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); AnimeSeriesRepository repSeries = new AnimeSeriesRepository(); Trakt_FriendRepository repFriends = new Trakt_FriendRepository(); Trakt_EpisodeRepository repEpisodes = new Trakt_EpisodeRepository(); Trakt_ShowRepository repShows = new Trakt_ShowRepository(); Contract_Trakt_Activity contract = new Contract_Trakt_Activity(); contract.HasTraktAccount = true; if (string.IsNullOrEmpty(ServerSettings.Trakt_Username) || string.IsNullOrEmpty(ServerSettings.Trakt_Password)) contract.HasTraktAccount = false; contract.TraktFriends = new List<Contract_Trakt_Friend>(); contract.TraktFriendRequests = new List<Contract_Trakt_FriendFrequest>(); contract.TraktFriendActivity = new List<Contract_Trakt_FriendActivity>(); try { int i = 1; foreach (TraktTV_Activity act in StatsCache.Instance.TraktFriendActivityInfo) { if (i >= maxResults) break; if (act.ActivityAction == (int)TraktActivityAction.Scrobble && !getScrobbles) continue; if (act.ActivityAction == (int)TraktActivityAction.Shout && !getShouts) continue; Contract_Trakt_FriendActivity contractAct = new Contract_Trakt_FriendActivity(); if (act.show == null) continue; // find the anime and series based on the trakt id int? animeID = null; CrossRef_AniDB_Trakt xref = null; if (act.episode != null) xref = repXrefTrakt.GetByTraktID(act.show.TraktID, int.Parse(act.episode.season)); if (xref != null) animeID = xref.AnimeID; else { // try a rough match // since we won't always do an exact match by season List<CrossRef_AniDB_Trakt> traktXrefs = repXrefTrakt.GetByTraktID(act.show.TraktID); if (traktXrefs.Count > 0) animeID = traktXrefs[0].AnimeID; else { // try the tvdb id instead //TODO /* CrossRef_AniDB_TvDBV2 xrefTvDB = null; if (act.episode != null) xrefTvDB = repXrefTvDB.GetByTvDBID(int.Parse(act.show.tvdb_id), int.Parse(act.episode.season)); if (xrefTvDB != null) animeID = xrefTvDB.AnimeID;*/ } } // skip this activity if we can't find the anime and the user only wants to see anime related stuff if (!animeID.HasValue && animeOnly) { //TODO // however let's try and look it up on the web cache to see if it is an anime // this just might be an anime that user doesn't have in their local database continue; } // activity details contractAct.ActivityAction = act.ActivityAction; contractAct.ActivityType = act.ActivityType; contractAct.ActivityDate = Utils.GetAniDBDateAsDate(act.timestamp); if (act.elapsed != null) { contractAct.Elapsed = act.elapsed.full; contractAct.ElapsedShort = act.elapsed.shortElapsed; } Trakt_Friend traktFriend = repFriends.GetByUsername(act.user.username); if (traktFriend == null) return null; // user details contractAct.User = new Contract_Trakt_User(); contractAct.User.Trakt_FriendID = traktFriend.Trakt_FriendID; contractAct.User.Username = act.user.username; contractAct.User.Full_name = act.user.full_name; contractAct.User.Gender = act.user.gender; contractAct.User.Age = act.user.age; contractAct.User.Location = act.user.location; contractAct.User.About = act.user.about; contractAct.User.Joined = act.user.joined; contractAct.User.Avatar = act.user.avatar; contractAct.User.Url = act.user.url; contractAct.User.JoinedDate = Utils.GetAniDBDateAsDate(act.user.joined); // episode details if (act.ActivityAction == (int)TraktActivityAction.Scrobble && act.episode != null) // scrobble episode { contractAct.Episode = new Contract_Trakt_WatchedEpisode(); contractAct.Episode.AnimeSeriesID = null; contractAct.Episode.Episode_Number = act.episode.number; contractAct.Episode.Episode_Overview = act.episode.overview; contractAct.Episode.Episode_Season = act.episode.season; contractAct.Episode.Episode_Title = act.episode.title; contractAct.Episode.Episode_Url = act.episode.url; contractAct.Episode.Trakt_EpisodeID = -1; if (act.episode.images != null) contractAct.Episode.Episode_Screenshot = act.episode.images.screen; if (act.show != null) { contractAct.Episode.TraktShow = act.show.ToContract(); Trakt_Show show = repShows.GetByTraktID(act.show.TraktID); if (show != null) { Trakt_Episode episode = repEpisodes.GetByShowIDSeasonAndEpisode(show.Trakt_ShowID, int.Parse(act.episode.season), int.Parse(act.episode.number)); if (episode != null) contractAct.Episode.Trakt_EpisodeID = episode.Trakt_EpisodeID; } if (animeID.HasValue) { AnimeSeries ser = repSeries.GetByAnimeID(animeID.Value); if (ser != null) contractAct.Episode.AnimeSeriesID = ser.AnimeSeriesID; AniDB_Anime anime = repAnime.GetByAnimeID(animeID.Value); if (anime != null) contractAct.Episode.Anime = anime.ToContract(true, null); } } } // shout details if (act.ActivityAction == (int)TraktActivityAction.Shout && act.shout != null) // shout { contractAct.Shout = new Contract_Trakt_Shout(); contractAct.Shout.ShoutType = act.ActivityType; // episode or show contractAct.Shout.Text = act.shout.text; contractAct.Shout.Spoiler = act.shout.spoiler; contractAct.Shout.AnimeSeriesID = null; if (act.ActivityType == 1 && act.episode != null) // episode { contractAct.Shout.Episode_Number = act.episode.number; contractAct.Shout.Episode_Overview = act.episode.overview; contractAct.Shout.Episode_Season = act.episode.season; contractAct.Shout.Episode_Title = act.episode.title; contractAct.Shout.Episode_Url = act.episode.url; if (act.episode.images != null) contractAct.Shout.Episode_Screenshot = act.episode.images.screen; } if (act.show != null) // episode or show { if (act.episode == null) contractAct.Shout.Episode_Screenshot = act.show.images.fanart; contractAct.Shout.TraktShow = act.show.ToContract(); if (animeID.HasValue) { AnimeSeries ser = repSeries.GetByAnimeID(animeID.Value); if (ser != null) contractAct.Shout.AnimeSeriesID = ser.AnimeSeriesID; AniDB_Anime anime = repAnime.GetByAnimeID(animeID.Value); if (anime != null) contractAct.Shout.Anime = anime.ToContract(true, null); } } } contract.TraktFriendActivity.Add(contractAct); i++; } foreach (TraktTVFriendRequest req in StatsCache.Instance.TraktFriendRequests) { Contract_Trakt_FriendFrequest contractReq = req.ToContract(); contract.TraktFriendRequests.Add(contractReq); } } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } return contract; }
public List<MetroContract_Comment> GetTraktCommentsForAnime(int animeID, int maxRecords) { List<MetroContract_Comment> comments = new List<MetroContract_Comment>(); try { using (var session = JMMService.SessionFactory.OpenSession()) { Trakt_FriendRepository repFriends = new Trakt_FriendRepository(); List<TraktV2Comment> commentsTemp = TraktTVHelper.GetShowCommentsV2(session, animeID); if (commentsTemp == null || commentsTemp.Count == 0) return comments; int cnt = 0; foreach (TraktV2Comment sht in commentsTemp) { MetroContract_Comment comment = new MetroContract_Comment(); Trakt_Friend traktFriend = repFriends.GetByUsername(session, sht.user.username); // user details Contract_Trakt_User user = new Contract_Trakt_User(); if (traktFriend == null) comment.UserID = 0; else comment.UserID = traktFriend.Trakt_FriendID; comment.UserName = sht.user.username; // shout details comment.CommentText = sht.comment; comment.IsSpoiler = sht.spoiler; comment.CommentDate = sht.CreatedAtDate; //shout.ImageURL = sht.user.avatar; comment.CommentType = (int)WhatPeopleAreSayingType.TraktComment; comment.Source = "Trakt"; cnt++; comments.Add(comment); if (cnt == maxRecords) break; } if (comments.Count > 0) { List<SortPropOrFieldAndDirection> sortCriteria = new List<SortPropOrFieldAndDirection>(); sortCriteria.Add(new SortPropOrFieldAndDirection("ShoutDate", false, SortType.eDateTime)); comments = Sorting.MultiSort<MetroContract_Comment>(comments, sortCriteria); } } } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } return comments; }
public List<Contract_Trakt_ShoutUser> GetTraktShoutsForAnime(int animeID) { List<Contract_Trakt_ShoutUser> shouts = new List<Contract_Trakt_ShoutUser>(); try { Trakt_FriendRepository repFriends = new Trakt_FriendRepository(); List<TraktTV_ShoutGet> shoutsTemp = TraktTVHelper.GetShowShouts(animeID); if (shoutsTemp == null || shoutsTemp.Count == 0) return shouts; foreach (TraktTV_ShoutGet sht in shoutsTemp) { Contract_Trakt_ShoutUser shout = new Contract_Trakt_ShoutUser(); Trakt_Friend traktFriend = repFriends.GetByUsername(sht.user.username); // user details shout.User = new Contract_Trakt_User(); if (traktFriend == null) shout.User.Trakt_FriendID = 0; else shout.User.Trakt_FriendID = traktFriend.Trakt_FriendID; shout.User.Username = sht.user.username; shout.User.Full_name = sht.user.full_name; shout.User.Gender = sht.user.gender; shout.User.Age = sht.user.age; shout.User.Location = sht.user.location; shout.User.About = sht.user.about; shout.User.Joined = sht.user.joined; shout.User.Avatar = sht.user.avatar; shout.User.Url = sht.user.url; shout.User.JoinedDate = Utils.GetAniDBDateAsDate(sht.user.joined); // shout details shout.Shout = new Contract_Trakt_Shout(); shout.Shout.ShoutType = (int)TraktActivityType.Show; // episode or show shout.Shout.Text = sht.shout; shout.Shout.Spoiler = sht.spoiler; shout.Shout.Inserted = Utils.GetAniDBDateAsDate(sht.inserted); shouts.Add(shout); } } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } return shouts; }
public Contract_Trakt_Friend ToContract() { CrossRef_AniDB_TraktRepository repXrefTrakt = new CrossRef_AniDB_TraktRepository(); CrossRef_AniDB_TvDBRepository repXrefTvDB = new CrossRef_AniDB_TvDBRepository(); AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); AnimeSeriesRepository repSeries = new AnimeSeriesRepository(); Trakt_FriendRepository repFriends = new Trakt_FriendRepository(); Trakt_EpisodeRepository repEpisodes = new Trakt_EpisodeRepository(); Trakt_Friend traktFriend = repFriends.GetByUsername(username); if (traktFriend == null) return null; Contract_Trakt_Friend contract = new Contract_Trakt_Friend(); contract.Trakt_FriendID = traktFriend.Trakt_FriendID; contract.Username = username; contract.Full_name = full_name; contract.Gender = gender; contract.Age = age; contract.Location = location; contract.About = about; contract.Joined = joined; contract.Avatar = avatar; contract.Url = url; contract.JoinedDate = Utils.GetAniDBDateAsDate(joined); contract.WatchedEpisodes = new List<Contract_Trakt_WatchedEpisode>(); // we only care about the watched episodes foreach (TraktTVWatched wtch in watched) { if (wtch.episode != null) { Contract_Trakt_WatchedEpisode watchedEp = new Contract_Trakt_WatchedEpisode(); watchedEp.Watched = wtch.watched; watchedEp.WatchedDate = Utils.GetAniDBDateAsDate(wtch.watched); if (!contract.LastEpisodeWatched.HasValue) contract.LastEpisodeWatched = watchedEp.WatchedDate; if (watchedEp.WatchedDate.HasValue && watchedEp.WatchedDate > contract.LastEpisodeWatched) contract.LastEpisodeWatched = watchedEp.WatchedDate; watchedEp.AnimeSeriesID = null; watchedEp.Episode_Number = wtch.episode.number; watchedEp.Episode_Overview = wtch.episode.overview; watchedEp.Episode_Season = wtch.episode.season; watchedEp.Episode_Title = wtch.episode.title; watchedEp.Episode_Url = wtch.episode.url; if (wtch.episode.images != null) watchedEp.Episode_Screenshot = wtch.episode.images.screen; if (wtch.show != null) { watchedEp.TraktShow = wtch.show.ToContract(); // find the anime and series based on the trakt id int? animeID = null; CrossRef_AniDB_Trakt xref = repXrefTrakt.GetByTraktID(wtch.show.TraktID, int.Parse(wtch.episode.season)); if (xref != null) animeID = xref.AnimeID; else { // try the tvdb id instead //TODO /* CrossRef_AniDB_TvDB xrefTvDB = repXrefTvDB.GetByTvDBID(int.Parse(wtch.show.tvdb_id), int.Parse(wtch.episode.season)); if (xrefTvDB != null) animeID = xrefTvDB.AnimeID;*/ } if (animeID.HasValue) { AnimeSeries ser = repSeries.GetByAnimeID(animeID.Value); if (ser != null) watchedEp.AnimeSeriesID = ser.AnimeSeriesID; AniDB_Anime anime = repAnime.GetByAnimeID(animeID.Value); if (anime != null) watchedEp.Anime = anime.ToContract(true, null); } } contract.WatchedEpisodes.Add(watchedEp); break; // only show the latest show } } List<SortPropOrFieldAndDirection> sortCriteria = new List<SortPropOrFieldAndDirection>(); sortCriteria.Add(new SortPropOrFieldAndDirection("WatchedDate", true, SortType.eDateTime)); contract.WatchedEpisodes = Sorting.MultiSort<Contract_Trakt_WatchedEpisode>(contract.WatchedEpisodes, sortCriteria); return contract; }
public static List<TraktTVUser> GetFriends() { List<TraktTVUser> friends = new List<TraktTVUser>(); try { string url = string.Format(Constants.TraktTvURLs.URLGetFriends, Constants.TraktTvURLs.APIKey, ServerSettings.Trakt_Username); //string url = string.Format(Constants.TraktTvURLs.URLGetFriends, Constants.TraktTvURLs.APIKey, "lwerndly"); logger.Trace("GetFriends: {0}", url); TraktTVPost_GetFriends cmdFriends = new TraktTVPost_GetFriends(); cmdFriends.Init(); string json = JSONHelper.Serialize<TraktTVPost_GetFriends>(cmdFriends); string jsonResponse = SendData(url, json); if (jsonResponse.Trim().Length == 0) return friends; friends = JSONHelper.Deserialize<List<TraktTVUser>>(jsonResponse); /*string json = Utils.DownloadWebPage(url); if (json.Trim().Length == 0) return null; friends = JSONHelper.Deserialize<List<TraktTVUser>>(json);*/ Trakt_ShowRepository repShows = new Trakt_ShowRepository(); Trakt_EpisodeRepository repEpisodes = new Trakt_EpisodeRepository(); Trakt_FriendRepository repFriends = new Trakt_FriendRepository(); foreach (TraktTVUser friend in friends) { Trakt_Friend traktFriend = repFriends.GetByUsername(friend.username); if (traktFriend == null) { traktFriend = new Trakt_Friend(); traktFriend.LastAvatarUpdate = DateTime.Now; } traktFriend.Populate(friend); repFriends.Save(traktFriend); if (!string.IsNullOrEmpty(traktFriend.FullImagePath)) { bool fileExists = File.Exists(traktFriend.FullImagePath); TimeSpan ts = DateTime.Now - traktFriend.LastAvatarUpdate; if (!fileExists || ts.TotalHours > 8) { traktFriend.LastAvatarUpdate = DateTime.Now; CommandRequest_DownloadImage cmd = new CommandRequest_DownloadImage(traktFriend.Trakt_FriendID, JMMImageType.Trakt_Friend, true); cmd.Save(); } } foreach (TraktTVWatched wtch in friend.watched) { if (wtch.episode != null && wtch.show != null) { Trakt_Show show = repShows.GetByTraktID(wtch.show.TraktID); if (show == null) { show = new Trakt_Show(); show.Populate(wtch.show); repShows.Save(show); } Trakt_Episode episode = repEpisodes.GetByShowIDSeasonAndEpisode(show.Trakt_ShowID, int.Parse(wtch.episode.season), int.Parse(wtch.episode.number)); if (episode == null) episode = new Trakt_Episode(); episode.Populate(wtch.episode, show.Trakt_ShowID); repEpisodes.Save(episode); if (!string.IsNullOrEmpty(episode.FullImagePath)) { bool fileExists = File.Exists(episode.FullImagePath); if (!fileExists) { CommandRequest_DownloadImage cmd = new CommandRequest_DownloadImage(episode.Trakt_EpisodeID, JMMImageType.Trakt_Episode, false); cmd.Save(); } } } } } //Contract_Trakt_Friend fr = friends[0].ToContract(); } catch (Exception ex) { logger.ErrorException("Error in TraktTVHelper.GetFriends: " + ex.ToString(), ex); return friends; } return friends; }
public static TraktTV_ActivitySummary GetActivityFriends(bool shoutsOnly) { TraktTV_ActivitySummary summ = null; try { if (string.IsNullOrEmpty(ServerSettings.Trakt_Username) || string.IsNullOrEmpty(ServerSettings.Trakt_Password)) return null; string url = string.Format(Constants.TraktTvURLs.URLGetActivityFriends, Constants.TraktTvURLs.APIKey); if (shoutsOnly) url = string.Format(Constants.TraktTvURLs.URLGetActivityFriendsShoutsOnly, Constants.TraktTvURLs.APIKey); logger.Trace("GetActivityFriends: {0}", url); TraktTVPost_GetFriends cmdFriends = new TraktTVPost_GetFriends(); cmdFriends.Init(); string json = JSONHelper.Serialize<TraktTVPost_GetFriends>(cmdFriends); // TraktTVPost_GetFriends is really just an auth method string jsonResponse = SendData(url, json); if (jsonResponse.Trim().Length == 0) return null; summ = JSONHelper.Deserialize<TraktTV_ActivitySummary>(jsonResponse); if (summ == null) return null; // save any trakt data that we don't have already Trakt_ShowRepository repShows = new Trakt_ShowRepository(); Trakt_EpisodeRepository repEpisodes = new Trakt_EpisodeRepository(); Trakt_FriendRepository repFriends = new Trakt_FriendRepository(); foreach (TraktTV_Activity act in summ.activity) { if (act.user == null) continue; TraktTV_UserActivity friend = act.user; Trakt_Friend traktFriend = repFriends.GetByUsername(friend.username); if (traktFriend == null) { traktFriend = new Trakt_Friend(); traktFriend.LastAvatarUpdate = DateTime.Now; } traktFriend.Populate(friend); repFriends.Save(traktFriend); if (!string.IsNullOrEmpty(traktFriend.FullImagePath)) { bool fileExists = File.Exists(traktFriend.FullImagePath); TimeSpan ts = DateTime.Now - traktFriend.LastAvatarUpdate; if (!fileExists || ts.TotalHours > 8) { traktFriend.LastAvatarUpdate = DateTime.Now; CommandRequest_DownloadImage cmd = new CommandRequest_DownloadImage(traktFriend.Trakt_FriendID, JMMImageType.Trakt_Friend, true); cmd.Save(); } } if (act.episode != null && act.show != null) { Trakt_Show show = repShows.GetByTraktID(act.show.TraktID); if (show == null) { show = new Trakt_Show(); show.Populate(act.show); repShows.Save(show); } Trakt_Episode episode = repEpisodes.GetByShowIDSeasonAndEpisode(show.Trakt_ShowID, int.Parse(act.episode.season), int.Parse(act.episode.number)); if (episode == null) episode = new Trakt_Episode(); episode.Populate(act.episode, show.Trakt_ShowID); repEpisodes.Save(episode); if (!string.IsNullOrEmpty(episode.FullImagePath)) { bool fileExists = File.Exists(episode.FullImagePath); if (!fileExists) { CommandRequest_DownloadImage cmd = new CommandRequest_DownloadImage(episode.Trakt_EpisodeID, JMMImageType.Trakt_Episode, false); cmd.Save(); } } } // a shout on just the show if (act.episode == null && act.show != null) { Trakt_Show show = repShows.GetByTraktID(act.show.TraktID); if (show == null) { show = new Trakt_Show(); show.Populate(act.show); repShows.Save(show); } } } } catch (Exception ex) { logger.ErrorException("Error in TraktTVHelper.GetActivityFriends: " + ex.ToString(), ex); } return summ; }
public static List<TraktTV_ShoutGet> GetShowShouts(ISession session, int animeID) { List<TraktTV_ShoutGet> shouts = null; try { if (string.IsNullOrEmpty(ServerSettings.Trakt_Username) || string.IsNullOrEmpty(ServerSettings.Trakt_Password)) return null; CrossRef_AniDB_TraktRepository repXrefTrakt = new CrossRef_AniDB_TraktRepository(); CrossRef_AniDB_Trakt traktXRef = repXrefTrakt.GetByAnimeID(session, animeID); if (traktXRef == null) return null; string url = string.Format(Constants.TraktTvURLs.URLGetShowShouts, Constants.TraktTvURLs.APIKey, traktXRef.TraktID); logger.Trace("GetShowShouts: {0}", url); // Search for a series string json = Utils.DownloadWebPage(url); if (json.Trim().Length == 0) return new List<TraktTV_ShoutGet>(); shouts = JSONHelper.Deserialize<List<TraktTV_ShoutGet>>(json); Trakt_FriendRepository repFriends = new Trakt_FriendRepository(); foreach (TraktTV_ShoutGet shout in shouts) { Trakt_Friend traktFriend = repFriends.GetByUsername(session, shout.user.username); if (traktFriend == null) { traktFriend = new Trakt_Friend(); traktFriend.LastAvatarUpdate = DateTime.Now; } traktFriend.Populate(shout.user); repFriends.Save(traktFriend); if (!string.IsNullOrEmpty(traktFriend.FullImagePath)) { bool fileExists = File.Exists(traktFriend.FullImagePath); TimeSpan ts = DateTime.Now - traktFriend.LastAvatarUpdate; if (!fileExists || ts.TotalHours > 8) { traktFriend.LastAvatarUpdate = DateTime.Now; CommandRequest_DownloadImage cmd = new CommandRequest_DownloadImage(traktFriend.Trakt_FriendID, JMMImageType.Trakt_Friend, true); cmd.Save(session); } } } } catch (Exception ex) { logger.ErrorException("Error in TraktTVHelper.GetShowShouts: " + ex.ToString(), ex); } return shouts; }