예제 #1
0
        public void Fill(VideoForUser videoForUser)
        {
            long languageId =
                new LanguagesQuery(LanguageShortName.Unknown, LanguageShortName.Unknown).GetByShortName(
                    LanguageShortName.En).Id;

            string title    = videoForUser.Title;
            string htmlCode = videoForUser.HtmlCode;

            byte[] image = GetImage(title, htmlCode);

            var          videosQuery = new VideosQuery(languageId);
            VideoForUser result      = videosQuery.GetOrCreate(VideoType.Clip, videoForUser, image, null);

            if (result != null)
            {
                Console.WriteLine("Видео \"{0}\" успешно добавлено", title);
            }
            else
            {
                Console.WriteLine("Не удалось добавить видео \"{0}\"!!!", title);
            }
        }
예제 #2
0
        public void Process()
        {
            long languageId =
                new LanguagesQuery(LanguageShortName.Unknown, LanguageShortName.Unknown).GetByShortName(
                    _shortName).Id;

            const int MAX_DOMAIN_TO_PROCESS = 10;

            List <Tuple <string, List <string> > > linksByDomains = _linksHelper.Analyze();

            foreach (var tuple in linksByDomains.Take(MAX_DOMAIN_TO_PROCESS))
            {
                IVideoDataGetter videoDataGetter = GetVideoDataGetterByDomain(tuple.Item1);
                if (videoDataGetter == null)
                {
                    continue;
                }

                int           failCount    = 0;
                int           successCount = 0;
                List <string> links        = tuple.Item2;
                foreach (string link in links)
                {
                    string encodedLink = FileHelper.EncodeFileName(link);

                    IVideoData videoData = GetVideoDataFromCache(videoDataGetter, encodedLink);
                    if (videoData == null)
                    {
                        //для этой ссылки данных нет в кэше - получить их от Getter'а
                        videoData = videoDataGetter.GetVideoData(link);
                    }

                    if (videoData == null)
                    {
                        Console.WriteLine("Для ссылки {0} НЕ удалось получить данные!", link);
                        failCount++;
                        continue;
                    }

                    SaveVideoDataToCache(videoDataGetter, encodedLink, videoData);

                    if (videoDataGetter.IsInvalid(videoData, _shortName))
                    {
                        Console.WriteLine("Для ссылки {0} данные некорректны!", link);
                        failCount++;
                        continue;
                    }

                    var videosQuery  = new VideosQuery(languageId);
                    var videoForUser = new VideoForUser(videoData.Title, videoData.HtmlCode);
                    //TODO: поиск дубликатов видео

                    //TODO: сохранять дополнительную информацию в БД
                    VideoForUser result = videosQuery.GetOrCreate(VideoType.Movie, videoForUser, videoData.ThumnailImage, videoData.Rating);
                    if (result != null)
                    {
                        successCount++;
                    }
                    else
                    {
                        Console.WriteLine("Не удалось добавить видео \"{0}\"!!!", videoData.Title);
                    }
                }
                Console.WriteLine("Обработан домен {0} из {1} ссылок успешно сохранены {2}, не удалось сохранить {3}",
                                  tuple.Item1, links.Count, successCount, failCount);
            }
        }