This Python module allows you to interact with IServ school servers using only login data for authentication. No API key is required.
You can install the IServ Python module using pip:
pip install IServAPI
from IServAPI import IServAPI
# Initialize IServ instance with login credentials
api = IServAPI(username="YOUR_ISERV_USERNAME",password="YOUR_ISERV_PASSWORD", iserv_url="some_iserv_url.de")
# Example: Get the current user's information
user_info = api.get_own_user_info()
print(user_info)
- Unofficial IServ API
- Installation
- Basic usage
- List of functions
- Supported Functionality
- Get own User Information
- 2. Set own User Information
- 3. Get user avatar
- 4. Get emails
- 5. Search users
- 6. Search users autocomplete
- 7. Fetch notifications
- 8. Get general Information about emails
- 9. Get email source
- 10. Get all mail folders
- 11. Get upcoming events
- 12. Get all eventsources
- 13. Get conference health
- 14. Get badges
- 15. Files
- 16. Read all notifications
- 17. Read a specific Notification
- 18. Send Email
- 19. Get other users information
- Logging
- To-Do List
- Contribution
- License
user_info = get_own_user_info()
This method retrieves information about the currently logged-in user.
set_own_user_info(key=value)
This method sets your personal information
Available keys are:
title
company
birthday
nickname
_class
street
zipcode
city
country
phone
mobilePhone
fax
mail
homepage
icq
jabber
msn
skype
note
get_user_profile_picture(user, output_folder)
This method retrieves the avatar of any user on the network
It saves the avatar in the folder followed by the username,
emails = get_emails(path = 'INBOX', length = 50, start = 0, order = 'date', dir = 'desc')
Retrieves emails from a specified path with optional parameters for length, start, order, and direction.
search_users(query)
users = search_users_autocomplete(query, limit=50)
Faster than search_users()
but may not display all users
notifications = get_notifications()
Retrieves notifications from the specified URL and returns them as a JSON object.
email_info = get_email_info(path="INBOX", length=0, start=0, order="date", dir="desc")
Retrieves email information from the specified path in the mailbox. For example: unread emails.
email_source = get_email_source(uid, path="INBOX")
Retrieves the source code of an email message from the specified email path and message ID.
mail_folders = get_mail_folders()
Retrieves the list of mail folders.
events = get_upcoming_events()
Retrieves the upcoming events from the IServ calendar API.
eventsources = get_eventsources()
Retrieves the event sources from the calendar API.
health = get_conference_health()
Get the health status of the conference API endpoint.
badges = get_badges()
Retrieves the badges from the IServ server. (Badges=numbers on sidebar)
client = file()
Possible functions:
Synchronous methods
# Checking existence of the resource
client.check("dir1/file1")
client.check("dir1")
# Get information about the resource
client.info("dir1/file1")
client.info("dir1/")
# Check free space
free_size = client.free()
# Get a list of resources
files1 = client.list()
files2 = client.list("dir1")
# Create directory
client.mkdir("dir1/dir2")
# Delete resource
client.clean("dir1/dir2")
# Copy resource
client.copy(remote_path_from="dir1/file1", remote_path_to="dir2/file1")
client.copy(remote_path_from="dir2", remote_path_to="dir3")
# Move resource
client.move(remote_path_from="dir1/file1", remote_path_to="dir2/file1")
client.move(remote_path_from="dir2", remote_path_to="dir3")
# Move resource
client.download_sync(remote_path="dir1/file1", local_path="~/Downloads/file1")
client.download_sync(remote_path="dir1/dir2/", local_path="~/Downloads/dir2/")
# Unload resource
client.upload_sync(remote_path="dir1/file1", local_path="~/Documents/file1")
client.upload_sync(remote_path="dir1/dir2/", local_path="~/Documents/dir2/")
# Publish the resource
link = client.publish("dir1/file1")
link = client.publish("dir2")
# Unpublish resource
client.unpublish("dir1/file1")
client.unpublish("dir2")
# Get the missing files
client.pull(remote_directory='dir1', local_directory='~/Documents/dir1')
# Send missing files
client.push(remote_directory='dir1', local_directory='~/Documents/dir1')
Asynchronous methods
# Load resource
kwargs = {
'remote_path': "dir1/file1",
'local_path': "~/Downloads/file1",
'callback': callback
}
client.download_async(**kwargs)
kwargs = {
'remote_path': "dir1/dir2/",
'local_path': "~/Downloads/dir2/",
'callback': callback
}
client.download_async(**kwargs)
# Unload resource
kwargs = {
'remote_path': "dir1/file1",
'local_path': "~/Downloads/file1",
'callback': callback
}
client.upload_async(**kwargs)
kwargs = {
'remote_path': "dir1/dir2/",
'local_path': "~/Downloads/dir2/",
'callback': callback
}
client.upload_async(**kwargs)
For further informations visit CloudPolis/webdav-client-python
read_all_notifications()
Marks all Notification as read.
read_notifiaction(notification_id)
Marks a specified Message as read. Note: notification_id can be returned from get_notifications()
send_email(receiver_email:str, subject:str, body:str, html_body:str=None, smtp_server:str=None, smtps_port:int=465, attachments:list=None)
Sends an email. Note all variables defaulting to none get defined later so don't worry.
sender_email must be a valid name present in the iserv network.
get_user_info(user)
Get someone else's public information this includes everything they heve set in 'Personal Information'
Add this
IServAPI.setup_logging("app.log")
after your from IServAPI import IServAPI
-
add search users
-
more functionality
-
make wiki
Contributions are welcome! If you'd like to contribute to this project, please fork the repository and submit
a pull request. Make sure to follow the existing code style and add appropriate tests for new functionality.
This project is licensed under the MIT License - see the LICENSE file for details.