bookstack-backup-restore/main.py
2023-01-01 01:17:16 -05:00

65 lines
1.6 KiB
Python

#
# Pulling and pushing md files to/from bookstack
#
import requests, json, os, creds
## Tweakables
bookstackURL = "https://bs.corrgs.ca/api"
keyToken = creds.keyToken
secretToken = creds.secretToken
exportFolder = "export"
importFolder = "import"
## Advanced
debug = True
headers = {}
authHeader = { "Authorization" : f"Token {keyToken}:{secretToken}" }
headers.update(authHeader)
stars = "*"*25
######
# Book formats
# Book > Chapter > Page
######
def pullAllBooks():
req = requests.get(f'{bookstackURL}/books', headers=headers)
books = []
for book in json.loads(req.content.decode())['data']:
books.append(book)
if debug:
print(f"{stars}\nPulling books status code: {req.status_code}\n{stars}")
print(books)
return books
def pullAllChapters(bookID):
req = requests.get(f'{bookstackURL}/books', headers=headers)
chapters = []
def backupAllBooks(): ## This exports each book as a single page... it works but isn't a true backup solution
jsonTests = []
for book in pullAllBooks():
req = requests.get(f"{bookstackURL}/books/{book['id']}/export/markdown", headers=headers)
with open(f"{exportFolder}/{book['name']}", 'w+') as file:
file.write(req.content.decode())
def importBooks(): ##### Incomplete
importFiles = os.listdir(importFolder)
for file in importFiles:
with open(f'{importFolder}/{file}', 'r') as file:
filedata = file.read()
if debug:
## Pull all books
pullAllBooks()
## Download allbooks
backupAllBooks()
## Import test books
importBooks()