En Wallnot-bruger spurgte mig om ikke Wallnot burde have et RSS-feed? Jo da.
Det viste sig at den slags er indbygget i Django og meget nemt at lave.
Jeg oprettede feeds.py med to forskellige feeds. Et for alle artikler fra Wallnot, et for artikler for bestemte medier:
from django.contrib.syndication.views import Feed
from wall.models import Article
from django.urls import reverse
class RssFeed(Feed):
title = "Nyeste artikler fra wallnot.dk"
link = "/rss/"
description = "De allernyeste artikler uden paywall fra wallnot.dk"
def items(self):
return Article.objects.filter(paywall_detected=False).order_by('-date')[:20]
def item_title(self, item):
return item.title
def item_description(self, item):
return "Artikel fra " + item.get_medium_display()
def item_link(self, item):
return item.url
class RssFeedMedium(Feed):
title = "Nyeste artikler fra wallnot.dk"
description = "De allernyeste artikler uden paywall fra wallnot.dk"
def get_object(self, request, medium):
return medium
def link(self, obj):
return "/rss/" + obj
def items(self, obj):
return Article.objects.filter(paywall_detected=False, medium=obj).order_by('-date')[:20]
def item_title(self, item):
return item.title
def item_description(self, item):
return "Artikel fra " + item.get_medium_display()
def item_link(self, item):
return item.url
Og pegede på dem fra urls.py:
from django.urls import path
from . import views
from . import feeds
urlpatterns = [
path('', views.index, name='index'),
path('links', views.linkindex, name='linkindex'),
path('privatliv', views.privacy, name='privacy'),
path('om', views.about, name='wabout'),
path('rss', feeds.RssFeed(), name='rssfeed'),
path('rss/<str:medium>', feeds.RssFeedMedium(), name='rssfeed_medium'),
]
Og vupti!
Du finder RSS-feeds på wallnot.dk lige ved siden af Twitter-logoet.