Skip to content

s2nner/django_rss_xml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django rss/xml parser(django_rss_xml)

This parse is intended for XML / RSS, which does not conform to the standard: https://tools.ietf.org/html/rfc5005

Use https://pypi.python.org/pypi/feedparser for standard RSS

install

pip install django-rss_xml-parser

add to settings

INSTALLED_APPS = [
    ...
    'django_rss_xml',
    ...
    ]

usage

  1. create mappers
afisha = {
    "elements": "event",
    "items_to": {"id__attr": "event_id", "title": "title", "text": "text"}
}

yandex = {
    "elements": "item",
    "items_to": {"title": "title", "description": "text"}
}

kassir = {"elements": "item"}
...
  1. create models
from django.db import models
from django.utils.translation import ugettext as _
from django.utils.timezone import now

class Tags(models.Model):
    tag = models.CharField(max_length=50, verbose_name=_("Tag"))

class RssModel(models.Model):
    event_id = models.IntegerField(verbose_name=_("event ID"), null=True)
    title = models.CharField(max_length=550, verbose_name=_("Title"), null=True)
    text = models.TextField(verbose_name=_("Description"), null=True)
    time = models.DateTimeField(verbose_name=_("Time and Date"), default=now, blank=True)
    tags = models.ForeignKey(Tags, on_delete=models.CASCADE, verbose_name=_('Tags'), null=True, blank=True)
  1. add in view
rss_rules = {"uri": 'rss/data/afisha.xml', "rule": afisha}
OR
rss_rules = {"uri": 'https://news.yandex.ru/auto.rss', "rule": yandex}

example:

from django.views.generic import TemplateView
from .rss_mapper import kassir, afisha, yandex
from django_rss_xml.rss_parser import RSS
from .models import RssModel


class RSSView(TemplateView, RSS):
    template_name = "rss/rss.html"
    rss_rules = {"uri": 'rss/data/afisha.xml', "rule": afisha}

    def get_context_data(self, **kwargs):
        context = super(RSSView, self).get_context_data(**kwargs)
        context['rss_obj'] = self.rss_to_object()
        context['rss_m'] = self.rss_to_model(RssModel)
        return context

Running tests

python manage.py test django_rss_xml

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published