Sorteio Teatro

Bot to fulfill a form to win tickets to a show

目前为 2024-11-19 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Sorteio Teatro
  3. // @namespace tampermonkey.com
  4. // @version 2024-11-19
  5. // @description Bot to fulfill a form to win tickets to a show
  6. // @author Guilherme Scafi
  7. // @match https://docs.google.com/forms/d/e/1FAIpQLSfOrxOOtHNyJ-H9bx-eYfmD635QVXz97XTB27x-FofcB0uvgQ/viewform
  8. // @match https://docs.google.com/forms/u/0/d/e/1FAIpQLSfOrxOOtHNyJ-H9bx-eYfmD635QVXz97XTB27x-FofcB0uvgQ/formResponse
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13.  
  14. var nameToInput = "Guilherme Sígolo Scafi";
  15. var cpfToInput = "417811438-70";
  16. var showName = "Thiago Ventura";
  17.  
  18. function processForm() {
  19. var nameField = document.querySelector('input[aria-labelledby="i1 i4"]');
  20. if (nameField) {
  21. nameField.value = nameToInput;
  22. nameField.dispatchEvent(new Event('input', { bubbles: true }));
  23. console.log("Nome preenchido.");
  24. } else {
  25. console.error("Campo 'Nome Completo' não encontrado.");
  26. return;
  27. }
  28.  
  29. var cpfField = document.querySelector('input[aria-labelledby="i6 i9"]');
  30. if (cpfField) {
  31. cpfField.value = cpfToInput;
  32. cpfField.dispatchEvent(new Event('input', { bubbles: true }));
  33. console.log("CPF preenchido.");
  34. } else {
  35. console.error("Campo 'CPF' não encontrado.");
  36. return;
  37. }
  38.  
  39. selectShowOption(showName, clickSubmitButton);
  40. }
  41.  
  42. function selectShowOption(showName, callback) {
  43. var radioButton = Array.from(document.querySelectorAll('div[role="radio"]')).find(radio => {
  44. console.log("Verificando rádio:", radio.getAttribute('aria-label'));
  45. return radio.getAttribute('aria-label').includes(showName);
  46. });
  47. if (radioButton) {
  48. radioButton.click();
  49. console.log("Opção de show selecionada:", showName);
  50. setTimeout(callback, 3000); // Aguarda 3 segundos antes de executar o callback
  51. } else {
  52. console.error("Opção de show não encontrada:", showName);
  53. }
  54. }
  55.  
  56. function clickSubmitButton() {
  57. var submitButton = document.querySelector('div[role="button"][aria-label="Submit"]');
  58. if (submitButton) {
  59. console.log("Botão 'Enviar' encontrado.");
  60. submitButton.click();
  61. } else {
  62. console.error("Botão 'Enviar' não encontrado.");
  63. }
  64. }
  65.  
  66. function checkAndReload() {
  67. // Verifica se estamos na URL de resposta
  68. if (window.location.href.includes("formResponse")) {
  69. console.log("Na página de resposta. Recarregando para a página inicial do formulário em 30 segundos...");
  70. setTimeout(function() {
  71. window.location.href = "https://docs.google.com/forms/d/e/1FAIpQLSfOrxOOtHNyJ-H9bx-eYfmD635QVXz97XTB27x-FofcB0uvgQ/viewform";
  72. }, 30000); // 30 segundos de atraso antes de recarregar para a página inicial do formulário
  73. } else {
  74. console.log("Não estamos na página de resposta. Nenhuma ação necessária.");
  75. }
  76. }
  77.  
  78. window.addEventListener('load', function() {
  79. if (window.location.href.includes("viewform")) {
  80. setTimeout(processForm, 2000); // Adiciona um atraso inicial para o carregamento completo da página
  81. }
  82. setTimeout(checkAndReload, 30000);
  83. });
  84.  
  85. })();