1
0
Fork 0
mirror of synced 2024-06-01 10:09:49 +12:00

add TODO to support archive.org-style urls

This commit is contained in:
Nick Sweeting 2024-02-08 05:54:34 -08:00
parent b56bfe57f1
commit 97b185987d
2 changed files with 8 additions and 1 deletions

View file

@ -20,6 +20,7 @@ urlpatterns = [
path('archive/', RedirectView.as_view(url='/')),
path('archive/<path:path>', SnapshotView.as_view(), name='Snapshot'),
path('web/<path:path>', SnapshotView.as_view()), # support archive.org-style URLs
path('plugins/replaywebpage/', include('plugins.replaywebpage.urls')),
# ... dynamic load these someday if there are more of them

View file

@ -56,12 +56,18 @@ class SnapshotView(View):
slug, archivefile = path.split('/', 1)[0], 'index.html'
# slug is a timestamp
if slug.replace('.','').isdigit():
if slug.replace('.', '').isdigit():
# missing trailing slash -> redirect to index
if '/' not in path:
return redirect(f'{path}/index.html')
# TODO: add support for archive.org-style URLs where timestamp may be a human-readable date
# https://web.archivebox.io / web / 2022-01 / https://example.com
# https://web.archivebox.io / web / 20220505103616 / https://example.com
# https://web.archivebox.io / web / 2022-05-05__0:36:16 / https://example.com
# use archivebox.util.parse_date (supports unix timestamps, iso date strings, and lots more etc.)
try:
try:
snapshot = Snapshot.objects.get(Q(timestamp=slug) | Q(id__startswith=slug))