New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

swiss-rss

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

swiss-rss

RSS web feeds swiss army knife

  • 0.1.2
  • PyPI
  • Socket score

Maintainers
1

Swiss RSS

PyPI PyPI - Python Version PyPI - License

RSS web feeds swiss army knife

Features

  • RSS/Atom feed parsing and discovery
  • Website favicon download and conversion
  • OPML feed list parsing
  • Timestamp parsing for multiple formats

Installation

pip install swiss-rss

Usage

Web Feeds

import asyncio
from swiss_rss.web_feeds import parse_feed_from_url, discover_feed

async def main():
    try:
        # Find and parse a feed
        feed_url = await discover_feed("https://2ality.com")
        if not feed_url:
            print("No feed found")
            return

        print(f"Found feed: {feed_url}")
        feed = await parse_feed_from_url(feed_url)

        # Access feed data
        print(f"Title: {feed.title}")
        if feed.items:
            print(f"Latest post: {feed.items[0].title}")
    except Exception as e:
        print(f"Error: {e}")

asyncio.run(main())

Favicons

from swiss_rss.favicons.favicon_parser import download_favicon

try:
    # Download and convert favicon to 32x32 PNG
    favicon_data = download_favicon("https://example.com")
    if favicon_data:
        with open("favicon.png", "wb") as f:
            f.write(favicon_data)
except Exception as e:
    print(f"Error downloading favicon: {e}")

OPML

from swiss_rss.opml.opml_parser import parse_opml

try:
    with open("feeds.opml") as f:
        feeds = parse_opml(f.read())

    for feed in feeds:
        print(f"Feed: {feed.title} ({feed.xml_url})")
except Exception as e:
    print(f"Error parsing OPML: {e}")

Timestamps

from swiss_rss.timestamps.timestamp_parser import parse_date

# Supports RFC 822, ISO 8601 and other common formats
date = parse_date("Sat, 03 Jun 2023 10:00:00 GMT")
print(f"Parsed date: {date}")

Additional Web Feed Features

from swiss_rss.web_feeds import parse_feed, FeedInfo, FeedItem

# Parse feed content directly
feed_content = '''<?xml version="1.0"?>
<rss version="2.0">
    <!-- RSS content here -->
</rss>'''

feed = parse_feed(feed_content)
# Access additional fields
for item in feed.items:
    print(f"Author: {item.author}")
    print(f"ID: {item.id}")

Additional Favicon Features

from swiss_rss.favicons.favicon_parser import (
    convert_to_png,
    resize_favicon,
    decode_base64_image
)

# Convert image to PNG
png_data = convert_to_png(image_data)

# Resize favicon with custom size
resized_data = resize_favicon(favicon_data, size=64)

# Handle base64 encoded images
image_data = decode_base64_image("data:image/png;base64,...")

Development

  1. Clone the repository and install dependencies:
git clone https://github.com/aluxian/swiss-rss.git
cd swiss-rss
uv venv
source .venv/bin/activate
uv sync
  1. Run linting checks:
uv run ruff check .
  1. Run tests:
uv run pytest
  1. Start Aider:
uvx --python 3.12 --from 'aider-chat[playwright]' --with 'aider-chat[help]' aider

Keywords

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc