Greasy Fork 还支持 简体中文。

Remove unpopular meetup.com events

Remove unpopular events with less than 30 people attending. Change settings to run script at "document-start".

  1. // ==UserScript==
  2. // @name Remove unpopular meetup.com events
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Remove unpopular events with less than 30 people attending. Change settings to run script at "document-start".
  6. // @author You
  7. // @match http://www.meetup.com/find/events/*
  8. // @grant none
  9. // @require http://code.jquery.com/jquery-latest.js
  10. // ==/UserScript==
  11. /* jshint -W097 */
  12. 'use strict';
  13.  
  14. function loadAndRemoveUnpopularEvents()
  15. {
  16. var numPagesToLoad = 4;
  17. var timeToWaitForEachPageLoad = 2000;
  18. loadMoreEvents(numPagesToLoad, timeToWaitForEachPageLoad);
  19. var timeToWaitBeforeRemovingEvents = numPagesToLoad * timeToWaitForEachPageLoad;
  20. setTimeout(removeUnpopularEventsAndMakeReadable, timeToWaitBeforeRemovingEvents);
  21. }
  22.  
  23. function isEventUnpopular(event)
  24. {
  25. var attendeeObj = event.find('.attendee-count');
  26. var attendeeCount = attendeeObj.text().split('\n')[1];
  27. if(attendeeCount < 30)
  28. {
  29. return true;
  30. }
  31. return false;
  32. }
  33. function scrollToBottom()
  34. {
  35. $(window).scrollTop($(document).height());
  36. }
  37. //Click the more button to get more events, otherwise
  38. //if we delete events before doing this, because the scrollbar doesn't
  39. //scroll as far to the bottom, the more button doesn't show up.
  40. function loadMoreEvents(numExtraPagesToLoad, timeToWaitForEachPageLoad)
  41. {
  42. $('.simple-infinite-pager').click();
  43. if(numExtraPagesToLoad < 2)
  44. {
  45. return;
  46. }
  47. var numToLoadByScrolling = numExtraPagesToLoad - 1;
  48. for(var i = 0; i < numToLoadByScrolling; i++)
  49. {
  50. setTimeout(scrollToBottom, timeToWaitForEachPageLoad*(i+1));
  51. }
  52. }
  53.  
  54. function removeUnpopularEvents()
  55. {
  56. var events = $('.event-listing');
  57. events.each(function(){
  58. var event = $(this);
  59. var shouldRemove = isEventUnpopular(event);
  60.  
  61. if(shouldRemove == true)
  62. {
  63. event.remove();
  64. }
  65. });
  66. }
  67.  
  68. function scrollToStartOfResults()
  69. {
  70. $(window).scrollTop(0);
  71. var startOfResultsOffset = $('#C_pageBody').offset().top;
  72. $(window).scrollTop(startOfResultsOffset);
  73. }
  74.  
  75. function removeUnpopularEventsAndMakeReadable()
  76. {
  77. removeUnpopularEvents();
  78. scrollToStartOfResults();
  79. $('.docked-event-date-wrap').remove();
  80. $('.find-navbar-wrap').remove();
  81. }
  82.  
  83. setTimeout(loadAndRemoveUnpopularEvents, 2000);