You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.2 KiB
Python
79 lines
2.2 KiB
Python
6 years ago
|
import urllib.request
|
||
|
import urllib.parse
|
||
|
import json
|
||
|
from datetime import datetime
|
||
|
|
||
|
|
||
|
# REQUIRES: Etherpad API KEY stored in api.key
|
||
|
|
||
|
with open('api.key', 'r') as apikey_f:
|
||
|
apikey = apikey_f.read()
|
||
|
|
||
|
pad_urlbase = "https://pad.xpub.nl/api/1/" # xpub pad
|
||
|
pad_urlmethods = {"get": "getText",
|
||
|
"set": "setText",
|
||
|
"authors": "listAuthorsOfPad"}
|
||
|
|
||
|
# see more methods in: https://etherpad.org/doc/v1.5.7/#index_http_api
|
||
|
|
||
|
|
||
|
def createurl(urlbase, urlmethods, method, pad, key, text=''):
|
||
|
# creates well formated urls
|
||
|
# to query/edit the etherpad
|
||
|
url_vars = {'apikey': key, 'padID': pad}
|
||
|
if len(text) > 0: # if no text is input
|
||
|
url_vars['text'] = text
|
||
|
url_vars_dict = urllib.parse.urlencode(url_vars)
|
||
|
url = "{base}{method}?{vars}".format(base=urlbase,
|
||
|
method=urlmethods[method],
|
||
|
vars=url_vars_dict)
|
||
|
return url
|
||
|
|
||
|
|
||
|
def padrequest(url):
|
||
|
# upon being invoked opens the url
|
||
|
# and loads the JSON response
|
||
|
# returning the text
|
||
|
request = urllib.request.urlopen(url)
|
||
|
request_read = request.read().decode('utf-8')
|
||
|
request_dict = json.loads(request_read) # response to JSON dictionary
|
||
|
return request_dict
|
||
|
|
||
|
|
||
|
# GET TEXT FROM PAD
|
||
|
# from foo pad https://pad.xpub.nl/p/foo
|
||
|
# by creating url:
|
||
|
url = createurl(urlbase=pad_urlbase,
|
||
|
urlmethods=pad_urlmethods,
|
||
|
method='get',
|
||
|
pad='foo',
|
||
|
key=apikey)
|
||
|
response = padrequest(url) # requesting url and get response
|
||
|
|
||
|
print('----> get request', '\n',
|
||
|
url, '\n',
|
||
|
response['data']['text'])
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
# ADD TEXT TO THE PAD
|
||
|
# to foo pad (https://pad.xpub.nl/p/foo)
|
||
|
|
||
|
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # using current time
|
||
|
new_text = "this is now: " + now
|
||
|
# added old_text + new_text to
|
||
|
old_new_text = response['data']['text'] + '\n' + new_text
|
||
|
|
||
|
# by creating url: w/ set method and and text
|
||
|
url = createurl(urlbase=pad_urlbase,
|
||
|
urlmethods=pad_urlmethods,
|
||
|
method='set',
|
||
|
pad='foo',
|
||
|
key=apikey,
|
||
|
text=old_new_text)
|
||
|
|
||
|
# create a request
|
||
|
response = padrequest(url)
|
||
|
print('----> set URL', '\n', url)
|