diff --git a/archivebox/index/__init__.py b/archivebox/index/__init__.py index 4ac4c4af..e82cfefa 100644 --- a/archivebox/index/__init__.py +++ b/archivebox/index/__init__.py @@ -51,6 +51,7 @@ from .json import ( from .sql import ( write_sql_main_index, parse_sql_main_index, + write_sql_link_details, ) ### Link filtering and checking @@ -345,6 +346,7 @@ def write_link_details(link: Link, out_dir: Optional[str]=None) -> None: write_json_link_details(link, out_dir=out_dir) write_html_link_details(link, out_dir=out_dir) + write_sql_link_details(link) @enforce_types diff --git a/archivebox/index/sql.py b/archivebox/index/sql.py index 0a13d9b8..a168e589 100644 --- a/archivebox/index/sql.py +++ b/archivebox/index/sql.py @@ -46,6 +46,18 @@ def write_sql_main_index(links: List[Link], out_dir: str=OUTPUT_DIR) -> None: info = {k: v for k, v in link._asdict().items() if k in Snapshot.keys} Snapshot.objects.update_or_create(url=url, defaults=info) +@enforce_types +def write_sql_link_details(link: Link, out_dir: str=OUTPUT_DIR) -> None: + setup_django(out_dir, check_db=True) + from core.models import Snapshot + from django.db import transaction + + with transaction.atomic(): + snap = Snapshot.objects.get(url=link['url'], timestamp=link['timestamp']) + snap.title = link.title + snap.tags = link.tags + snap.save() + @enforce_types