コード例 #1
0
        public Task <Movie> CreateAsync(Movie movie)
        {
            _movies.Add(movie);
            var movieEvent = new MovieEvent
            {
                Name        = $"Add Movie",
                MovieId     = movie.Id,
                TimeStamp   = DateTime.Now,
                MovieRating = movie.MovieRating
            };

            movieEventService.AddEvent(movieEvent);
            return(Task.FromResult(movie));
        }
コード例 #2
0
        public Task <Movie> CreateAsync(Movie movie)
        {
            if (movie == null)
            {
                throw new ArgumentNullException("Create movie is null.");
            }
            movie.Id = _movies.Max(a => a.Id) + 1;
            _movies.Add(movie);
            var movieEvent = new MovieEvent
            {
                Name        = $"Add Movie",
                MovieId     = movie.Id,
                TimeStamp   = DateTime.Now,
                MovieRating = movie.MovieRating
            };

            _movieEventService.AddEvent(movieEvent);
            return(Task.FromResult(movie));;
        }
コード例 #3
0
        public Task <Movie> Add(Movie movie)
        {
            if (movie?.Id == null || _movies.Any(x => x.Id == movie.Id))
            {
                throw new ArgumentException($"提供的 {nameof(movie)} 无效。");
            }
            _movies.Add(movie);

            var movieEvent = new MovieEvent
            {
                Name        = "Add Movie",
                MovieId     = movie.Id,
                TimeStamp   = DateTimeOffset.Now,
                MovieRating = movie.MovieRating
            };

            _eventService.AddEvent(movieEvent);

            return(Task.FromResult(movie));
        }
 public void Record2(MovieEvent @event)
 {
 }
コード例 #5
0
 public void Handles(MovieEvent @event)
 {
 }
コード例 #6
0
 public MovieEvent AddEvent(MovieEvent newEvent)
 {
     AllEvents.Push(newEvent);
     _eventStream.OnNext(newEvent);
     return(newEvent);
 }
コード例 #7
0
 public MovieEvent AddEvent(MovieEvent e)
 {
     AllEvents.Push(e);
     _eventStream.OnNext(e);
     return(e);
 }
コード例 #8
0
ファイル: Index.cshtml.cs プロジェクト: mukeba/FxMovieAlert
        public void OnGet(int?m            = null, int?typeMask = null, decimal?minrating = null, bool?notyetrated = null, Cert cert = Cert.all,
                          int?movieeventid = null, string setimdbid = null, int?maxdays   = null)
        {
            string userId = ClaimChecker.UserId(User.Identity);

            var now = DateTime.Now;

            // Get the connection string
            string connectionString     = configuration.GetConnectionString("FxMoviesDb");
            string connectionStringImdb = configuration.GetConnectionString("ImdbDb");

            AdsInterval          = configuration.GetValue("AdsInterval", AdsInterval);
            FilterMaxDaysDefault = configuration.GetValue("DefaultMaxDays", FilterMaxDaysDefault);
            FilterMaxDays        = FilterMaxDaysDefault;
            FilterTypeMask       = FilterTypeMaskDefault;

            EditImdbLinks = ClaimChecker.Has(User.Identity, ClaimEditImdbLinks);

            if (typeMask.HasValue)
            {
                FilterTypeMask = typeMask.Value;
            }

            if (minrating.HasValue)
            {
                FilterMinRating = minrating.Value;
            }

            // Only allow setting more days when authenticated
            if (maxdays.HasValue && User.Identity.IsAuthenticated)
            {
                FilterMaxDays = maxdays.Value;
            }

            FilterNotYetRated = notyetrated;
            FilterCert        = cert & Cert.all2;
            if (FilterCert == Cert.all2)
            {
                FilterCert = Cert.all;
            }

            using (var db = FxMoviesDbContextFactory.Create(connectionString))
            {
                if (EditImdbLinks && movieeventid.HasValue && !string.IsNullOrEmpty(setimdbid))
                {
                    bool overwrite = false;
                    var  match     = Regex.Match(setimdbid, @"(tt\d+)");
                    if (match.Success)
                    {
                        setimdbid = match.Groups[0].Value;
                        overwrite = true;
                    }
                    else if (setimdbid.Equals("remove", StringComparison.InvariantCultureIgnoreCase))
                    {
                        setimdbid = null;
                        overwrite = true;
                    }

                    if (overwrite)
                    {
                        var movieEvent = db.MovieEvents.Find(movieeventid.Value);
                        if (movieEvent != null)
                        {
                            if (setimdbid != null)
                            {
                                using (var dbImdb = ImdbDbContextFactory.Create(connectionStringImdb))
                                {
                                    var imdbMovie = dbImdb.Movies.Find(setimdbid);
                                    if (imdbMovie != null)
                                    {
                                        movieEvent.ImdbRating = imdbMovie.Rating;
                                        movieEvent.ImdbVotes  = imdbMovie.Votes;
                                    }
                                }
                            }

                            movieEvent.ImdbId = setimdbid;
                            db.SaveChanges();
                        }
                    }
                }

                if (userId != null)
                {
                    var user = db.Users.Find(userId);
                    if (user != null)
                    {
                        RefreshRequestTime     = user.RefreshRequestTime;
                        LastRefreshRatingsTime = user.LastRefreshRatingsTime;
                        LastRefreshSuccess     = user.LastRefreshSuccess;
                        user.Usages++;
                        user.LastUsageTime = DateTime.UtcNow;
                        ImdbUserId         = user.ImdbUserId;
                        db.SaveChanges();
                    }
                }

                if (m.HasValue)
                {
                    if (m.Value == -2)
                    {
                        throw new Exception("Sentry test exception");
                    }
                    else
                    {
                        MovieEvent = db.MovieEvents.Find(m.Value);
                        if (MovieEvent != null)
                        {
                            int days = (int)(MovieEvent.StartTime.Date - DateTime.Now.Date).TotalDays;
                            if (FilterMaxDays < days)
                            {
                                FilterMaxDays = days;
                            }
                        }
                    }
                }

                Count               = db.MovieEvents.Count();
                CountTypeFilm       = db.MovieEvents.Where(me => me.Type == 1).Count();
                CountTypeShort      = db.MovieEvents.Where(me => me.Type == 2).Count();
                CountTypeSerie      = db.MovieEvents.Where(me => me.Type == 3).Count();
                CountMinRating5     = db.MovieEvents.Where(me => me.ImdbRating >= 50).Count();
                CountMinRating6     = db.MovieEvents.Where(me => me.ImdbRating >= 60).Count();
                CountMinRating7     = db.MovieEvents.Where(me => me.ImdbRating >= 70).Count();
                CountMinRating8     = db.MovieEvents.Where(me => me.ImdbRating >= 80).Count();
                CountMinRating9     = db.MovieEvents.Where(me => me.ImdbRating >= 90).Count();
                CountNotOnImdb      = db.MovieEvents.Where(me => string.IsNullOrEmpty(me.ImdbId)).Count();
                CountNotRatedOnImdb = db.MovieEvents.Where(me => me.ImdbRating == null).Count();
                CountCertNone       = db.MovieEvents.Where(me => string.IsNullOrEmpty(me.Certification)).Count();
                CountCertG          = db.MovieEvents.Where(me => me.Certification == "US:G").Count();
                CountCertPG         = db.MovieEvents.Where(me => me.Certification == "US:PG").Count();
                CountCertPG13       = db.MovieEvents.Where(me => me.Certification == "US:PG-13").Count();
                CountCertR          = db.MovieEvents.Where(me => me.Certification == "US:R").Count();
                CountCertNC17       = db.MovieEvents.Where(me => me.Certification == "US:NC-17").Count();
                CountCertOther      = Count - CountCertNone - CountCertG - CountCertPG - CountCertPG13 - CountCertR - CountCertNC17;
                CountRated          = db.MovieEvents.Where(
                    me => db.UserRatings.Where(ur => ur.UserId == userId).Any(ur => ur.ImdbMovieId == me.ImdbId)).Count();
                CountNotYetRated = Count - CountRated;
                Count3days       = db.MovieEvents.Where(me => me.StartTime.Date <= now.Date.AddDays(3)).Count();
                Count5days       = db.MovieEvents.Where(me => me.StartTime.Date <= now.Date.AddDays(5)).Count();
                Count8days       = db.MovieEvents.Where(me => me.StartTime.Date <= now.Date.AddDays(8)).Count();

                Records = (
                    from me in db.MovieEvents.Include(me => me.Channel)
                    join ur in db.UserRatings.Where(ur => ur.UserId == userId) on me.ImdbId equals ur.ImdbMovieId into urGroup
                    from ur in urGroup.DefaultIfEmpty(null)
                    join uw in db.UserWatchLists.Where(ur => ur.UserId == userId) on me.ImdbId equals uw.ImdbMovieId into uwGroup
                    from uw in uwGroup.DefaultIfEmpty(null)
                    where
                    (FilterMaxDays == 0 || me.StartTime.Date <= now.Date.AddDays(FilterMaxDays))
                    &&
                    (me.EndTime >= now && me.StartTime >= now.AddMinutes(-30))
                    &&
                    (
                        ((FilterTypeMask & 1) == 1 && me.Type == 1) ||
                        ((FilterTypeMask & 2) == 2 && me.Type == 2) ||
                        ((FilterTypeMask & 4) == 4 && me.Type == 3)
                    )
                    &&
                    (!FilterMinRating.HasValue ||
                     (FilterMinRating.Value == NO_IMDB_ID && string.IsNullOrEmpty(me.ImdbId)) ||
                     (FilterMinRating.Value == NO_IMDB_RATING && me.ImdbRating == null) ||
                     (FilterMinRating.Value >= 0.0m && (me.ImdbRating >= FilterMinRating.Value * 10)))
                    &&
                    (!FilterNotYetRated.HasValue || FilterNotYetRated.Value == (ur == null))
                    &&
                    (FilterCert == Cert.all || (ParseCertification(me.Certification) & FilterCert) != 0)
                    select new Record()
                {
                    MovieEvent = me, UserRating = ur, UserWatchListItem = uw
                }
                    ).ToList();

                // MovieEvents = db.MovieEvents.Include(m => m.Channel)
                //     .Where(m => !MinRating.HasValue || m.ImdbRating >= MinRating.Value * 10)
                //     .ToList();
            }
        }
コード例 #9
0
 private void handler(object sender, MovieEvent e)
 {
     switch (e.EventState) {
         case MovieEvent.State.NewMovie:
             btnStart.Enabled = true;
             btnStop.Enabled = true;
             btnPrev.Enabled = true;
             btnNext.Enabled = true;
             btnStart.Text = "暂停";
             break;
         case MovieEvent.State.Paused:
             btnStart.Enabled = true;
             btnStop.Enabled = true;
             btnPrev.Enabled = true;
             btnNext.Enabled = true;
             btnStart.Text = "开始";
             break;
         case MovieEvent.State.Playing:
             btnStart.Enabled = true;
             btnStop.Enabled = true;
             btnPrev.Enabled = true;
             btnNext.Enabled = true;
             btnStart.Text = "暂停";
             trackBar.Value = movieInfo.currentFrame;
             break;
         case MovieEvent.State.PrevNext:
             btnStart.Enabled = true;
             btnStop.Enabled = true;
             btnPrev.Enabled = true;
             btnNext.Enabled = true;
             trackBar.Value = movieInfo.currentFrame;
             break;
         case MovieEvent.State.Started:
             btnStart.Enabled = true;
             btnStop.Enabled = true;
             btnPrev.Enabled = true;
             btnNext.Enabled = true;
             btnStart.Text = "暂停";
             break;
         case MovieEvent.State.Stopped:
             btnStart.Enabled = true;
             btnStop.Enabled = false;
             btnPrev.Enabled = false;
             btnNext.Enabled = false;
             btnStart.Text = "开始";
             trackBar.Value = 0;
             break;
         case MovieEvent.State.Scroll:
             btnStart.Enabled = true;
             btnStop.Enabled = true;
             btnPrev.Enabled = true;
             btnNext.Enabled = true;
             break;
         default: break;
     }
 }
コード例 #10
0
 public MovieEvent AddEvent(MovieEvent movieEvent)
 {
     AllEvents.Push(movieEvent);
     _eventStream.OnNext(movieEvent);
     return(movieEvent);
 }
コード例 #11
0
ファイル: HumoGrabber.cs プロジェクト: mukeba/FxMovieAlert
        private static IList<MovieEvent> MovieAdapter(Humo humo)
        {
            if (humo == null || humo.channels == null)
            {
                return new List<MovieEvent>();
            }

            var movies = new List<MovieEvent>();
            foreach (var humoChannel in humo.channels)
            {
                var channel = new Channel()
                {
                    Code = humoChannel.seoKey,
                    Name = humoChannel.name,
                    LogoS = humoChannel.channelLogoUrl,
                };

                foreach (var broadcast in humoChannel.broadcasts)
                {
                    string description = broadcast.synopsis;
                    int? year = null;
                    // int year = broadcast.program.year;

                    // description = description.Replace($" ({year})", "");

                    // if (broadcast.program.episodenumber != 0 && broadcast.program.episodeseason != 0)
                    // {
                    //     description += $" (SERIE: begin van seizoen {broadcast.program.episodeseason})";
                    // }

                    string genre = broadcast.genre?.Trim() ?? "";
                    if (genre != "")
                        genre += " - ";
                    genre += string.Join(' ', broadcast.subGenres);

                    int type;
                    if (broadcast.IsMovie())
                    {
                        if (broadcast.IsShort())
                            type = 2; // short
                        else
                            type = 1; // movie
                    }
                    else
                    {
                        type = 3; // serie
                    }

                    string opinion = null;
                    // string opinion = broadcast.program.opinion;
                    // if (!string.IsNullOrEmpty(broadcast.program.appreciation) 
                    //     && int.TryParse(broadcast.program.appreciation, out int appreciation)
                    //     && appreciation > 0 && appreciation <= 50)
                    // {
                    //     string stars = new string('★', appreciation / 10);
                    //     if (appreciation % 10 > 0)
                    //         stars += '½';
                    //     if (string.IsNullOrEmpty(opinion))
                    //         opinion = stars;
                    //     else
                    //         opinion = stars + " " + opinion;
                    // }
                    if (broadcast.rating.HasValue)
                    {
                        int rating = broadcast.rating.Value;
                        if (rating > 0 && rating <= 100)
                        {
                            string stars = new string('★', rating / 20);
                            if (rating % 20 > 0)
                                stars += '½';
                            opinion = stars;
                        }
                    }

                    var movie = new MovieEvent()
                    {
                        Id = broadcast.uuid.GetHashCode(),
                        Channel = channel,
                        Title = broadcast.title,
                        Year = year,
                        StartTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(broadcast.from / 1000).ToLocalTime(),
                        EndTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(broadcast.to / 1000).ToLocalTime(),
                        Duration = broadcast.duration / 60,
                        PosterS = broadcast.imageUrl,
                        PosterM = broadcast.imageUrl,
                        Content = broadcast.synopsis,
                        Opinion = opinion,
                        Genre = genre,
                        Type = type,
                    };

                    movies.Add(movie);
                }
            }

            return movies;
        }
コード例 #12
0
        private void handler(object sender, MovieEvent e)
        {
            switch (e.EventState)
            {
            case MovieEvent.State.NewMovie:
                btnStart.Enabled = true;
                btnStop.Enabled  = true;
                btnPrev.Enabled  = true;
                btnNext.Enabled  = true;
                btnStart.Text    = "暂停";
                break;

            case MovieEvent.State.Paused:
                btnStart.Enabled = true;
                btnStop.Enabled  = true;
                btnPrev.Enabled  = true;
                btnNext.Enabled  = true;
                btnStart.Text    = "开始";
                break;

            case MovieEvent.State.Playing:
                btnStart.Enabled = true;
                btnStop.Enabled  = true;
                btnPrev.Enabled  = true;
                btnNext.Enabled  = true;
                btnStart.Text    = "暂停";
                trackBar.Value   = movieInfo.currentFrame;
                break;

            case MovieEvent.State.PrevNext:
                btnStart.Enabled = true;
                btnStop.Enabled  = true;
                btnPrev.Enabled  = true;
                btnNext.Enabled  = true;
                trackBar.Value   = movieInfo.currentFrame;
                break;

            case MovieEvent.State.Started:
                btnStart.Enabled = true;
                btnStop.Enabled  = true;
                btnPrev.Enabled  = true;
                btnNext.Enabled  = true;
                btnStart.Text    = "暂停";
                break;

            case MovieEvent.State.Stopped:
                btnStart.Enabled = true;
                btnStop.Enabled  = false;
                btnPrev.Enabled  = false;
                btnNext.Enabled  = false;
                btnStart.Text    = "开始";
                trackBar.Value   = 0;
                break;

            case MovieEvent.State.Scroll:
                btnStart.Enabled = true;
                btnStop.Enabled  = true;
                btnPrev.Enabled  = true;
                btnNext.Enabled  = true;
                break;

            default: break;
            }
        }