GAB User Autocomplete List Builder

User Autocomplete requirement 1 of 2: gather info for the user autocomplete lists

  1. // ==UserScript==
  2. // @name GAB User Autocomplete List Builder
  3. // @namespace http://gab.ai/
  4. // @version 0.1
  5. // @description User Autocomplete requirement 1 of 2: gather info for the user autocomplete lists
  6. // @author Jeremiah 20:9
  7. // @match https://gab.ai/*/followers
  8. // @match https://gab.ai/*/following
  9. // @require https://code.jquery.com/jquery-1.8.2.js
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. var itvcheck1 = -1;
  14. var itvcheck2 = -1;
  15. var beforecount = 0;
  16. var followers = [];
  17. var following = [];
  18.  
  19. $(document).ready(function(){
  20. itvcheck1 = setInterval(checkForFollowersLoad, 500);
  21. itvcheck2 = setInterval(checkForFollowingLoad, 500);
  22. });
  23.  
  24. function checkForFollowersLoad()
  25. {
  26. if($("profile-followers > div").length === 0 || $("#refreshfollowers").length === 1)
  27. return;
  28.  
  29. followers = [];
  30.  
  31. $("profile-followers > div").prepend('<a id="refreshfollowers">Refresh Followers</a>');
  32. $("#refreshfollowers").click(function(){
  33. $("#refreshfollowers").html("Loading...");
  34. refreshFollowers();
  35. });
  36. }
  37. function checkForFollowingLoad()
  38. {
  39. if($("profile-following > div").length === 0 || $("#refreshfollowing").length === 1)
  40. return;
  41.  
  42. following = [];
  43.  
  44. $("profile-following > div").prepend('<a id="refreshfollowing">Refresh Following</a>');
  45. $("#refreshfollowing").click(function(){
  46. $("#refreshfollowing").html("Loading...");
  47. refreshFollowing();
  48. });
  49. }
  50.  
  51. function refreshFollowers()
  52. {
  53. var user = window.location.href.replace("https://", "").split("/");
  54. user = user[1];
  55. var loc = "https://gab.ai/users/" + user + "/followers";
  56. // https://gab.ai/users/<USERNAME>/followers?before=X
  57. $.ajax({
  58. dataType: "json",
  59. url: loc + "?before=" + beforecount,
  60. success: function(data){
  61. for(var d in data.data)
  62. {
  63. var user = {};
  64. user.name = data.data[d].name;
  65. user.atname = data.data[d].username;
  66. user.pic = data.data[d].picture_url;
  67. user.type = "follower";
  68. followers.push(user);
  69. }
  70. $("#refreshfollowers").html("Loading: " + followers.length);
  71. if(!data["no-more"])
  72. {
  73. beforecount += 30;
  74. refreshFollowers();
  75. }
  76. else
  77. {
  78. followers.sort(function(a, b){
  79. if (a.atname.toLowerCase() < b.atname.toLowerCase())
  80. return -1;
  81. if (a.atname.toLowerCase() > b.atname.toLowerCase())
  82. return 1;
  83. return 0;
  84. });
  85.  
  86. localStorage.setItem("gab-user-followers", JSON.stringify(followers));
  87. beforecount = 0;
  88. alert("Done! Updated follower list for autocomplete. " + followers.length + " followers found.");
  89. $("#refreshfollowers").remove();
  90. }
  91. }
  92. });
  93. }
  94.  
  95. function refreshFollowing()
  96. {
  97. var user = window.location.href.replace("https://", "").split("/");
  98. user = user[1];
  99. var loc = "https://gab.ai/users/" + user + "/following";
  100. // https://gab.ai/users/<USERNAME>/following?before=X
  101. $.ajax({
  102. dataType: "json",
  103. url: loc + "?before=" + beforecount,
  104. success: function(data){
  105. for(var d in data.data)
  106. {
  107. var user = {};
  108. user.name = data.data[d].name;
  109. user.atname = data.data[d].username;
  110. user.pic = data.data[d].picture_url;
  111. user.type = "following";
  112. following.push(user);
  113. }
  114. $("#refreshfollowing").html("Loading: " + following.length);
  115. if(!data["no-more"])
  116. {
  117. beforecount += 30;
  118. refreshFollowing();
  119. }
  120. else
  121. {
  122. following.sort(function(a, b){
  123. if (a.atname.toLowerCase() < b.atname.toLowerCase())
  124. return -1;
  125. if (a.atname.toLowerCase() > b.atname.toLowerCase())
  126. return 1;
  127. return 0;
  128. });
  129. localStorage.setItem("gab-user-following", JSON.stringify(following));
  130. beforecount = 0;
  131. alert("Done! Updated following list for autocomplete. " + following.length + " following found.");
  132. $("#refreshfollowing").remove();
  133. }
  134. }
  135. });
  136. }