Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yggverse/pulsar
RSS aggregator for different protocols
https://github.com/yggverse/pulsar
1900 1965 aggregator composer converter gemini gemini-protocol gemini-rss gemtext nex nex-protocol ratchet rss sqlite
Last synced: 1 day ago
JSON representation
RSS aggregator for different protocols
- Host: GitHub
- URL: https://github.com/yggverse/pulsar
- Owner: YGGverse
- License: mit
- Created: 2024-04-19T13:00:35.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-05-07T05:50:02.000Z (6 months ago)
- Last Synced: 2024-08-03T17:10:12.512Z (3 months ago)
- Topics: 1900, 1965, aggregator, composer, converter, gemini, gemini-protocol, gemini-rss, gemtext, nex, nex-protocol, ratchet, rss, sqlite
- Language: PHP
- Homepage:
- Size: 47.9 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pulsar
RSS aggregator for different protocols
See also [alternative branch](https://github.com/YGGverse/Pulsar/tree/fs) to generate static `gemtext`
## Features
* [x] `src/crawler.php` - scan configured RSS feeds and dump results to SQLite
* [ ] `src/cleaner.php` - auto clean deprecated records
* [x] `src/server.php` - server launcher for different protocols:
* [x] [NEX](https://nightfall.city/nex/info/specification.txt) - based on [Ratchet](https://github.com/ratchetphp/Ratchet) `IoServer` asynchronous socket library
* [ ] [Gemini](https://geminiprotocol.net)## Example
* `nex://[301:23b4:991a:634d::feed]` - [Yggdrasil](https://github.com/yggdrasil-network/yggdrasil-go) instance by YGGverse
## Install
1. `apt install git composer php-fpm php-sqlite3 php-pdo php-mbstring` - install system dependencies
2. `git clone https://github.com/YGGverse/Pulsar.git` - get latest Pulsar version
3. `cd Pulsar` - navigate project folder
4. `composer update` - install application dependencies
5. `cp config/example.json config/name.json` - setup your feed## Crawler
* `php src/crawler.php config=name.json` - crawl feeds configured by `name.json` - manually or using crontab
* `config` - relative (to `config` folder) or absolute path to configuration file## Server
Launch as many servers as wanted, for different protocols and configurations (provided as the arguments)
* `php src/server.php protocol=nex config=name.json` - launch `nex` protocol server with `name.json` config
* `config` - relative (`config` folder) or absolute path to configuration file
* `protocol` - server protocol, supported options:
* `nex` - [NEX Protocol](https://nightfall.city/nex/info/specification.txt)### Autostart
#### systemd
Launch server as the systemd service
Following example mean application installed into the home directory of `pulsar` user (`useradd -m pulsar`)
``` pulsar.service
# /etc/systemd/system/pulsar.service[Unit]
After=network.target[Service]
Type=simple
User=pulsar
Group=pulsar
ExecStart=/usr/bin/php /home/pulsar/Pulsar/src/server.php protocol=nex config=name.json
StandardOutput=file:/home/pulsar/debug.log
StandardError=file:/home/pulsar/error.log
Restart=on-failure[Install]
WantedBy=multi-user.target
```* `sudo systemctl daemon-reload` - reload systemd configuration
* `sudo systemctl enable pulsar` - enable service on system startup
* `sudo systemctl start pulsar` - start server