parent
d6bcd1f706
commit
5b3e91336f
@ -0,0 +1,60 @@
|
||||
import io
|
||||
from pathlib import Path
|
||||
|
||||
from bebop.fs import get_user_data_path
|
||||
|
||||
|
||||
TEMPLATE = """\
|
||||
# Bookmarks
|
||||
|
||||
Welcome to your bookmark page! This file has been created in "{original_path}" \
|
||||
and you can edit it as you wish. New bookmarks will be added on a new \
|
||||
line at the end. Always keep an empty line at the end!
|
||||
"""
|
||||
|
||||
|
||||
def get_bookmarks_path() -> Path:
|
||||
"""Return the path to the bookmarks file."""
|
||||
return get_user_data_path() / "bookmarks.gmi"
|
||||
|
||||
|
||||
def init_bookmarks(filepath):
|
||||
"""Create the bookmarks file and return its initial content.
|
||||
|
||||
Raises OSError if the file could not be written.
|
||||
"""
|
||||
content = TEMPLATE.format(original_path=filepath)
|
||||
with open(filepath, "wt") as bookmark_file:
|
||||
bookmark_file.write(content)
|
||||
return content
|
||||
|
||||
|
||||
def get_bookmarks_document():
|
||||
"""Return the bookmarks content, or None or failure.
|
||||
|
||||
If no bookmarks file exist yet, it is created. If accessing or creating the
|
||||
file fails, or if it is unreadable, return None.
|
||||
"""
|
||||
filepath = get_bookmarks_path()
|
||||
try:
|
||||
if not filepath.exists():
|
||||
content = init_bookmarks(filepath)
|
||||
else:
|
||||
with open(filepath, "rt") as bookmark_file:
|
||||
content = bookmark_file.read()
|
||||
except OSError:
|
||||
return None
|
||||
return content
|
||||
|
||||
|
||||
def save_bookmark(url, title):
|
||||
"""Append this URL/title pair to the bookmarks, return True on success."""
|
||||
filepath = get_bookmarks_path()
|
||||
try:
|
||||
if not filepath.exists():
|
||||
init_bookmarks(filepath)
|
||||
with open(filepath, "at") as bookmark_file:
|
||||
bookmark_file.write(f"=> {url} {title}\n")
|
||||
except OSError:
|
||||
return False
|
||||
return True
|
Loading…
Reference in new issue