-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathscript.py
84 lines (75 loc) · 2.23 KB
/
script.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/python3
import os
from config import MESSAGE_INTERVAL
from exceptions import MessageFileNotFound
import subprocess
import csv
import time
def is_valid_number(number):
number = number.strip()
return len(number) == 10
def _get_numbers():
numbers_csv_path = os.path.join(os.path.dirname(__file__), 'contacts.csv')
invalid_numbes_csv_path = os.path.join(os.path.dirname(__file__), 'invalid_numbers.csv')
valid_numbers = []
with open(numbers_csv_path) as csv_file, open(invalid_numbes_csv_path, "w") as invalid_numbers_file:
reader = csv.DictReader(csv_file)
writer = csv.DictWriter(invalid_numbers_file, [
'name', 'number'
])
writer.writeheader()
for row in reader:
if is_valid_number(row["number"]):
number = row['number']
valid_numbers.append(number.strip())
else:
#number is invalid
print("Invalid number {} for {}\n".format(row['number'], row['name']))
writer.writerow(row)
return valid_numbers
def _format_number_with_code(number):
return number
def _load_message():
try:
message_path = os.path.join(os.path.dirname(__file__), 'message.txt')
message = ""
with open(message_path) as message_file:
message = message_file.read()
return "'{}'".format(message)
except:
raise MessageFileNotFound()
def send_message(message, number):
command = [
'adb',
'shell',
'service',
'call',
'isms',
'7',
'i32',
'2',
's16',
'com.android.messaging',
's16',
_format_number_with_code(number),
's16',
'null',
's16',
message,
's16',
'null',
's16',
'null'
]
process = subprocess.Popen(command, stdout=subprocess.PIPE)
print("Sending message to: {}".format(number))
process.wait()
def main():
numbers = _get_numbers()
message = _load_message()
for number in numbers:
send_message(message, number)
time.sleep(MESSAGE_INTERVAL)
print("Sent messages to {} recepients.".format(len(numbers)))
if __name__ == "__main__":
main()