upd
This commit is contained in:
parent
92ad3c7576
commit
bfc0d6ecd3
12
README.md
12
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
|
||||
|
||||
|
55
e3372.py
55
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')
|
||||
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"))
|
16
main.py
16
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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user