Neue App feeds: Quellen sind entweder Nachrichten oder Blog. - Abruf wie bei Podcasts (ETag, Body-Hash, Backoff), refresh_newsfeeds für den Cron - Anrisstexte: der Artikel wird von der Seite geholt (trafilatura), HTML bereinigt, relative Links absolut - Nachrichten: gleiche Meldung aus mehreren Quellen wird eine Story (tf-idf, je Artikel verglichen), Briefing „Seit letztem Mal“ (Top-Themen, dann nach Ressort), verfallen nach news_keep_days (Standard 2) - Blogs: Ungelesen-Liste je Blog, bleiben bis gelesen - API unter /feeds/: Quellen suchen/abonnieren/OPML, News, Stories, Blogs, Artikel, gelesen, merken Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
24 lines
1.2 KiB
Python
24 lines
1.2 KiB
Python
from django.urls import path
|
|
|
|
from . import views
|
|
|
|
urlpatterns = [
|
|
path('state/', views.state, name='feeds_state'),
|
|
path('discover/', views.discover, name='feeds_discover'),
|
|
path('sources/add/', views.add_source, name='feeds_add_source'),
|
|
path('sources/bulk/', views.add_sources, name='feeds_add_sources'),
|
|
path('sources/<int:pk>/', views.edit_source, name='feeds_edit_source'),
|
|
path('sources/<int:pk>/delete/', views.delete_source, name='feeds_delete_source'),
|
|
path('export.opml', views.export_opml, name='feeds_export_opml'),
|
|
path('refresh/', views.refresh_now, name='feeds_refresh'),
|
|
path('briefing/', views.briefing, name='feeds_briefing'),
|
|
path('briefing/seen/', views.briefing_seen, name='feeds_briefing_seen'),
|
|
path('news/', views.news, name='feeds_news'),
|
|
path('stories/<int:pk>/', views.story, name='feeds_story'),
|
|
path('blogs/', views.blogs, name='feeds_blogs'),
|
|
path('starred/', views.starred, name='feeds_starred'),
|
|
path('items/read/', views.mark_read, name='feeds_mark_read'),
|
|
path('items/<int:pk>/', views.item, name='feeds_item'),
|
|
path('items/<int:pk>/star/', views.star, name='feeds_star'),
|
|
path('settings/', views.settings, name='feeds_settings'),
|
|
]
|