šŸš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →
Socket
Sign inDemoInstall
Socket

django-rss-xml-parser

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

django-rss-xml-parser

This parser is intended for RSS/XML that does not communicate the standard rfc5005

0.4
PyPI
Maintainers
1

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

  • 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"}
...

  • 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)

  • 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

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts