upd
This commit is contained in:
parent
92ad3c7576
commit
bfc0d6ecd3
12
README.md
12
README.md
@ -2,16 +2,8 @@
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
|
* lxml (python3-lxml)
|
||||||
TODO
|
* see `requirements.txt`
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
python3 -m venv venv
|
|
||||||
. ./venv/bin/activate
|
|
||||||
pip install wheel
|
|
||||||
pip install -r requirements.txt
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
55
e3372.py
55
e3372.py
@ -1,6 +1,16 @@
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
from bs4 import BeautifulSoup
|
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:
|
class E3372:
|
||||||
def __init__(self, ip: str):
|
def __init__(self, ip: str):
|
||||||
self.ip = ip
|
self.ip = ip
|
||||||
@ -25,7 +35,46 @@ class E3372:
|
|||||||
response = self.request('device/signal')
|
response = self.request('device/signal')
|
||||||
print(response)
|
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}'
|
url = f'http://{self.ip}/api/{endpoint}'
|
||||||
r = requests.get(url) if method == 'GET' else requests.post(url)
|
r = requests.get(url) if data is None else requests.post(url, data=data)
|
||||||
return BeautifulSoup(r.text, 'xml').find('response')
|
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 pprint import pprint
|
||||||
from e3372 import E3372
|
from e3372 import E3372
|
||||||
|
|
||||||
|
|
||||||
def main():
|
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()
|
client.auth()
|
||||||
pprint(client.headers)
|
|
||||||
|
messages = client.get_sms()
|
||||||
|
|
||||||
|
for m in messages:
|
||||||
|
print(m)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user