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); }
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); }