public static TorrentMovieSource CreateInvalidTorrentMovieSource(TorrentEntry torrentEntry) { return new TorrentMovieSource { TorrentMovie = TorrentMovieFactory.CreateTorrentMovie(torrentEntry), State = TorrentMovieState.Invalid }; }
public static TorrentMovieSource CreateIncompleteTorrentMovieSource(TorrentEntry torrentEntry, TorrentImdbEntry torrentImdbEntry) { return new TorrentMovieSource { TorrentMovie = TorrentMovieFactory.CreateTorrentMovie(torrentEntry, torrentImdbEntry), State = TorrentMovieState.Incomplete }; }
public static TorrentMovie CreateTorrentMovie(TorrentEntry torrentEntry) { return new TorrentMovie { TorrentLink = torrentEntry.TorrentUri, Movie = torrentEntry.TorrentPage.Split('/').LastOrDefault(), Quality = torrentEntry.Quality, LastUpdated = DateTime.Now }; }
public static TorrentMovie CreateTorrentMovie(TorrentEntry torrentEntry, TorrentImdbEntry torrentImdbEntry) { return new TorrentMovie { Id = torrentImdbEntry.ImdbId, TorrentLink = torrentEntry.TorrentUri, ImdbLink = torrentImdbEntry.ImdbLink, Quality = torrentEntry.Quality, LastUpdated = DateTime.Now }; }
private IObservable<TorrentMovieSource> GetMovie(TorrentEntry torrent, CancellationToken cancellationToken) { return Observable.FromAsync(async () => { var imdbEntry = _torrentImdbEntryRepository.GetById(torrent.TorrentUri) ?? await TorrentImdbEntryExtractor.ExtractImdbEntry(torrent.TorrentUri, cancellationToken); if (!imdbEntry.IsValid) { return TorrentMovieSourceFactory.CreateInvalidTorrentMovieSource(torrent); } _torrentImdbEntryRepository.Add(imdbEntry); var cacheMovie = _torrentRepository.Get(imdbEntry.ImdbLink); if (cacheMovie != null) { Console.WriteLine($"[from cache] {cacheMovie.Movie} IMDB rating: {cacheMovie.Rating}"); return TorrentMovieSourceFactory.CreateCompleteTorrentMovieSource(cacheMovie); } return TorrentMovieSourceFactory.CreateIncompleteTorrentMovieSource(torrent, imdbEntry); }); }