-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate_open_status.py
34 lines (28 loc) · 1.06 KB
/
update_open_status.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/python3
import requests
from datetime import datetime
from bs4 import BeautifulSoup
from mastodon import Mastodon
from settings import *
def get_state_text():
try:
json = requests.get(SPACE_API_URL).json()
is_open = json['state']['open']
state_text = STATE_OPEN if is_open else STATE_CLOSED
last_change = json['state'].get('lastchange')
if last_change is not None:
timestamp = datetime.fromtimestamp(last_change)
return timestamp.strftime(state_text)
else:
return state_text
except:
return STATE_UNKNOWN
mastodon = Mastodon(access_token=ACCESS_TOKEN_FILENAME, api_base_url=INSTANCE_URL)
updated_fields = []
for field in mastodon.account_verify_credentials().fields:
if field['name'] == STATE_FIELD_NAME:
updated_fields.append((STATE_FIELD_NAME, get_state_text()))
else:
soup = BeautifulSoup(field['value'], 'html.parser')
updated_fields.append((field['name'], soup.get_text()))
mastodon.account_update_credentials(fields=updated_fields)