82 lines
2.8 KiB
Python
82 lines
2.8 KiB
Python
import requests
|
|
from datetime import datetime, timedelta
|
|
|
|
|
|
def get_received_sms():
|
|
# Diafaan server configuration
|
|
server_url = "http://192.168.1.113:9710/http/request-received-messages"
|
|
username = "admin"
|
|
password = ""
|
|
|
|
# Optional filters (adjust as needed)
|
|
params = {
|
|
'username': username,
|
|
'password': password,
|
|
'limit': 10, # Number of messages to retrieve
|
|
# 'startdate': (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d'), # Last 24 hours
|
|
# 'enddate': datetime.now().strftime('%Y-%m-%d'),
|
|
# 'unread': 'true' # Only get unread messages (optional)
|
|
}
|
|
|
|
try:
|
|
response = requests.get(server_url, params=params)
|
|
|
|
if response.status_code == 200:
|
|
# Parse the response (typically CSV or XML format)
|
|
if 'text/csv' in response.headers.get('Content-Type', ''):
|
|
messages = parse_csv_response(response.text)
|
|
else:
|
|
messages = parse_xml_response(response.text)
|
|
|
|
print(f"Retrieved {len(messages)} messages:")
|
|
for msg in messages:
|
|
print(f"From: {msg['sender']}, Received: {msg['date']}, Message: {msg['text']}")
|
|
|
|
return messages
|
|
else:
|
|
print(f"Failed to retrieve messages. Status code: {response.status_code}")
|
|
print("Response:", response.text)
|
|
return None
|
|
|
|
except Exception as e:
|
|
print(f"An error occurred: {str(e)}")
|
|
return None
|
|
|
|
|
|
def parse_csv_response(csv_data):
|
|
"""Parse CSV formatted response from Diafaan"""
|
|
messages = []
|
|
for line in csv_data.splitlines()[1:]: # Skip header
|
|
if line.strip():
|
|
parts = line.split(',')
|
|
if len(parts) >= 4:
|
|
messages.append({
|
|
'id': parts[0],
|
|
'date': parts[1],
|
|
'sender': parts[2],
|
|
'text': ','.join(parts[3:]) # Handle commas in message text
|
|
})
|
|
return messages
|
|
|
|
|
|
def parse_xml_response(xml_data):
|
|
"""Parse XML formatted response from Diafaan"""
|
|
try:
|
|
from xml.etree import ElementTree
|
|
messages = []
|
|
root = ElementTree.fromstring(xml_data)
|
|
for msg in root.findall('message'):
|
|
messages.append({
|
|
'id': msg.find('id').text if msg.find('id') is not None else '',
|
|
'date': msg.find('date').text if msg.find('date') is not None else '',
|
|
'sender': msg.find('sender').text if msg.find('sender') is not None else '',
|
|
'text': msg.find('text').text if msg.find('text') is not None else ''
|
|
})
|
|
return messages
|
|
except Exception as e:
|
|
print(f"Error parsing XML: {str(e)}")
|
|
return []
|
|
|
|
|
|
# Call the function
|
|
received_messages = get_received_sms() |