} // isYouTubePage() /** * Ставит лайк у видео */ public static bool makeLike() { // Иконка "нравится" Stencil likeIcon = new Stencil("YouTube-Like-Icon.png"); likeIcon.setColorDelta(5); // Иконка "нравится" Stencil likedIcon = new Stencil("YouTube-Liked-Icon.png"); likedIcon.setColorDelta(5); //@TODO проверить есть ли у браузера вертикальный бегунок и в зависимости от этого работать дальше. // Счётчик сколько раз мы "прокрутим" экран браузера вниз. int counter = 0; // Пока не увидим символ лайка, "прокручиваем" экран браузера вниз и считаем эти "прокручивания". while (!likeIcon.mouseClick() && !likedIcon.isFound()) { counter++; BotClass.keyDown(Keys.PageDown); BotClass.keyUp(Keys.PageDown); // Не забываем сбросить старые результаты поиска likeIcon.resetRec(); // Ждём две секунды, чтобы экран прокрутился вниз. System.Threading.Thread.Sleep(2000); } // while // после нажатия на "лайк", появляется меню "поделится" и активным становится строчка с УРЛ System.Threading.Thread.Sleep(2000); // Сдвигаем курсор в сторону и кликаем по пустому полю. Rectangle likeIconRec = likeIcon.getRec(); likeIconRec.Offset(-50, 0); BotClass.moveCursor(likeIconRec); BotClass.mouseClick(); // Возвращаем экран обратно (не пойму почему, но не всегда срабатывает. Перекликнуть рядом с кнопкой? Пока лишний раз наверх крутим) for (int i = 0; i <= counter + 1; i++) { BotClass.keyDown(Keys.PageUp); BotClass.keyUp(Keys.PageUp); // Ждём, вдруг... System.Threading.Thread.Sleep(500); } // for return(true); } // makeLike()
} // refreshPage() /** * Проверяем загрузилась ли страница */ private void waitUntilPageIsLoaded() { // ждём, пока не пропадёт надпись "соединяемся" Stencil connecting = new Stencil("mozilla-firefox-connecting.png"); //connecting.setColorDelta(0); do { // Ждём System.Threading.Thread.Sleep(500); // сбрасываем старые находки connecting.resetRec(); } while (connecting.isFound()); } // waitUntilPageIsLoaded()
} // waitUntilPageIsLoaded() /** * Ждёт пока видео не просмотрится до конца */ public static bool waitUntilVideoSeen() { Stencil videoSeen = new Stencil("YouTube-Video-Seen.png"); //videoSeen.setColorDelta(0); do { // Ждём по 10 секунд System.Threading.Thread.Sleep(10000); // Не забываем сбросить результаты прошлого поиска. videoSeen.resetRec(); } while (!videoSeen.isFound()); return(true); } // waitUntilVideoSeen()
} // 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()
} // 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()