private bool CallFollwitMovie(WebMovieDetailed movie, FollwitWatchStatus state) { try { // create movie if (movie.ExternalId.Count(x => x.Site == "IMDB") == 0) { Log.Info("Follwit: IMDB id of movie {0} unknown, not sending", movie.Title); return(false); } // and send it var fm = new FollwitMovie() { Username = Configuration["username"], Password = Configuration["passwordHash"], IMDBId = movie.ExternalId.First(x => x.Site == "IMDB").Id }; var ret = FollwitAPI.UpdateMovieState(fm, state); if (ret.Response != "success") { Log.Warn("Follwit: failed to update watch status of movie '{0}' ({1})", movie.Title, movie.Id); return(false); } } catch (Exception ex) { Log.Warn("Follwit: failed to update movie watch status", ex); return(false); } return(true); }
internal static WebMovieDetailed MovieDetailed(MediaItem item) { WebMovieBasic webMovieBasic = MovieBasic(item); MediaItemAspect movieAspect = MediaItemAspectExtensions.GetAspect(item, (MediaItemAspectMetadata)MovieAspect.Metadata); MediaItemAspect videoAspect = MediaItemAspectExtensions.GetAspect(item, (MediaItemAspectMetadata)VideoAspect.Metadata); IList <MultipleMediaItemAspect> audioAspects; List <string> languages = new List <string>(); if (MediaItemAspect.TryGetAspects(item.Aspects, VideoAudioStreamAspect.Metadata, out audioAspects)) { foreach (MultipleMediaItemAspect audioAspect in audioAspects) { string language = audioAspect.GetAttributeValue <string>(VideoAudioStreamAspect.ATTR_AUDIOLANGUAGE); if (!string.IsNullOrEmpty(language) && !languages.Contains(language)) { languages.Add(language); } } } WebMovieDetailed webMovieDetailed = new WebMovieDetailed { IsProtected = webMovieBasic.IsProtected, Type = webMovieBasic.Type, Watched = webMovieBasic.Watched, Runtime = webMovieBasic.Runtime, DateAdded = webMovieBasic.DateAdded, Id = webMovieBasic.Id, PID = webMovieBasic.PID, Title = webMovieBasic.Title, ExternalId = webMovieBasic.ExternalId, Rating = webMovieBasic.Rating, Year = webMovieBasic.Year, Actors = webMovieBasic.Actors, Genres = webMovieBasic.Genres, Path = webMovieBasic.Path, Artwork = webMovieBasic.Artwork, Tagline = movieAspect.GetAttributeValue <string>(MovieAspect.ATTR_TAGLINE) ?? string.Empty, Summary = videoAspect.GetAttributeValue <string>(VideoAspect.ATTR_STORYPLOT) ?? string.Empty, Language = string.Join(", ", languages.ToArray()) }; IEnumerable <string> aspectWriters = videoAspect.GetCollectionAttribute <string>(VideoAspect.ATTR_WRITERS); if (aspectWriters != null) { webMovieDetailed.Writers = aspectWriters.Distinct().ToList(); } IEnumerable <string> aspectDirectors = videoAspect.GetCollectionAttribute <string>(VideoAspect.ATTR_DIRECTORS); if (aspectDirectors != null) { webMovieDetailed.Directors = aspectDirectors.Distinct().ToList(); } return(webMovieDetailed); }
private void cmdInitMovie_Click(object sender, EventArgs e) { mIdentifier = "Test_" + new Random().Next(0, 1000000).ToString(); WebMovieDetailed movie = mMovies[cbMovies.SelectedIndex]; mName = movie.Title; Log("Init Stream with movie " + movie.Title); bool success = mWebStreamClient.InitStream(WebMediaType.Movie, movieProvider, movie.Id.ToString(), 0, CLIENT_NAME, mIdentifier, null); Log("Success = " + success); LoadMediaInfo(mWebStreamClient.GetMediaInfo(WebMediaType.Movie, movieProvider, movie.Id.ToString(), 0)); }
private WebMovieDetailed NodeToMovieDetailed(XElement item) { WebMovieDetailed movie = NodeToMovie <WebMovieDetailed>(item); if (movie == null) { return(null); } if (item.Attribute("Description") != null) { movie.Summary = item.Attribute("Description").Value; } // director if (item.Attribute("Director") != null) { movie.Directors.Add(item.Attribute("Director").Value); } // tagline if (item.Element("CustomFields") != null && item.Element("CustomFields").Attribute("TagLine") != null) { movie.Tagline = item.Element("CustomFields").Attribute("TagLine").Value.Trim(); } // writers if (item.Element("CustomFields") != null && item.Element("CustomFields").Attribute("Writer") != null) { // I've no clue what the things in parentheses mean here, but let's remove them string writer = item.Element("CustomFields").Attribute("Writer").Value; movie.Writers = item.Element("CustomFields") .Attribute("Writer").Value .Split(',', '|') .Select(x => stripActorName.Replace(x, "$1").Trim()) .ToList(); } return(movie); }
public bool CancelWatchingMovie(WebMovieDetailed movie) { return(CallFollwitMovie(movie, FollwitWatchStatus.CancelWatching)); }
public bool FinishMovie(WebMovieDetailed movie) { return(CallFollwitMovie(movie, FollwitWatchStatus.Watched)); }
public bool WatchingMovie(WebMovieDetailed movie, int progress) { // Follw.it doesn't require to send a status each X minutes or something return(true); }
public bool CancelWatchingMovie(WebMovieDetailed movie) { return(CallMovieAPI(movie, TraktWatchStatus.CancelWatching, null)); }
public bool WatchingMovie(WebMovieDetailed movie, int progress) { return(CallMovieAPI(movie, TraktWatchStatus.Watching, progress)); }
public bool StartWatchingMovie(WebMovieDetailed movie) { return(CallMovieAPI(movie, TraktWatchStatus.Watching, 0)); }
public bool CancelWatchingMovie(WebMovieDetailed movie) { Log.Debug("WSD: Canceled movie {0}", movie.Title); return(true); }
public bool FinishMovie(WebMovieDetailed movie) { Log.Debug("WSD: Finished movie {0}", movie.Title); return(true); }
public bool WatchingMovie(WebMovieDetailed movie, int progress) { Log.Debug("WSD: Watching movie {0} ({1}%)", movie.Title, progress); return(true); }
public bool StartWatchingMovie(WebMovieDetailed movie) { Log.Debug("WSD: Start watching movie {0}", movie.Title); return(true); }
public MovieViewModel(WebMovieDetailed movie) { Movie = movie; }
public bool FinishMovie(WebMovieDetailed movie) { return(CallMovieAPI(movie, TraktWatchStatus.Scrobble, 100)); }
public MovieViewModel(WebMovieDetailed movie) { Movie = movie; Id = Movie.Id; }