/// <summary>Create an instance of a <see cref="TraktEpisode"/> subclass from an ID</summary> /// <typeparam name="T">A subclass of <see cref="TraktEpisode"/> to be created</typeparam> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">the episode ID type</param> /// <returns>See summary</returns> public static T FromId <T>(int episodeId, TraktNumericEpisodeIdType episodeIdType) where T : TraktEpisode { var ret = Activator.CreateInstance <T>(); ret.Ids = new TraktEpisodeIds(); switch (episodeIdType) { case TraktNumericEpisodeIdType.Trakt: ret.Ids.Trakt = episodeId; break; case TraktNumericEpisodeIdType.Tvdb: ret.Ids.Tvdb = episodeId; break; case TraktNumericEpisodeIdType.Tmdb: ret.Ids.Tmdb = episodeId; break; case TraktNumericEpisodeIdType.TvRage: ret.Ids.TvRage = episodeId; break; default: throw new ArgumentOutOfRangeException("episodeIdType"); } return(ret); }
/// <summary>Add an episode to the user's watchlist by ID</summary> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">The episode ID type</param> /// <returns>See summary</returns> public async Task <TraktAddResponse> AddToWatchlistByEpisodeIdAsync(int episodeId, TraktNumericEpisodeIdType episodeIdType) { return(await AddToWatchlistAsync(TraktEpisodeFactory.FromId(episodeId, episodeIdType))); }
/// <summary>Rate an episode by ID</summary> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">The episode ID type</param> /// <param name="rating">The rating</param> /// <param name="ratedAt">The UTC date when the rating was made</param> /// <returns>See summary</returns> public async Task <TraktAddResponse> AddRatingByEpisodeIdAsync(int episodeId, TraktNumericEpisodeIdType episodeIdType, TraktRating rating, DateTime?ratedAt = null) { var obj = TraktEpisodeFactory.FromId <TraktEpisodeWithRatingsMetadata>(episodeId, episodeIdType); obj.Rating = rating; obj.RatedAt = ratedAt; return(await AddRatingsAsync(obj)); }
/// <summary>Remove an episode from the user's watched history by ID including all watches, scrobbles, and checkins</summary> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">The episode ID type</param> /// <returns>See summary</returns> public async Task <TraktRemoveResponse> MarkUnwatchedByEpisodeIdAsync(int episodeId, TraktNumericEpisodeIdType episodeIdType) { return(await MarkUnwatchedAsync(TraktEpisodeFactory.FromId(episodeId, episodeIdType))); }
/// <summary>Remove a rating for an episode by ID</summary> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">The episode ID type</param> /// <returns>See summary</returns> public async Task <TraktRemoveResponse> RemoveRatingByEpisodeIdAsync(int episodeId, TraktNumericEpisodeIdType episodeIdType) { return(await RemoveRatingAsync(TraktEpisodeFactory.FromId(episodeId, episodeIdType))); }
/// <summary>Remove one or more items from a custom list</summary> /// <param name="listId">The list ID</param> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">The episode ID type</param> /// <returns>See summary</returns> public async Task <TraktRemoveResponse> RemoveFromListByEpisodeIdAsync(string listId, int episodeId, TraktNumericEpisodeIdType episodeIdType) { return(await RemoveFromListAsync(listId, TraktEpisodeFactory.FromId(episodeId, episodeIdType))); }
/// <summary>Create an collection of <see cref="TraktEpisode"/> subclass instances from a collecion of IDs</summary> /// <typeparam name="T">A subclass of <see cref="TraktEpisode"/> to be created</typeparam> /// <param name="episodeIds">A collection of episode IDs</param> /// <param name="episodeIdType">the episode ID type</param> /// <returns>See summary</returns> public static IEnumerable <T> FromIds <T>(IEnumerable <int> episodeIds, TraktNumericEpisodeIdType episodeIdType) where T : TraktEpisode { return(episodeIds == null ? null : episodeIds.Select(episodeId => FromId <T>(episodeId, episodeIdType))); }
/// <summary>Create an instance of <see cref="TraktEpisode"/> from an ID</summary> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">the episode ID type</param> /// <returns>See summary</returns> public static TraktEpisode FromId(int episodeId, TraktNumericEpisodeIdType episodeIdType) { return(FromId <TraktEpisode>(episodeId, episodeIdType)); }
/// <summary>Add a new comment to an episode. If you add a review, it needs to be at least 200 words. Also make sure to allow and encourage spoilers to be indicated in your app.</summary> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">The episode ID type</param> /// <param name="comment">The comment</param> /// <param name="spoiler">Set to <c>true</c> if the comment contains spoilers</param> /// <param name="review">Set to <c>true</c> if the comment is a review</param> /// <returns>See summary</returns> public async Task <TraktComment> PostEpisodeCommentAsync(int episodeId, TraktNumericEpisodeIdType episodeIdType, string comment, bool?spoiler = null, bool?review = null) { return(await PostEpisodeCommentAsync(TraktEpisodeFactory.FromId(episodeId, episodeIdType), comment, spoiler, review)); }
/// <summary>Use this method when the video intially starts playing or is unpaused. This will remove any playback progress if it exists.</summary> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">The episode ID type</param> /// <param name="progress">The user's current playback progress through this item as a percentage between 0 and 100</param> /// <param name="appVersion">Version number of the app</param> /// <param name="appDate">Build date of the app</param> /// <param name="extended">Changes which properties are populated for standard media objects. By default, minimal data is returned. Change this if additional fields are required in the returned data.</param> /// <returns>See summary</returns> public async Task <TraktScrobbleEpisodeResponse> StartEpisodeAsync(int episodeId, TraktNumericEpisodeIdType episodeIdType, float progress, string appVersion = "", DateTime?appDate = null, TraktExtendedOption extended = TraktExtendedOption.Unspecified) { return(await StartEpisodeAsync(TraktEpisodeFactory.FromId(episodeId, episodeIdType), null, progress, appVersion, appDate, extended)); }
/// <summary>Check into an episode. This should be tied to a user action to manually indicate they are watching something. /// The item will display as watching on the site, then automatically switch to watched status once the duration has elapsed.</summary> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">The episode ID type</param> /// <param name="sharing">Control sharing to any connected social networks</param> /// <param name="message">Message used for sharing. If not sent, it will use the watching string in the user settings.</param> /// <param name="venueId">Foursquare venue ID</param> /// <param name="venueName">Foursquare venue name</param> /// <param name="appVersion">Version number of the app</param> /// <param name="appDate">Build date of the app</param> /// <param name="extended">Changes which properties are populated for standard media objects. By default, minimal data is returned. Change this if additional fields are required in the returned data.</param> /// <returns>See summary</returns> public async Task <TraktCheckinEpisodeResponse> CheckinEpisodeAsync(int episodeId, TraktNumericEpisodeIdType episodeIdType, TraktSharing sharing = null, string message = "", string venueId = "", string venueName = "", string appVersion = "", DateTime?appDate = null, TraktExtendedOption extended = TraktExtendedOption.Unspecified) { return(await CheckinEpisodeAsync(TraktEpisodeFactory.FromId(episodeId, episodeIdType), null, sharing, message, venueId, venueName, appVersion, appDate, extended)); }
/// <summary>Add an episode to the user's watched history by ID</summary> /// <param name="episodeId">The episode ID</param> /// <param name="episodeIdType">The episode ID type</param> /// <returns>See summary</returns> public async Task <TraktAddResponse> MarkWatchedByEpisodeIdAsync(int episodeId, TraktNumericEpisodeIdType episodeIdType) { return(await MarkWatchedAsync(TraktEpisodeFactory.FromId <TraktEpisodeWithWatchedMetadata>(episodeId, episodeIdType))); }
/// <summary>Add an episode to the user's collection by ID</summary> /// <param name="episodeId">The episode ID</param> /// <param name="showIdType">The show ID type</param> /// <returns>See summary</returns> public async Task <TraktAddResponse> AddToCollectionByEpisodeIdAsync(int episodeId, TraktNumericEpisodeIdType showIdType) { return(await AddToCollectionAsync(TraktEpisodeFactory.FromId <TraktEpisodeWithCollectionMetadata>(episodeId, showIdType))); }