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); }
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); }
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++; }
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 }); }
/// <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); }
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); }
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();
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++; } }