X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/6280673f35e13e75e81c5b7821bd2a44a1831eab..357027375ff8867f42ca34bcbfb5a78b5b185fc3:/src/catalogue/feeds.py?ds=inline diff --git a/src/catalogue/feeds.py b/src/catalogue/feeds.py new file mode 100644 index 000000000..2411d015a --- /dev/null +++ b/src/catalogue/feeds.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# +from django.contrib.sites.models import Site +from django.contrib.syndication.views import Feed +from django.core.urlresolvers import reverse + +from catalogue import models + +def absolute_url(url): + return "http://%s%s" % (Site.objects.get_current().domain, url) + + +class AudiobookFeed(Feed): + description = "Audiobooki ostatnio dodane do serwisu Wolne Lektury." + + mime_types = { + 'mp3': 'audio/mpeg', + 'ogg': 'audio/ogg', + 'daisy': 'application/zip', + } + + titles = { + 'all': 'WolneLektury.pl - audiobooki we wszystkich formatach', + 'mp3': 'WolneLektury.pl - audiobooki w formacie MP3', + 'ogg': 'WolneLektury.pl - audiobooki w formacie Ogg Vorbis', + 'daisy': 'WolneLektury.pl - audiobooki w formacie DAISY', + } + + def get_object(self, request, type): + return {'type': type, 'all': 'all' in request.GET} + + def title(self, args): + return self.titles[args['type']] + + def link(self, args): + return reverse('audiobook_feed', args=(args['type'],)) + + def items(self, args): + objects = models.BookMedia.objects.order_by('-uploaded_at') + if type == 'all': + objects = objects.filter(type__in=('mp3', 'ogg', 'daisy')) + else: + objects = objects.filter(type=args['type']) + if not args['all']: + objects = objects[:50] + return objects + + def item_title(self, item): + return item.name + + def item_categories(self, item): + return sorted(set(author.name for author in + item.book.tags.filter(category='author').iterator())) + + def item_description(self, item): + lines = [] + artist = item.extra_info.get('artist_name', None) + if artist is not None: + lines.append(u'Czyta: %s' % artist) + director = item.extra_info.get('artist_name', None) + if director is not None: + lines.append(u'Reżyseruje: %s' % director) + return u'
\n'.join(lines) + + def item_link(self, item): + return item.book.get_absolute_url() + + def item_guid(self, item): + return absolute_url(item.file.url) + + def item_enclosure_url(self, item): + return absolute_url(item.file.url) + + def item_enclosure_length(self, item): + return item.file.size + + def item_enclosure_mime_type(self, item): + return self.mime_types[item.type] + + def item_pubdate(self, item): + return item.uploaded_at