Пример #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);
        }
Пример #2
0
        async Task <IReadOnlyCollection <VideoStored> > ChannelVideoStats(ChannelStored c)
        {
            var channelVideos = await Yt.ChannelVideosCollection.Get(c.ChannelId);

            var channelVideoStats = await channelVideos.Vids.BlockTransform(v => Yt.Videos.Get(v.VideoId));

            return(channelVideoStats);
        }