Пример #1
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);
        }
Пример #2
0
 TimeSpan VideoRefreshAge(ChannelVideoListItem v)
 {
     if (Expired(v.PublishedAt, RCfg.VideoDead))
     {
         return(TimeSpan.MaxValue);
     }
     return(Expired(v.PublishedAt, RCfg.VideoOld) ? RCfg.RefreshOldVideos : RCfg.RefreshYoungVideos);
 }
Пример #3
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();
Пример #4
0
 TimeSpan RecommendedRefreshAge(ChannelVideoListItem v) =>
 Expired(v.PublishedAt, RCfg.VideoDead)
 ? TimeSpan.MaxValue
 : Expired(v.PublishedAt, RCfg.VideoOld)
   ? RCfg.RefreshOldRecommendedVideos
   : RCfg.RefreshYoungRecommendedVideos;
Пример #5
0
 public bool VideoDead(ChannelVideoListItem v) => Expired(v.PublishedAt, RCfg.VideoDead);