Guest User

Untitled

a guest
Feb 24th, 2015
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.43 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Disliker
  3. // @namespace odnoklassniki
  4. // @description azaza
  5. // @include http://www.ok.ru/online
  6. // @include http://ok.ru/online
  7. // @version 1.3.4
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. var reloadWaitTime = 2000,
  12. popupWaitTime = 1000,
  13. photoLoadWaitTime = 2500,
  14. closeWaitTime = 1000,
  15. fetchWaitTime = 3000,
  16.  
  17. minAge = "14", // >= 14
  18. maxAge = "99"; // <= 99
  19.  
  20. document.getElementsByClass = function(tagName, className) { // Вспомогательная функция, позволяющая получить все элементы с определенным тэгом и классом
  21. var itemsfound = new Array,
  22. elems = document.getElementsByTagName(tagName),
  23. i;
  24. for(i = 0; i < elems.length; ++i) {
  25. if(elems[i].className === className) {
  26. itemsfound.push(elems[i]);
  27. }
  28. }
  29. return itemsfound;
  30. }
  31.  
  32. function processPhoto (photos) {
  33. var evObj;
  34. if (photos.length === 0) { // Если длина буфера фото - ноль, значит, они кончились. Возвращаемся в начало скрипта.
  35. setTimeout(doScript, reloadWaitTime);
  36. return;
  37. }
  38.  
  39. evObj = document.createEvent('MouseEvents'); // Для вывода всплывающего меню симулируем ивент прохождения курсора мыши по фото
  40. evObj.initEvent('mouseover', true, false);
  41. photos[0].children[0].children[0].dispatchEvent(evObj);
  42.  
  43. setTimeout(function () { // Ждем, пока меню всплывет и
  44. var photoLink = document.getElementsByClass("a", "gwt-shortcutMenu-iconlink-item")[0].children[0]; // Получаем ссылку на увеличенное фото и
  45. photoLink.click(); // Жмем ее
  46. }, popupWaitTime);
  47.  
  48. setTimeout(function () { // Ждем, пока откроется увеличенное фото
  49. var dislikeBlock = document.getElementsByClass("li", "mark mark__last")[0], // Получаем блок с дизлайком
  50. dislikeButton,
  51. closeButton = document.getElementsByClass("div", "ic ic_i_close")[0], // Получаем кнопку закрытия увеличенной фотографии
  52. usersOnlineButton = document.getElementsByClass("a", "sm fo4c_h_live-link fs-15")[0]; // Получаем кнопку возврата к пользователям онлайн
  53.  
  54. photos.splice (0,1); // Вне зависимости от результата, первая фотка в буфере нам уже не нужна
  55.  
  56. if (dislikeBlock) { // Если блок с дизлайком найден, то
  57. dislikeButton = dislikeBlock.children[0]; // Находим собственно кнопку
  58. dislikeButton.click(); // Жмем
  59. closeButton.click(); // И закрываем увеличенное изображение
  60. setTimeout (function () {
  61. processPhoto (photos); // После чего переходим к следующему фото
  62. }, closeWaitTime);
  63. } else {
  64. window.location.href = "http://ok.ru/online";
  65. // Если же нет, то возвращаемся к странице с пользователями и перезапускаемся
  66. setTimeout(doScript, reloadWaitTime);
  67. }
  68. }, photoLoadWaitTime);
  69. }
  70.  
  71. function fetchPhotos () {
  72. var photos = document.getElementsByClass("a", "photoWrapper"), // Находим все фото
  73. usersOnlineButton = document.getElementsByClass("a", "sm fo4c_h_live-link fs-15")[0]; // Находим кнопку возврата на страницу "Пользователи онлайн"
  74. if (photos.length === 0) { // Если фото не нашлись, то возвращаемся к пользователям онлайн и повторяем
  75. usersOnlineButton.click();
  76. setTimeout(doScript, reloadWaitTime);
  77. } else { // Если нашлись, запускаем обработку фото
  78. processPhoto (photos);
  79. }
  80. }
  81.  
  82. function doScript() {
  83. var ageSelect = document.getElementsByClass("select", "isl isl__res isl__2num"), // Находим селекторы возраста
  84. minAgeSelect = ageSelect[0],
  85. maxAgeSelect = ageSelect[1],
  86. checkbox;
  87. // Устанавливаем возрасты
  88. minAgeSelect.value = minAge;
  89. maxAgeSelect.value = maxAge;
  90.  
  91. checkbox = document.getElementById ("field_female"); // Выбираем чекбокс "женщины" и кликаем два раза.
  92. checkbox.click (); // Это нужно потому, что после изменения значени селекторов
  93. checkbox.click (); // программно перезагрузски фото не происходит
  94. setTimeout(fetchPhotos, fetchWaitTime); // Запускаем загрузку фото
  95. }
  96.  
  97. doScript();
Add Comment
Please, Sign In to add comment