print-linkdings/print_linkdings.py

39 lines
961 B
Python
Raw Permalink Normal View History

2024-12-11 22:10:04 +01:00
#!/usr/bin/env python3
import json
import sys
from pathlib import Path
import requests
from courlan import extract_links, is_navigation_page, is_not_crawlable
def main():
if len(sys.argv) != 2:
exit("Usage: print-linkdings INSTANCE_URL")
api_url = f"{sys.argv[1]}/api/bookmarks/"
linkding_api_key = (
Path("/usr/local/etc/linkding_api_key.txt").read_text().strip("\n")
)
headers = {"Authorization": f"Token {linkding_api_key}"}
response = requests.get(api_url, headers=headers)
json_data = json.loads(response.text)
linkding_urls = []
for item in json_data["results"]:
linkding_urls.append(item.get("url"))
for url in linkding_urls:
text = requests.get(url).text
links = set(extract_links(text, url))
for link in links:
if not is_navigation_page(link) and not is_not_crawlable(link):
print(link)
if __name__ == "__main__":
main()