Exemplo n.º 1
0
        public async Task <ChannelStored> GetAndUpdateChannel(string id)
        {
            var c = await Channels.Get(id);

            var lastUpdated   = c?.Latest?.Stats?.Updated;
            var needsNewStats = lastUpdated == null || Expired(lastUpdated.Value, RCfg.RefreshChannel);

            if (!needsNewStats)
            {
                return(c);
            }

            var channelData = await Yt.ChannelData(id);

            if (c == null)
            {
                c = new ChannelStored {
                    Latest = channelData
                }
            }
            ;
            else
            {
                c.SetLatest(channelData);
            }

            await Channels.Set(c);

            return(c);
        }
Exemplo n.º 2
0
        public async Task <RecommendedVideoStored> GetAndUpdateRecommendedVideos(ChannelVideoListItem v)
        {
            var rv = await RecommendedVideosCollection.Get(v.VideoId);

            var age         = RecommendedRefreshAge(v);
            var needsUpdate = rv == null || Expired(rv.Updated, age);

            if (!needsUpdate)
            {
                return(rv);
            }

            if (rv == null)
            {
                rv = new RecommendedVideoStored {
                    VideoId = v.VideoId, VideoTitle = v.VideoTitle, Updated = DateTime.UtcNow
                }
            }
            ;

            var created = await Yt.GetRelatedVideos(v.VideoId);

            rv.Recommended.Add(new RecommendedVideos {
                Updated = DateTime.UtcNow, Top = RCfg.Related, Recommended = created
            });
            rv.Updated = DateTime.UtcNow;
            await RecommendedVideosCollection.Set(rv);

            return(rv);
        }
Exemplo n.º 3
0
        public void Print(int n, double t)
        {
            Console.Write($"{n,3} |{t:0.00} |");

            Console.Write($"(");
            for (int i = 0; i < Vector.Dimension; i++)
            {
                Yn.v[i] = Yt[i](t);
                Console.Write($"{Yn.v[i]:0.00}| ");
            }
            Console.Write($")| ");

            Console.Write($"(");
            for (int i = 0; i < Vector.Dimension; i++)
            {
                Console.Write($"{Un.v[i]:0.00}| ");
            }
            Console.Write($")| ");
            double dy = new Vector(Yn - Un).Norm;

            Console.Write($"{dy:0.00}\n");
            Uprev = Un;
            n++;
        }
Exemplo n.º 4
0
        public HorizontalThrowModelingResultViewModel(
            Tuple <List <double>, List <Tuple <double, double> >, List <Tuple <double, double> > > numericValues)
        {
            List <double> ts = numericValues.Item1;
            List <Tuple <double, double> > xy = numericValues.Item2, vs = numericValues.Item3;

            for (int i = 0; i < ts.Count; ++i)
            {
                Yt.Add(new ObservablePoint(ts[i], xy[i].Item2));
                Xt.Add(new ObservablePoint(ts[i], xy[i].Item1));
                Yx.Add(new ObservablePoint(xy[i].Item1, xy[i].Item2));
                Vxt.Add(new ObservablePoint(ts[i], vs[i].Item1));
                Vyt.Add(new ObservablePoint(ts[i], vs[i].Item2));
            }
            Collection.Add(new LineSeries()
            {
                Values = Yx
            });
        }
Exemplo n.º 5
0
        /// <summary>
        ///   Gets the video with that ID. Caches in S3 (including historical information) with this
        /// </summary>
        public async Task <(VideoStored Video, UpdateStatus Status)> GetAndUpdateVideo(string id)
        {
            var v = await Videos.Get(id);

            if (v != null && v.Latest.Updated == default(DateTime))
            {
                v.Latest.Updated = v.Latest.Stats.Updated;
            }

            var status        = v == null ? UpdateStatus.Created : UpdateStatus.Updated;
            var needsNewStats = v == null || Expired(v.Latest.Updated, VideoRefreshAge(v.Latest));

            if (!needsNewStats)
            {
                return(v, status);
            }

            var videoData = await Yt.VideoData(id);

            if (videoData != null)
            {
                if (v == null)
                {
                    v = new VideoStored {
                        Latest = videoData
                    }
                }
                ;
                else
                {
                    v.SetLatest(videoData);
                }
                v.Latest.Updated = DateTime.UtcNow;
            }

            if (v != null)
            {
                await Videos.Set(v);
            }

            return(v, status);
        }
Exemplo n.º 6
0
        public async Task <ChannelVideosStored> GetAndUpdateChannelVideos(ChannelData c)
        {
            var cv = await ChannelVideosCollection.Get(c.Id);

            // fix updated if missing. Remove once all records have been updated
            var mostRecent = cv?.Vids.OrderByDescending(v => v.Updated).FirstOrDefault();

            if (cv != null && mostRecent != null && cv.Updated == default(DateTime))
            {
                cv.Updated = mostRecent.Updated;
            }

            var needsUpdate = cv == null || Expired(cv.Updated, RCfg.RefreshChannelVideos) ||
                              cv.From != RCfg.From;         // when from is chaged, update all videos

            if (!needsUpdate)
            {
                return(cv);
            }

            if (cv == null)
            {
                cv = new ChannelVideosStored {
                    ChannelId = c.Id, ChannelTitle = c.Title, Updated = DateTime.UtcNow
                }
            }
            ;
            else
            {
                cv.Updated = DateTime.UtcNow;
            }

            var queryForm = cv.From != RCfg.From ? RCfg.From : mostRecent?.PublishedAt ?? RCfg.From;
            var created   = await Yt.VideosInChannel(c, queryForm, RCfg.To);

            cv.Vids.AddRange(created);
            cv.From = RCfg.From;
            await ChannelVideosCollection.Set(cv);

            return(cv);
        }
Exemplo n.º 7
0
        public async Task <RecommendedVideoStored> GetAndUpdateRecommendedVideos(ChannelVideoListItem v)
        {
            var rv = await RecommendedVideosCollection.Get(v.VideoId);

            if (Expired(v.PublishedAt, RCfg.VideoDead))
            {
                return(rv);
            }

            //var mostRecent = rv?.Recommended.OrderByDescending(r => r.Updated).FirstOrDefault();
            var needsUpdate = rv == null || Expired(rv.Updated, RCfg.RefreshRelatedVideos);

            if (!needsUpdate)
            {
                return(rv);
            }

            if (rv == null)
            {
                rv = new RecommendedVideoStored {
                    VideoId = v.VideoId, VideoTitle = v.VideoTitle, Updated = DateTime.UtcNow
                }
            }
            ;

            var created = await Yt.GetRelatedVideos(v.VideoId);

            rv.Recommended.Add(new RecommendedVideos {
                Updated = DateTime.UtcNow, Top = RCfg.Related, Recommended = created
            });
            rv.Updated = DateTime.UtcNow;
            await RecommendedVideosCollection.Set(rv);

            return(rv);
        }

        YoutubeClient ytScaper = new YoutubeClient();
Exemplo n.º 8
0
        public void Eiler()
        {
            Console.Write($"n tn yn* un ||Yn-Un*||\n");

            Console.Write($"{1,3} |{t0:0.00} |");

            Console.Write($"(");
            for (int i = 0; i < Vector.Dimension; i++)
            {
                Y0.v[i] = Yt[i](0);
                Console.Write($"{Y0.v[i]:0.00}| ");
            }
            Console.Write($")| ");

            Console.Write($"(");
            for (int i = 0; i < Vector.Dimension; i++)
            {
                Console.Write($"{U0.v[i]:0.00}| ");
            }
            Console.Write($")| ");
            double dy = new Vector(Y0 - U0).Norm;

            Console.Write($"{dy:0.00}\n");


            //вывод нулевой шапки

            Console.Write($"{2,3} |{h:0.00} |");

            Console.Write($"(");
            for (int i = 0; i < Vector.Dimension; i++)
            {
                Yn.v[i] = Yt[i](h);
                Console.Write($"{Yn.v[i]:0.00}| ");
            }
            Console.Write($")| ");

            Console.Write($"(");
            for (int i = 0; i < Vector.Dimension; i++)
            {
                Console.Write($"{Un.v[i]:0.00}| ");
            }
            Console.Write($")| ");
            dy = new Vector(Yn - Un).Norm;
            Console.Write($"{dy:0.00}\n");

            //вывод 1й шапки

            int n = 2;

            for (double t = t0 + 2 * h; t <= tmax || Math.Abs(t - tmax) / t <= 1e-7; t = t + h)
            {
                Un = Uprev + F(t - h, Uprev) * h;
                //Console.Write($"{n,3} |{t:0.00} |");

                //Console.Write($"(");
                //for (int i = 0; i < Vector.Dimension; i++)
                //{
                //    Yn.v[i] = Yt[i](t);
                //    Console.Write($"{Yn.v[i]:0.00}| ");
                //}
                //Console.Write($")| ");

                //Console.Write($"(");
                //for (int i = 0; i < Vector.Dimension; i++)
                //{
                //    Console.Write($"{Un.v[i]:0.00}| ");
                //}
                //Console.Write($")| ");
                //dy = new Vector(Yn - Un).Norm;
                //Console.Write($"{dy:0.00}\n");
                Print(n, t);
                Uprev = Un;
                n++;
            }
        }