Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2017
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.01 KB | None | 0 0
  1. //Version 0.3.0
  2.  
  3. OFFSET_X = 729;
  4. OFFSET_Y = 683;
  5.  
  6. waitDuration = 0;
  7. modHash = null;
  8.  
  9. //white: 0, lightGrey: 1, grey: 2, black: 3,
  10. //pink: 4, red: 5, orange: 6, brown: 7,
  11. //yellow: 8, lightGreen: 9, green: 10, cyan: 11,
  12. //teal: 12, blue: 13, fuchsia: 14, purple: 15
  13. f = -1;
  14.  
  15. image = [[3,3,3,3,3,3,3,3,1,1,1,1,3,1,1,1,3,3,1,1,1,3,3,1,1,1,3,3,3,3,3,3,3,3,3],
  16. [3,3,3,3,3,3,3,3,1,3,3,1,3,3,1,3,3,1,3,3,3,1,3,1,3,3,1,3,3,3,3,3,3,3,3],
  17. [3,3,3,3,3,3,3,3,1,3,3,3,3,3,1,3,3,1,3,3,3,1,3,1,3,3,1,3,3,3,3,3,3,3,3],
  18. [3,3,3,3,3,3,3,3,3,1,1,3,3,3,1,3,3,1,1,1,1,1,3,1,3,1,3,3,3,3,3,3,3,3,3],
  19. [3,3,3,3,3,3,3,3,3,3,3,1,3,3,1,3,3,1,3,3,3,1,3,1,1,3,3,3,3,3,3,3,3,3,3],
  20. [3,3,3,3,3,3,3,3,3,3,3,1,3,3,1,3,3,1,3,3,3,1,3,1,3,1,3,3,3,3,3,3,3,3,3],
  21. [3,3,3,3,3,3,3,3,1,3,1,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,1,3,3,3,3,3,3,3,3],
  22. [3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3],
  23. [3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3],
  24. [3,3,3,3,1,3,3,3,1,3,3,3,3,3,3,1,1,1,1,1,3,3,3,3,3,3,1,3,3,3,1,3,3,3,3],
  25. [3,3,1,3,3,3,3,1,3,3,3,3,3,1,1,3,3,1,3,3,1,1,3,3,3,3,3,1,3,3,3,3,1,3,3],
  26. [3,3,1,3,3,3,1,3,3,3,3,1,1,3,3,3,1,1,1,3,3,3,1,1,3,3,3,3,1,3,3,3,1,3,3],
  27. [3,3,3,3,3,1,3,3,3,3,1,3,3,3,3,3,1,1,1,3,3,3,3,3,1,3,3,3,3,1,3,3,3,3,3],
  28. [3,1,3,3,3,1,3,3,3,3,1,3,3,3,3,3,1,1,1,3,3,3,3,3,1,3,3,3,3,1,3,3,3,1,3],
  29. [3,1,3,3,3,1,3,3,3,1,3,3,3,3,3,3,1,1,1,3,3,3,3,3,3,1,3,3,3,1,3,3,3,1,3],
  30. [3,3,3,3,1,3,3,3,3,1,3,3,3,3,3,1,1,1,1,1,3,3,3,3,3,1,3,3,3,3,1,3,3,3,3],
  31. [1,3,3,3,1,3,3,3,1,3,3,3,3,3,1,1,1,1,1,1,1,3,3,3,3,3,1,3,3,3,1,3,3,3,1],
  32. [3,1,3,3,1,3,3,3,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,3,3,1,3,3,1,3],
  33. [3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3],
  34. [1,3,3,3,1,3,3,3,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,3,3,1,3,3,3,1],
  35. [3,1,3,3,1,3,3,3,1,3,3,3,3,3,1,1,1,1,1,1,1,3,3,3,3,3,1,3,3,3,1,3,3,1,3],
  36. [3,3,3,3,1,3,3,3,3,1,3,3,3,3,3,1,1,1,1,1,3,3,3,3,3,1,3,3,3,3,1,3,3,3,3],
  37. [1,1,3,3,3,1,3,3,3,1,3,3,3,3,3,3,1,1,1,3,3,3,3,3,3,1,3,3,3,1,3,3,3,1,1],
  38. [3,3,3,3,3,1,3,3,3,3,1,3,3,3,3,3,1,1,1,3,3,3,3,3,1,3,3,3,3,1,3,3,3,3,3],
  39. [3,1,1,3,3,1,3,3,3,3,1,3,3,3,3,3,1,1,1,3,3,3,3,3,1,3,3,3,3,1,3,3,1,1,3],
  40. [3,3,3,3,3,3,1,3,3,3,3,1,1,3,3,3,1,1,1,3,3,3,1,1,3,3,3,3,1,3,3,3,3,3,3],
  41. [3,3,3,1,3,3,3,1,3,3,3,3,3,1,1,3,3,1,3,3,1,1,3,3,3,3,3,1,3,3,3,1,3,3,3],
  42. [3,3,1,3,3,3,3,3,1,3,3,3,3,3,3,1,1,1,1,1,3,3,3,3,3,3,1,3,3,3,3,3,1,3,3],
  43. [3,3,3,3,3,1,3,3,3,1,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,1,3,3,3,1,3,3,3,3,3],
  44. [3,3,3,3,1,3,3,3,3,3,1,3,3,3,3,3,3,1,3,3,3,3,3,3,1,3,3,3,3,3,1,3,3,3,3],
  45. [3,3,3,3,3,3,3,1,3,3,3,1,1,1,3,3,3,1,3,3,3,1,1,1,3,3,3,1,3,3,3,3,3,3,3],
  46. [3,3,3,3,3,3,1,3,3,3,3,3,3,3,1,1,1,1,1,1,1,3,3,3,3,3,3,3,1,3,3,3,3,3,3],
  47. [3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,1,1,3,1,1,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3],
  48. [3,3,3,3,3,3,3,3,3,1,3,3,1,1,1,3,3,3,3,3,1,1,1,3,3,1,3,3,3,3,3,3,3,3,3],
  49. [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],
  50. [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],
  51. [3,3,1,1,1,3,3,1,3,3,1,1,1,3,3,1,3,3,1,1,1,3,3,1,1,1,3,3,1,3,3,1,3,3,3],
  52. [3,3,1,3,1,3,3,1,3,3,3,1,3,3,3,1,3,3,3,3,1,3,3,1,3,3,3,3,1,1,3,1,3,3,3],
  53. [3,3,1,3,3,3,3,1,3,3,3,1,3,3,3,1,3,3,3,1,3,3,3,1,1,1,3,3,1,1,3,1,3,3,3],
  54. [3,3,1,3,3,3,3,1,3,3,3,1,3,3,3,1,3,3,3,1,3,3,3,1,3,3,3,3,1,3,1,1,3,3,3],
  55. [3,3,1,3,1,3,3,1,3,3,3,1,3,3,3,1,3,3,1,3,3,3,3,1,3,3,3,3,1,1,1,1,3,3,3],
  56. [3,3,1,1,1,3,3,1,3,3,3,1,3,3,3,1,3,3,1,1,1,3,3,1,1,1,3,3,1,3,3,1,3,3,3]];
  57.  
  58.  
  59. function start(x, y) {
  60. OFFSET_X = !x ? OFFSET_X : x;
  61. OFFSET_Y = !y ? OFFSET_Y : y;
  62. modHash = getModHash();
  63. main(0, 0);
  64. }
  65.  
  66. function main(x, y) {
  67. var timer = drawIfNecessary(x, y);
  68. log('waiting ' + timer + ' milliseconds');
  69. x = (x + 1) % image[y].length;
  70. if (x === 0) {
  71. y = (y + 1) % image.length;
  72. }
  73. setTimeout(main, timer, x, y);
  74. }
  75.  
  76. function drawIfNecessary(x, y) {
  77. if (image[y][x] < 0) return 0;
  78. canvasX = x + OFFSET_X;
  79. canvasY = y + OFFSET_Y;
  80. var pixelColour = pixelRequest(canvasX, canvasY);
  81. log('found pixel colour ' + pixelColour);
  82. var desiredColour = image[y][x];
  83. return (pixelColour == desiredColour) ? 0 : draw(canvasX, canvasY, desiredColour);
  84. }
  85.  
  86.  
  87. function sendSynchronousRequest(method, url, headers, params) {
  88. var xhr = new XMLHttpRequest();
  89. xhr.open(method, url, false);
  90. for (var h in headers) {
  91. xhr.setRequestHeader(h, headers[h]);
  92. }
  93. var firstParam = true;
  94. var paramString = '';
  95. for (var p in params) {
  96. if (firstParam) {
  97. firstParam = false;
  98. } else {
  99. paramString += '&';
  100. }
  101. paramString += p + '=' + params[p];
  102. }
  103. xhr.send(paramString);
  104. return xhr;
  105. }
  106.  
  107.  
  108. function getModHash() {
  109. var xhr = sendSynchronousRequest('GET', 'api/me.json', {}, {});
  110.  
  111. if (xhr.readyState !== 4) throw 'oh shit';
  112. if (xhr.status !== 200) {
  113. alert("Couldn't obtain modhash. Are you logged into Reddit?");
  114. throw 'bollocks';
  115. }
  116. var response = JSON.parse(xhr.responseText);
  117. return response.data.modhash;
  118. }
  119.  
  120.  
  121. function pixelRequest(x, y) {
  122. var url = '/api/place/pixel.json?x=' + x + '&y=' + y;
  123.  
  124. var xhr = sendSynchronousRequest('GET', url, {
  125. 'x-requested-with': 'XMLHttpRequest',
  126. 'x-modhash': modHash
  127. }, {});
  128.  
  129. if (xhr.readyState !== 4) throw 'oh shit';
  130. if (xhr.status !== 200) {
  131. log(xhr);
  132. throw 'bollocks';
  133. }
  134. var response = JSON.parse(xhr.responseText);
  135. return response.color;
  136. }
  137.  
  138.  
  139. function draw(x, y, colour) {
  140. log('attempting to draw a pixel at (' + x + ',' + y + ')');
  141. var xhr = sendSynchronousRequest('POST', '/api/place/draw.json', {
  142. 'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
  143. 'x-requested-with': 'XMLHttpRequest',
  144. 'x-modhash': modHash
  145. }, {
  146. x: x,
  147. y: y,
  148. color: colour
  149. });
  150.  
  151. if (xhr.readyState !== 4) throw 'oh shit';
  152. if (xhr.status !== 200 && xhr.status !== 429) {
  153. log(xhr);
  154. throw 'bollocks';
  155. }
  156. var response = JSON.parse(xhr.responseText);
  157. return response.wait_seconds * 1000;
  158. }
  159.  
  160.  
  161. function log(message) {
  162. var d = new Date();
  163. var YYYY = d.getFullYear();
  164. var MM = ('0' + (d.getMonth() + 1)).slice(-2);
  165. var DD = ('0' + d.getDate()).slice(-2);
  166. var hh = ('0' + d.getHours()).slice(-2);
  167. var mm = ('0' + d.getMinutes()).slice(-2);
  168. var ss = ('0' + d.getSeconds()).slice(-2);
  169. var dateString = '[' + YYYY + '/' + MM + '/' + DD + ' ' + hh + ':' + mm + ':' + ss + ']';
  170. console.log(dateString, message);
  171. }
  172.  
  173.  
  174. function setOffsets(x, y) {
  175. OFFSET_X = x;
  176. OFFSET_Y = y;
  177. log('Moving image origin to (' + x + ',' + y + ')');
  178. }
  179.  
  180.  
  181. start();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement