mirror of
https://github.com/sissbruecker/linkding.git
synced 2025-08-08 19:28:29 +02:00
Implement basic importer
This commit is contained in:
42
bookmarks/services/importer.py
Normal file
42
bookmarks/services/importer.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from datetime import datetime
|
||||
|
||||
from bs4 import BeautifulSoup, Tag
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from bookmarks.models import Bookmark
|
||||
|
||||
|
||||
def import_netscape_html(html: str, user: User):
|
||||
soup = BeautifulSoup(html, 'html.parser')
|
||||
|
||||
bookmark_tags = soup.find_all('dt')
|
||||
|
||||
for bookmark_tag in bookmark_tags:
|
||||
_import_bookmark_tag(bookmark_tag, user)
|
||||
|
||||
|
||||
def _import_bookmark_tag(bookmark_tag: Tag, user: User):
|
||||
link_tag = bookmark_tag.a
|
||||
|
||||
if link_tag is None:
|
||||
return
|
||||
|
||||
# Either modify existing bookmark for the URL or create new one
|
||||
url = link_tag['href']
|
||||
bookmark = _get_or_create_bookmark(url, user)
|
||||
|
||||
bookmark.url = url
|
||||
bookmark.date_added = datetime.utcfromtimestamp(int(link_tag['add_date']))
|
||||
bookmark.date_modified = bookmark.date_added
|
||||
bookmark.unread = link_tag['toread'] == '1'
|
||||
bookmark.title = link_tag.string
|
||||
bookmark.owner = user
|
||||
|
||||
bookmark.save()
|
||||
|
||||
|
||||
def _get_or_create_bookmark(url: str, user: User):
|
||||
try:
|
||||
return Bookmark.objects.get(url=url, owner=user)
|
||||
except Bookmark.DoesNotExist:
|
||||
return Bookmark()
|
Reference in New Issue
Block a user