Exemplo n.º 1
0
        public async Task <SitePage> GetPageForTwitting()
        {
            string currentSpecialDay = _SpecialDayName;

            //В этом случае начинает работать схема - "выбрать только пост, а потом уточнить если есть у него гифки, то случайно решить то ли изображение из поста, то ли гифка"
            long pagesCountLong = await _Pages.CountDocumentsAsync(x => !x.Blocked && x.SpecialDay == currentSpecialDay);

            int pagesCount = (int)pagesCountLong;               //это не супер красиво, но на самом деле маловероятно что у нас будет так много данных в базе

            if (pagesCount > _MaxPagesForRandomSelection)
            {
                pagesCount = _MaxPagesForRandomSelection;
            }

            int indForPage = _RandomSelector.GetRandomIndex(pagesCount);

            //выбрать одну случайную страницу
            var pagesRnd = await(from page in _Pages.AsQueryable() where (!page.Blocked && page.SpecialDay == currentSpecialDay) orderby page.TweetDate.Value select page).Skip(indForPage).Take(1).ToListAsync();

            if (pagesRnd.Count > 0)
            {
                var resultPage = pagesRnd[0];
                return(resultPage);
            }

            return(null);
        }
Exemplo n.º 2
0
        public async Task <SitePage> GetPageForTwitting()
        {
            string currentSpecialDay = _SpecialDayName;

            var pagesNotTwitted = (from page in _Pages.AsQueryable() where (!page.Blocked && page.TweetDate == null && page.SpecialDay == currentSpecialDay) select page).Take(_TopQueryCount);

            if (pagesNotTwitted != null)
            {
                var list = await pagesNotTwitted.ToListAsync();

                if (list.Count > 0)
                {
                    int      ind        = _RandomSelector.GetRandomIndex(list.Count);
                    SitePage resultPage = list[ind];
                    return(resultPage);
                }
            }

            return(null);
        }
Exemplo n.º 3
0
        string _DetectHalloween(DateTime now)
        {
            var halloweenDate = new DateTime(now.Year, 11, 01, 0, 0, 0);                //сам хеллоуин - вечер 31.10, следовательно анализ идет от 1.11
            //считаем что период когда можно твитить про Хеллоуин - за день до
            var diff = halloweenDate - now;

            var hoursDiffHalloween = Math.Abs(diff.TotalHours);

            //за 20 часов до наступления Хелловина начинаем случайно выброс постов
            if (hoursDiffHalloween < 20 && halloweenDate > now)
            {
                //для хеллоуина за n часов до полуночи можно начинать выброс постов, за 2 часа один случайно
                var ind = _RandomSelector.GetRandomIndex(2);
                if (ind == 1)
                {
                    return(kawaii.twitter.db.SpecialDays.HALLOWEEN);
                }
            }

            return(null);
        }
Exemplo n.º 4
0
        public async Task <AnimatedImage[]> GetAnimatedImagesForPage(string pageURL)
        {
            //получаем папку поста из его url
            string postFolder = _FolderFromURL.GetFolderFromURL(pageURL);

            //получаем префикс блоба, и по нему будем искать уже выборку
            string blobPrefix = _Formatter.GetBlobNamePrefix(postFolder);

            var gifsNotTwitted = (from gif in _AnimatedImages.AsQueryable() where (gif.BlobName.StartsWith(blobPrefix) && gif.TweetDate == null) select gif).Take(_TopQueryCount);

            var list = await gifsNotTwitted.ToListAsync();

            if (list.Count > 0)
            {
                int             ind    = _RandomSelector.GetRandomIndex(list.Count);
                AnimatedImage   img    = list[ind];
                AnimatedImage[] result = new AnimatedImage[] { img };
                return(result);
            }

            return(null);
        }