.dotfiles/.config/qutebrowser/linkwarden.py
2024-07-02 15:42:26 +02:00

59 lines
1.6 KiB
Python

import os
import json
import urllib.request
linkwarden_url = os.environ.get('LINKWARDEN_URL')
linkwarden_token = os.environ.get('LINKWARDEN_TOKEN')
def get_links_part(cursor):
request = urllib.request.Request(linkwarden_url + "/api/v1/links?sort=0&cursor=" + str(cursor), headers={
'Authorization': 'Bearer ' + linkwarden_token
})
response = urllib.request.urlopen(request)
data = response.read().decode("utf-8")
data = data.replace("\\n", " ").replace("\\r", " ").replace("\\t", " ")
data = ' '.join(data.split())
return json.loads(data).get("response", [])
def get_links():
cursor = 0
links = []
while True:
new_links = get_links_part(cursor)
links += new_links
if len(new_links):
cursor = new_links[-1]["id"]
else:
return links
def format_links(links):
formatted_links = []
for link in links:
url = link.get("url")
if not url:
continue
title = link.get("name")
if not title:
title = link.get("description")
if not title:
title = "<untitled>"
collection = link.get("collection", {}).get("name")
if not collection:
collection = "<uncategorized>"
formatted_links.append(f"{url} {collection}/{title}")
return formatted_links
def init():
if linkwarden_url is None or linkwarden_token is None:
return
links = format_links(get_links())
with open(os.path.expanduser("~/.config/qutebrowser/bookmarks/urls"), "w+") as f:
f.write("\n".join(links))
f.close()