} // 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()
} // 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()
} // openVeraChanel() /** * Открываем закладку "видео". */ public static bool openVideosOfChanel() { YouTube.waitUntilPageIsLoaded(); Stencil videosOfChanel = new Stencil("VideosOfChanel-DE.png"); //videosOfChanel.setColorDelta(0); return(videosOfChanel.mouseClick()); } // openVideosOfChanel()
} // 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()
} // 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()