An open API service indexing awesome lists of open source software.

https://github.com/YGGverse/pulsarss

RSS Aggregator for Gemini Protocol
https://github.com/YGGverse/pulsarss

aggregator cli crawler daemon feed gemini gemini-protocol gemtext parser rss rust

Last synced: 6 days ago
JSON representation

RSS Aggregator for Gemini Protocol

Awesome Lists containing this project

README

          

# pulsarss

![Build](https://github.com/YGGverse/pulsarss/actions/workflows/build.yml/badge.svg)
[![Dependencies](https://deps.rs/repo/github/YGGverse/pulsarss/status.svg)](https://deps.rs/repo/github/YGGverse/pulsarss)
[![crates.io](https://img.shields.io/crates/v/pulsarss.svg)](https://crates.io/crates/pulsarss)

## RSS Aggregator for [Gemini Protocol](https://geminiprotocol.net/)

`pulsarss` is a multi-process crawler for RSS feeds, that collects and converts results into the static [gemtext](https://geminiprotocol.net/docs/gemtext.gmi) files; also aggregates an actual `index.gmi` file in the relevant folders organized by channel / item `pub_date`.

> [!NOTE]
> At this moment, `pulsarss` does not provide any built-in server. To read the data collected, use any server for static files listed in the [awesome-gemini](https://github.com/kr1sp1n/awesome-gemini#servers)

## Install

``` bash
cargo install pulsarss
```

## Launch

``` bash
pulsarss --source https://path/to/feed.rss --index index.gmi
```

### Options

``` bash
pulsarss --help
```

### Autostart

#### systemd

1. Install `pulsarss` by copy the binary compiled into the native system apps destination:

* Linux: `sudo install /home/user/.cargo/bin/pulsarss /usr/local/bin/pulsarss`

2. Create `systemd` configuration file:

``` pulsarss.service
# /etc/systemd/system/pulsarss.service

[Unit]
After=network-online.target
Wants=network-online.target

[Service]
Type=simple

User=pulsarss
Group=pulsarss

# Uncomment for debug
# Environment="RUST_LOG=debug"
# Environment="NO_COLOR=1"

ExecStart=/usr/local/bin/pulsarss -s https://path/to/feed.rss -i index.gmi

StandardOutput=file:///home/pulsarss/debug.log
StandardError=file:///home/pulsarss/error.log

[Install]
WantedBy=multi-user.target
```
* example above requires new system user (`useradd -m pulsarss`)

3. Run in priority:

* `systemctl daemon-reload` - reload systemd configuration
* `systemctl enable pulsarss` - enable new service
* `systemctl start pulsarss` - start the process
* `systemctl status pulsarss` - check process launched