Skip to main content

Filter public RSS feeds, remove articles that contain certain keywords or categories.

Project description

django-rss-filter

This is a Django app that creates filtered RSS feeds. It does this by filtering existing RSS feeds, removing articles that match filtered words and/or filtered categories. It's what powers https://www.rssfilter.com.

It comes with one view that returns the filtered feed XML, as well as Django Admin configuration to make it possible and easy to self-host your own instance of django-rss-filter. It does not come with views to create or edit filtered feeds; this can be done using the Django Admin.

What is this?

This is a plugin (an "app") for the Django web framework. It is not a standalone application ready to deploy, and requires a Django project to run.

If you are a Django developer: You're in the right place! Skip to the "Getting started" section to integrate this app into your project.

If you just want ready-to-use RSS filtering: Simply use https://www.rssfilter.com which has user-friendly ways to create and edit filtered RSS feeds.

Getting started

All instructions use uv, but should work just as well with pip or Poetry for example.

In an existing Django project:

  1. Install: uv add django-rss-filter
  2. Add rssfilter to INSTALLED_APPS
  3. uv run ./manage.py migrate
  4. Include the URL config: path("", include("rssfilter.urls"))

If you don't have a Django project yet, these are the steps to get started:

  1. uv init my-django-project
  2. cd my-django-project
  3. uv add django
  4. uv run django-admin startproject my_django_app .
  5. uv run ./manage.py migrate
  6. uv run ./manage.py createsuperuser
  7. uv run ./manage.py runserver

This will get you up and running with a working Admin site at http://127.0.0.1:8000/admin/.

Then follow the first four steps to add django-rss-filter to your Django project.

How to run the example project

There's an example Django project using django-rss-filter under example/.

All instructions use uv, but should work just as well with pip or Poetry for example.

  1. Clone this repository and navigate into the example project folder:

    git clone https://github.com/loopwerk/django-rss-filter.git
    cd django-rss-filter/example
    
  2. Set up the database and create an admin user:

    uv run ./manage.py migrate
    uv run ./manage.py createsuperuser
    
  3. Run the server:

    uv run ./manage.py runserver
    
  4. You're done! You can now go to http://127.0.0.1:8000/admin/ to create a feed using the superuser account you just created. You can then access the filtered feed at http://127.0.0.1:8000/[feed_uuid]/.

Settings

There is one setting that can be configured: RSS_FILTER_CACHE_SECONDS. The default value is 300 (5 minutes).

This setting controls how long a feed will be cached before it's fetched, filtered, and stored again.

Tests

Unit tests can be run with uv run pytest.

About Feature Requests

This project is feature-complete — it does what I needed it to do, and I’m not actively looking to expand its functionality.

I’m not accepting feature requests via issues. Please understand that asking for new features is essentially asking for free work — not just to build something, but to maintain it over time. And since I don’t personally need those features, I’m unlikely to invest time in them.

If you’d like to add a new feature, you’re welcome to open a pull request. Just know that I’ll evaluate it carefully, because even merged contributions become part of what I maintain. To avoid spending time on a PR that may not be accepted, I recommend starting a discussion first — that way we can talk through the idea and see if it fits.

This approach helps me avoid burnout and keep the project sustainable. Thanks for understanding!

Support

Commercial support is available via Loopwerk.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_rss_filter-0.15.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_rss_filter-0.15.0-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file django_rss_filter-0.15.0.tar.gz.

File metadata

  • Download URL: django_rss_filter-0.15.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for django_rss_filter-0.15.0.tar.gz
Algorithm Hash digest
SHA256 8f73a4974b482f01f734ece9b68ddf59a5d7ce17f99d17cd5e7d61abe1373bc9
MD5 cf27b878947fd7ddb3943d745dc7ef64
BLAKE2b-256 9ca21df03a44f60878fbaa368c6994cb47684cb5cdb0617fb957011322f032f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_rss_filter-0.15.0.tar.gz:

Publisher: release.yml on loopwerk/django-rss-filter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_rss_filter-0.15.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_rss_filter-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a1e758fe3dafc5a584a6353b0000779b8db88c1bd97b705238359551729135f9
MD5 f12d1203c3cc4b84161aeebcb8fadd19
BLAKE2b-256 c2370a2a2d71c371891b21dec03de0f2107344ab0e786f6ce6f61b804c2f842d

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_rss_filter-0.15.0-py3-none-any.whl:

Publisher: release.yml on loopwerk/django-rss-filter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page