aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2021-03-23 01:46:27 +0300
committerEvgeny Zinoviev <me@ch1p.io>2021-03-23 01:46:27 +0300
commitbfc0d6ecd36713b38e2ab87473ba32e854b79bd5 (patch)
tree069cf67d35d3097961229ec48e85e835f230124d
parent92ad3c75765b23f238c4254855eae7a76c2f2770 (diff)
upd
-rw-r--r--README.md12
-rw-r--r--e3372.py55
-rw-r--r--main.py16
3 files changed, 68 insertions, 15 deletions
diff --git a/README.md b/README.md
index 450b1e6..25489a0 100644
--- a/README.md
+++ b/README.md
@@ -2,16 +2,8 @@
## Requirements
-
- TODO
-
-
-## Installation
-
- python3 -m venv venv
- . ./venv/bin/activate
- pip install wheel
- pip install -r requirements.txt
+* lxml (python3-lxml)
+* see `requirements.txt`
## License
diff --git a/e3372.py b/e3372.py
index 7c9e554..38a042b 100644
--- a/e3372.py
+++ b/e3372.py
@@ -1,6 +1,16 @@
import requests
+
+from datetime import datetime
from bs4 import BeautifulSoup
+
+def build_request(params: dict):
+ items = []
+ for key, value in params.items():
+ items.append(f'<{key}>{value}</{key}>')
+ return '<request>'+''.join(items)+'</request>'
+
+
class E3372:
def __init__(self, ip: str):
self.ip = ip
@@ -25,7 +35,46 @@ class E3372:
response = self.request('device/signal')
print(response)
- def request(self, endpoint: str, method='GET'):
+ def get_sms(self, count=10, page=1):
+ request = build_request({
+ 'PageIndex': page,
+ 'ReadCount': count,
+ 'BoxType': 1,
+ 'SortType': 0,
+ 'Ascending': 0,
+ 'UnreadPreferred': 1
+ })
+ response = self.request('sms/sms-list', data=request)
+
+ sms_list = []
+ for message in response.find_all('Message'):
+ sms = SMS(
+ index=int(message.find('Index').get_text()),
+ phone=message.find('Phone').get_text(),
+ content=message.find('Content').get_text(),
+ date=message.find('Date').get_text()
+ )
+ sms_list.append(sms)
+
+ return sms_list
+
+
+ def send_sms(self):
+ pass
+
+ def request(self, endpoint: str, data=None):
url = f'http://{self.ip}/api/{endpoint}'
- r = requests.get(url) if method == 'GET' else requests.post(url)
- return BeautifulSoup(r.text, 'xml').find('response') \ No newline at end of file
+ r = requests.get(url) if data is None else requests.post(url, data=data)
+ return BeautifulSoup(r.text, 'lxml-xml').find('response')
+
+
+class SMS:
+ def __init__(self, index=None, phone=None, content=None, date=None):
+ self.index = index
+ self.phone = phone
+ self.content = content
+ self.date = date
+
+ def timestamp(self):
+ # input example: 2020-08-11 14:55:51
+ return int(datetime.strptime(self.date, '%Y-%m-%d %H-%M-%S').strftime("%s")) \ No newline at end of file
diff --git a/main.py b/main.py
index 10104b1..fd0cffb 100644
--- a/main.py
+++ b/main.py
@@ -2,10 +2,22 @@ from argparse import ArgumentParser
from pprint import pprint
from e3372 import E3372
+
def main():
- client = E3372('192.168.8.1')
+ parser = ArgumentParser()
+ parser.add_argument('--ip',
+ default='192.168.8.1',
+ help='Modem IP address')
+ args = parser.parse_args()
+
+ client = E3372(args.ip)
client.auth()
- pprint(client.headers)
+
+ messages = client.get_sms()
+
+ for m in messages:
+ print(m)
+
if __name__ == '__main__':
main()