Skip to main content

Ultra FAST RSS

PythonCodeAudit Badge PyPI - Version PyPI - Python Version


A simple ASYNC RSS parser. To make retrieving RSS feeds ultra fast.

Table of Contents

Status

Installation

pip install ultrafastrss

Usage

In your Python program call the async function with a (large) list of URLs: process_rssfeeds(urls)

To validate and see the working: Create a simple demo program, create a python file fastrss_demo.py like (just copy-paste):

from ultrafastrss.ultrafastrss import process_rssfeeds 
import asyncio

urls = [
        'https://nocomplexity.com/rss',
        'https://www.eff.org/rss/updates.xml',
        'https://www.freebsd.org/news/rss.xml',
        'https://ubuntu.com/blog/feed',
        'https://nlnet.nl/feed.atom',
        'https://j3s.sh/feed.atom',
        'https://blog.research.google/atom.xml'
    ]
    
# Run the async RSS feed processing, all results are as json stored in the variable results

results = asyncio.run(process_rssfeeds(urls))
print(results)

After running this demo in a terminal by doing:

python ultrafastrss_demo.py

You should seen directly the result of all RSS information gathered!

You can do all kind of fun things with the returned json object which contains the crucial parts from the parsed rss or atom feeds!

Benchmarking

I did some benchmarking test with feedparser, a module that is widely used within many Python programs for parsing rss feeds. Results are minimal 10 times faster with 500 URLs.

License

ultrafastrss is distributed under the terms of the Mozilla Public License 2.0 license.

Architecture

This ultrafastrss parser is designed to parse RSS or Atom return JSON data. The parsing is delegating to specific parsers functions (rss_parser, atom_parser or rdf_parser). Only the attributes title, link and date are retrieved.

The key design principle for this parser is to retrieve JSON data from a significant number of feeds asynchronously.

Feed content or summary is not parsed on purpose. This is also not a RSS reader. But by clicking the retrieved link, the retrieved item can be viewed in a browser.

The fields that are parsed and stored for every feed are:

"title": "Exphormer: Scaling transformers for graph-structured data",
      "link": "http://blog.research.google/2024/01/exphormer-scaling-transformers-for.html",
      "date": "2024-01-23",
      "tags": [
        "Deep Learning",
        "Graphs"

All kind but edge cases are left out on purpose to keep the needed code simple. Creating a generic module for RSS/ATOM parsing is not simple. So the design decision is to only incorporate logic that I need for the URLs I use.

Contribute

Great you want to contribute!

Simple Guidelines:

  • Questions, Feature Requests, Bug Reports please use on the Github Issue Tracker.

Security

Besides a manual code review, this project is checked with the static application security testing (SAST) tool: Python Code Audit.

But note: You should never parse untrusted XML data from unknown sources. So recommended is to validate the RSS feeds you want retrieve for parsing before using this or any library before parsing XML!

The used default Python libraries used in this module are considered safe, but parsing XML from malicious sites should never be done. All RSS readers have the same risk, so always practice security by design principles

Metadata

Release files for ultrafastrss 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ultrafastrss 1.0.0
File Size Uploaded Provenance Actions
ultrafastrss-1.0.0.tar.gz 49.5 kB Without provenance Details for ultrafastrss-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ultrafastrss 1.0.0
File Interpreter ABI Platform Actions
ultrafastrss-1.0.0-py3-none-any.whl Python 3 none any Details for ultrafastrss-1.0.0-py3-none-any.whl

Total release size: 63.1 kB

Release files / ultrafastrss-1.0.0.tar.gz

Download URL ultrafastrss-1.0.0.tar.gz
Size 49.5 kB
Tags Source
SHA-256 checksum
How to use checksums
4740fa7c3873ed4404ea4a8798f926d459a1d21dd151fc030610101d7ce7e27b
BLAKE2b-256 checksum
How to use checksums
26641a1ca8e0ac3185f6f54814a48ee5081383ec8340c6ec8c4d02d33ac51a4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.5 cpython/3.14.6 HTTPX/0.28.1

Release files / ultrafastrss-1.0.0-py3-none-any.whl

Download URL ultrafastrss-1.0.0-py3-none-any.whl
Size 13.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2fa230fc20032b5d7931c47425003da56dcedcd7c61b1b197381197d9eeb4020
BLAKE2b-256 checksum
How to use checksums
99fc4aabc5ac3628016266db586f9ad09c8fd2892f6723fd19c34d8901be7d06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.5 cpython/3.14.6 HTTPX/0.28.1

Security for ultrafastrss 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page