示例#1
0
        } // openPrivateWindow()

        public bool openYouTube(YouTubeUser user)
        {
            if (YouTube.isYouTubePage())
            { // Мы уже на странице "Ютуба"
                //@TODO проверить залогинен ли пользователь
                return(this.loginYouTube(user));
            } // if()


            /* Когда окно открывается, адрес для ввода УРЛ активно
             * Stencil emptyUrl = new Stencil("mozilla-firefox-empty-url-de.png");
             *
             * emptyUrl.isFound();
             *
             * if (!emptyUrl.mouseClick())
             * { // Адресная строка была не пустой.
             *  Stencil httpUrl = new Stencil("mozilla-firefox-url-http.png");
             *  httpUrl.setColorDelta(10);
             *  httpUrl.mouseClick();
             * }
             */

            // Печатаем адрес ютуба, а заодно на всякий случай выходим из аккаунта.
            BotClass.printString("www.youtube.com/logout" + Environment.NewLine);

            this.waitUntilPageIsLoaded();

            // Тут будет хранится результат выполнений функций
            bool result = true;

            result = result && this.loginYouTube(user);

            return(result);
        } // openYouTube()
示例#2
0
        } // Form1_Load()

        /**
         * На кнопку нажали.
         */
        private void button1_Click(object sender, EventArgs e)
        {
            addNewLineToRichTextBox1("на кнопку нажали");

            // Считываем пользователей
            List <YouTubeUser> userList = this.readYouTubeUsersFromFile();

            // Считываем каналы
            List <YouTubeChannel> channelsList = this.readYouTubeChannelsFromFile();

            // Заходим на Ютуб
            WebBrowser firefox = new WebBrowser();

            foreach (YouTubeUser aUser in userList)
            {
                // Активируем фаерфокс
                Windows7Class.mouseClickOverFirefoxIcon();

                if (firefox.openPrivateWindow())
                { // Если удалось открыть новое окно
                    // Проверяем язык виндоувса под фаерфоксом
                    Windows7Class.switchToGermanLanguage();

                    // Заходим и логинимся на ютуб
                    firefox.openYouTube(aUser);

                    foreach (YouTubeChannel aChannel in channelsList)
                    {
                        /*
                         * YouTube.openVeraChanel();
                         * YouTube.openVideosOfChanel();
                         */
                        YouTube.openChanel(aChannel.getUrl());

                        // счётчик просмотренных видео
                        int videoCount   = 0;
                        int channelLimit = aChannel.getLimit();

                        while ((channelLimit == 0 || channelLimit > videoCount) && // не достигли границы просмотра
                               YouTube.openNewVideo())                             // или пока новые видео находятся
                        {
                            YouTube.makeLike();
                            YouTube.deactivateAutoplay();
                            YouTube.waitUntilVideoSeen();

                            firefox.historyBack();
                            firefox.refreshPage();

                            videoCount++;
                        } // while
                    }     // foreach

                    firefox.closeBrowserWindow();
                } // if
            }     // foreach
        }         // button1_Click()
示例#3
0
        } // openVeraChanel()

        /**
         * Открываем закладку "видео".
         */
        public static bool openVideosOfChanel()
        {
            YouTube.waitUntilPageIsLoaded();

            Stencil videosOfChanel = new Stencil("VideosOfChanel-DE.png");

            //videosOfChanel.setColorDelta(0);

            return(videosOfChanel.mouseClick());
        } // openVideosOfChanel()
示例#4
0
        } // openVideosOfChanel()

        /**
         * По двоеточии во времени ищет непросмотренные видео.
         */
        public static Rectangle searchNewVideos()
        {
            YouTube.waitUntilPageIsLoaded();

            // Признак непросмотренного видео
            Stencil videoTimeColon = new Stencil("YouTube-Video-TimeColon.png");

            videoTimeColon.setColorDelta(37);

            // Признак конца страницы
            Stencil videoListScrolledToDown = new Stencil("YouTube-VideoList-ScrolledToDown.png");
            //videoListScrolledToDown.setColorDelta(0);

            // Кнопка показать больше видео
            Stencil videoListShowMore = new Stencil("YouTube-VideoList-ShowMore.png");

            //videoListShowMore.setColorDelta(0);

            // Ищем непросмотренное видео, пока не дойдём до конца страницы
            while (!(
                       videoTimeColon.isFound() ||
                       videoListScrolledToDown.isFound()))
            {
                BotClass.keyDown(Keys.PageDown);
                BotClass.keyUp(Keys.PageDown);

                // Не забываем сбросить старые результаты поиска
                videoTimeColon.resetRec();
                videoListScrolledToDown.resetRec();
                videoListShowMore.resetRec();

                // Ждём две секунды, чтобы экран прокрутился вниз.
                System.Threading.Thread.Sleep(2000);

                //а так же не должно быть кнопки "показать больше"
                if (videoListShowMore.mouseClick())
                {
                    // Когда нажали на кнопку "показать больше", сдвигаем курсор в сторону
                    BotClass.moveCursor(1, 1);
                    System.Threading.Thread.Sleep(500);
                }
            } // while

            return(videoTimeColon.getRec());
        } // searchNewVideos()
示例#5
0
        }     // openChanel()

        /**
         * Открывает верын канал.
         *
         * @return bool true - если находится изображения канала, в противном случае false
         */
        public static bool openVeraChanel()
        {
            YouTube.waitUntilPageIsLoaded();
            Stencil emptyChanelIcon = new Stencil("YouTube-EmptyChanel-Icon.png");

            do
            { // Ждём
                System.Threading.Thread.Sleep(500);

                // надо сбрасывать старые находки
                emptyChanelIcon.resetRec();
            } while (emptyChanelIcon.isFound());

            Stencil veraChanel = new Stencil("VeraChanel-Icon.png");

            //veraChanel.setColorDelta(0);
            return(veraChanel.mouseClick());
        } // openVeraChanel()
示例#6
0
        } // makeLike()

        /**
         * Открываем непросмотренные видео.
         */
        public static bool openNewVideo()
        {
            // Нашли двоеточие во времени у непросмотренного видео.
            Rectangle rec = YouTube.searchNewVideos();

            if (!rec.IsEmpty)
            { // Нашли ещё непросмотренное видео
                // Размер картинки видео в списке 196*110
                // Размер картинки видео над полоской времени 196*94
                // Сдвигаем найденый прямоугольник на 100 и 80 пиксель, и растягиваем прямоугольник до 75 и 70 пикселей.
                rec.Offset(-100, -80);
                rec.Size = new Size(75, 70);

                // Двигаем курсор мышки и кликаем
                BotClass.moveCursor(rec);
                BotClass.mouseClick();

                return(true);
            } // if

            return(false);
        } // openNewVideo()