4
4
import re
5
5
import string
6
6
import random
7
- import sys
8
7
import pymailtm
9
8
from faker import Faker
10
9
11
10
from pymailtm .pymailtm import CouldNotGetAccountException , CouldNotGetMessagesException
11
+ import pyppeteer
12
+ import pyppeteer .page
12
13
13
14
from utilities .etc import Credentials , p_print , Colours
14
15
@@ -63,10 +64,6 @@ async def get_mail(mail):
63
64
attempts = 0
64
65
65
66
while True :
66
- if attempts >= 10 :
67
- p_print ("Failed to find mail... exiting." , Colours .FAIL )
68
- sys .exit (1 )
69
-
70
67
try :
71
68
message = mail .get_messages ()[0 ]
72
69
p_print ("Found mail!" , Colours .OKGREEN )
@@ -79,41 +76,48 @@ async def get_mail(mail):
79
76
await asyncio .sleep (1.5 )
80
77
81
78
82
- async def type_name (page , credentials : Credentials ):
79
+ async def type_name (page : pyppeteer . page . Page , credentials : Credentials ):
83
80
"""Types name into the name fields."""
84
81
name = str (fake .name ()).split (" " , 2 )
85
82
firstname = name [0 ]
86
83
lastname = name [1 ]
87
84
await page .goto ("https://mega.nz/register" )
88
85
await page .waitForSelector ("#register_form" )
89
- await page .type ( "#register-firstname-registerpage2" , firstname )
90
- await page . type ( "#register-lastname-registerpage2" , lastname )
91
- await page . type ( "#register-email-registerpage2" , credentials . email )
86
+ await page .evaluate (
87
+ f"const textInputs = document.querySelectorAll('input[type=text]'); textInputs[2].value = ' { firstname } '; textInputs[3].value = ' { lastname } '; textInputs[4].value = ' { credentials . email } ';"
88
+ )
92
89
93
90
94
- async def type_password (page , credentials : Credentials ):
95
- """Types passwords into the password fields."""
96
- await page .click ("#register-password-registerpage2" )
97
- await page .type ("#register-password-registerpage2" , credentials .password )
98
- await page .click ("#register-password-registerpage3" )
99
- await page .type ("#register-password-registerpage3" , credentials .password )
91
+ async def finish_form (page : pyppeteer .page .Page , credentials : Credentials ):
92
+ """Checks the boxes for the register page."""
100
93
await page .click ("#register-check-registerpage2" )
94
+ await page .click (".register-button" )
95
+
96
+
97
+ async def type_password (page : pyppeteer .page .Page , credentials : Credentials ):
98
+ """Types passwords into the password fields."""
99
+ await page .evaluate (
100
+ f"const passwordInputs = document.querySelectorAll('input[type=password]'); passwordInputs[0].value = '{ credentials .password } '; passwordInputs[1].value = '{ credentials .password } ';"
101
+ )
101
102
await page .querySelectorAllEval (
102
103
".understand-check" , "(elements) => {elements[0].click();}"
103
104
)
104
- await page .click (".register-button" )
105
105
p_print ("Registered account successfully!" , Colours .OKGREEN )
106
106
107
107
108
108
async def generate_mail () -> Credentials :
109
109
"""Generate mail.tm account and return account credentials."""
110
110
mail = pymailtm .MailTm ()
111
+ try_count = 0
112
+
111
113
while True :
112
114
try :
113
115
account = mail .get_account ()
114
116
break
115
117
except CouldNotGetAccountException :
116
118
p_print ("Retrying mail.tm account generation..." , Colours .WARNING )
119
+ try_count += 1
120
+ await asyncio .sleep (try_count )
117
121
118
122
credentials = Credentials ()
119
123
credentials .email = account .address
0 commit comments