private bool CallShowAPI(WebTVEpisodeBasic episode, TraktWatchStatus state, int?progress) { WebTVShowDetailed show = MediaService.GetTVShowDetailedById(episode.PID, episode.ShowId); WebTVSeasonDetailed season = MediaService.GetTVSeasonDetailedById(episode.PID, episode.SeasonId); var data = new TraktEpisodeScrobbleData() { MediaCenter = TraktConfig.MediaCenter, MediaCenterBuildDate = TraktConfig.MediaCenterDate, MediaCenterVersion = TraktConfig.MediaCenterVersion, PluginVersion = TraktConfig.PluginVersion, Password = Configuration["passwordHash"], UserName = Configuration["username"], Duration = show.Runtime.ToString(), Episode = episode.EpisodeNumber.ToString(), Season = season.SeasonNumber.ToString(), Title = show.Title, Year = show.Year.ToString(), }; if (progress != null) { data.Progress = progress.Value.ToString(); } if (show.ExternalId.Count(x => x.Site == "IMDB") > 0) { data.IMDBID = show.ExternalId.First(x => x.Site == "IMDB").Id; } if (show.ExternalId.Count(x => x.Site == "TVDB") > 0) { data.TVDBID = show.ExternalId.First(x => x.Site == "TVDB").Id; } if (data.IMDBID == null && data.TVDBID == null) { Log.Info("Trakt: IMDB and TVDB unknown of episode {0}, not sending", episode.Title); return(false); } try { Log.Debug("Trakt: calling service for show {0} (episode {1}) with progress {2} and state {3}", data.Title, episode.Title, data.Progress, state.ToString()); TraktResponse response = TraktAPI.ScrobbleEpisode(data, state); if (response.Status != "success") { Log.Warn("Trakt: failed to update watch status of episode '{0}' ({1}): {2}", episode.Title, episode.Id, response.Error); return(false); } Log.Trace("Trakt: finished service call"); return(true); } catch (Exception ex) { Log.Warn("Trakt: failed to call service", ex); return(false); } }
public bool WatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode, int progress) { Log.Debug("WSD: Watching episode {0} ({1}%)", episode.Title, progress); return true; }
public bool WatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode, int progress) { // Follw.it doesn't require to send a status each X minutes or something return true; }
public bool WatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode, int progress) { Log.Debug("WSD: Watching episode {0} ({1}%)", episode.Title, progress); return(true); }
public bool FinishEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { return(CallFollwitEpisode(episode, FollwitWatchStatus.Watched)); }
public TVEpisodeViewModel(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { Episode = episode; _show = show; _season = season; }
public TVSeasonViewModel(WebTVShowDetailed show, WebTVSeasonDetailed season, IEnumerable <WebTVEpisodeDetailed> episodes) { Show = show; Season = season; Episodes = episodes; }
public bool StartWatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { Log.Debug("WSD: Start watching episode {0}, season {1}, show {2}", episode.Title, episode.SeasonId, episode.ShowId); return true; }
public bool FinishEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { return CallShowAPI(show, season, episode, TraktWatchStatus.Scrobble, 100); }
private bool CallShowAPI(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeBasic episode, TraktWatchStatus state, int? progress) { var data = new TraktEpisodeScrobbleData() { MediaCenter = TraktConfig.MediaCenter, MediaCenterBuildDate = TraktConfig.MediaCenterDate, MediaCenterVersion = TraktConfig.MediaCenterVersion, PluginVersion = TraktConfig.PluginVersion, Password = Configuration["passwordHash"], UserName = Configuration["username"], Duration = show.Runtime.ToString(), Episode = episode.EpisodeNumber.ToString(), Season = season.SeasonNumber.ToString(), Title = show.Title, Year = show.Year.ToString(), }; if (progress != null) data.Progress = progress.Value.ToString(); if (show.ExternalId.Count(x => x.Site == "IMDB") > 0) data.IMDBID = show.ExternalId.First(x => x.Site == "IMDB").Id; if (show.ExternalId.Count(x => x.Site == "TVDB") > 0) data.TVDBID = show.ExternalId.First(x => x.Site == "TVDB").Id; if (data.IMDBID == null && data.TVDBID == null) { Log.Info("Trakt: IMDB and TVDB unknown of episode {0}, not sending", episode.Title); return false; } try { Log.Debug("Trakt: calling service for show {0} (episode {1}) with progress {2} and state {3}", data.Title, episode.Title, data.Progress, state.ToString()); TraktResponse response = TraktAPI.ScrobbleEpisode(data, state); if (response.Status != "success") { Log.Warn("Trakt: failed to update watch status of episode '{0}' ({1}): {2}", episode.Title, episode.Id, response.Error); return false; } Log.Trace("Trakt: finished service call"); return true; } catch (Exception ex) { Log.Warn("Trakt: failed to call service", ex); return false; } }
public bool WatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode, int progress) { return CallShowAPI(show, season, episode, TraktWatchStatus.Watching, progress); }
public override List <VideoInfo> GetVideos(Category category) { RssLink cat = category as RssLink; List <VideoInfo> returnList = new List <VideoInfo>(); if (cat.Url.Equals("movies")) { WebBackendProvider provider = (WebBackendProvider)cat.Other; if (provider != null) { WebMovieBasic[] movies = mediaAccess.GetMoviesBasic(provider.Id, true, null, MpExtendedService.WebSortField.Title, true, MpExtendedService.WebSortOrder.Asc, true); foreach (WebMovieBasic m in movies) { VideoInfo info = new VideoInfo(); info.VideoUrl = m.Id; if (m.Artwork.Any(a => a.Type == MpExtendedService.WebFileType.Cover)) { info.Thumb = String.Format("http://{0}:{1}/MPExtended/StreamingService/stream/GetArtworkResized?id={2}&provider={3}&artworktype=4&offset=0&mediatype=0&maxWidth=160&maxHeight=160", mServer, mPort, m.Id, m.PID); } info.Other = m; info.Title = m.Title; info.Length = new DateTime(TimeSpan.FromMinutes(m.Runtime).Ticks).ToString("HH:mm:ss"); info.Airdate = m.Year.ToString(); info.Description = (m.Genres != null && m.Genres.Length > 0 ? string.Format("\n{0}: {1}", Translation.Instance.Genre, string.Join(", ", m.Genres)) : "") + (m.Actors != null && m.Actors.Length > 0 ? string.Format("\n{0}: {1}", Translation.Instance.Actors, string.Join(", ", m.Actors.Take(4).Select(a => a.Title).ToArray())) : ""); returnList.Add(info); } } } else if (cat.Url.Equals("tvseason")) { WebTVSeasonDetailed season = (WebTVSeasonDetailed)cat.Other; if (season != null) { WebTVEpisodeBasic[] episodes = mediaAccess.GetTVEpisodesBasicForSeason(season.PID, true, season.Id, MpExtendedService.WebSortField.TVEpisodeNumber, true, MpExtendedService.WebSortOrder.Asc, true); foreach (WebTVEpisodeBasic e in episodes) { VideoInfo info = new VideoInfo(); info.VideoUrl = e.Id; if (e.Artwork.Any(a => a.Type == MpExtendedService.WebFileType.Banner)) { info.Thumb = String.Format("http://{0}:{1}/MPExtended/StreamingService/stream/GetArtworkResized?id={2}&provider={3}&artworktype=2&offset=0&mediatype=3&maxWidth=160&maxHeight=160", mServer, mPort, e.Id, e.PID); } if (e.RatingSpecified && e.Rating > 0.0f) { info.Description = string.Format("Rating: {0}", e.Rating); } info.Other = e; info.Title = string.Format("s{0:D2}e{1:D2} - {2}", e.SeasonNumber, e.EpisodeNumber, e.Title); info.Airdate = e.FirstAired.ToString("d", OnlineVideoSettings.Instance.Locale); returnList.Add(info); } } } else if (cat.Url.Equals("tvgroup")) { WebChannelGroup group = (WebChannelGroup)cat.Other; if (group != null) { WebChannelDetailed[] channels = tvAccess.GetChannelsDetailed(group.Id, true, MpExtendedTvService.WebSortField.Channel, true, MpExtendedTvService.WebSortOrder.Asc, true); foreach (var c in channels) { VideoInfo info = new VideoInfo(); info.VideoUrl = c.Id.ToString(); info.Other = c; info.Title = string.Format("{0}{1}", c.Title, c.CurrentProgram != null ? " --- " + c.CurrentProgram.Title : ""); if (c.CurrentProgram != null) { info.Airdate = string.Format("{0:t} - {1:t}", c.CurrentProgram.StartTime, c.CurrentProgram.EndTime); info.Description = c.CurrentProgram.Description; info.Length = (c.CurrentProgram.DurationInMinutes * 60).ToString(); } info.Thumb = String.Format("http://{0}:{1}/MPExtended/StreamingService/stream/GetArtworkResized?id={2}&artworktype={3}&offset=0&mediatype={4}&maxWidth=160&maxHeight=160", mServer, mPort, c.Id, (int)MpExtendedStreamingService.WebFileType.Logo, (int)MpExtendedStreamingService.WebMediaType.TV); returnList.Add(info); } } } return(returnList); }
public bool CancelWatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { Log.Debug("WSD: Canceled episode {0}", episode.Title); return(true); }
public bool FinishEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { Log.Debug("WSD: Finished episode {0}", episode.Title); return(true); }
public bool CancelWatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { Log.Debug("WSD: Canceled episode {0}", episode.Title); return true; }
public bool StartWatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { return CallShowAPI(show, season, episode, TraktWatchStatus.Watching, 0); }
public bool FinishEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { Log.Debug("WSD: Finished episode {0}", episode.Title); return true; }
public bool WatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode, int progress) { return(CallShowAPI(show, season, episode, TraktWatchStatus.Watching, progress)); }
public TVEpisodeViewModel(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { Show = show; Season = season; Episode = episode; }
public bool FinishEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { return(CallShowAPI(show, season, episode, TraktWatchStatus.Scrobble, 100)); }
public TVSeasonViewModel(WebTVShowDetailed show, WebTVSeasonDetailed season, IEnumerable<WebTVEpisodeDetailed> episodes) { Show = show; Season = season; Episodes = episodes; }
public bool CancelWatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { return(CallShowAPI(show, season, episode, TraktWatchStatus.CancelWatching, null)); }
public bool WatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode, int progress) { // Follw.it doesn't require to send a status each X minutes or something return(true); }
public bool StartWatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { return CallFollwitEpisode(episode, FollwitWatchStatus.Watching); }
public bool CancelWatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { return(CallFollwitEpisode(episode, FollwitWatchStatus.CancelWatching)); }
public bool StartWatchingEpisode(WebTVShowDetailed show, WebTVSeasonDetailed season, WebTVEpisodeDetailed episode) { Log.Debug("WSD: Start watching episode {0}, season {1}, show {2}", episode.Title, episode.SeasonId, episode.ShowId); return(true); }