From bfc0d6ecd36713b38e2ab87473ba32e854b79bd5 Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Tue, 23 Mar 2021 01:46:27 +0300 Subject: upd --- README.md | 12 ++---------- e3372.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- main.py | 16 ++++++++++++++-- 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}') + return ''+''.join(items)+'' + + 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() -- cgit v1.2.3