} // 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()
} // imageSearch() /** * Ищет маленькую картинку в большой картинке. И кликает по ней мышкой. * @param Bitmap smallImage - искомая картинка * @param int colorDelta - допустимая погрешность в цвете * @param Rectangle rec - прямоугольник, где искать маленькую картинку * @return Rectangle - координаты найденой картинки (Если картинка не найдена, то пустой прямоугольник) */ public static Rectangle imageSearchAndMouseClick(Bitmap smallImage, int colorDelta = 0, Rectangle searchRec = new Rectangle()) { Rectangle rec = BotClass.imageSearchAndMouseMove(smallImage, colorDelta, searchRec); if (!rec.IsEmpty) { // Картинка была найдена, курсор сдвинут // Ждём System.Threading.Thread.Sleep(2000); // Кликаем BotClass.mouseClick(); } // if return(rec); } // imageSearchAndMouseClick()
} // loadSmallImage() /** * Ищет шаблон и кликает по нему мышкой. */ public Boolean mouseClick() { if (!this.rec.IsEmpty) { // Картинка уже была найдена // Двигаем курсор на заранее найденый прямоугольник BotClass.moveCursor(this.rec); // И кликаем BotClass.mouseClick(); return(true); } // if BotClass.create_screen_shot(); Rectangle rec = BotClass.imageSearchAndMouseClick(this.image, this.delta); return(this.rectangleToBool(rec)); } // mouseClick()
} // 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()