From 6c5e005cf897af46dd11c964f987cef9c853d471 Mon Sep 17 00:00:00 2001 From: yggverse Date: Wed, 3 Sep 2025 13:35:23 +0300 Subject: [PATCH] add gemtext support, update debug handler, reorganize api to use with file-based multi-feed config, update version to 0.2 --- .gitignore | 1 + Cargo.toml | 11 +- README.md | 57 ++++------ config/example.toml | 19 ++++ src/argument.rs | 35 +------ src/config.rs | 32 ++++++ src/debug.rs | 48 --------- src/format.rs | 57 ---------- src/main.rs | 189 ++++++++++++++++++++-------------- src/target.rs | 25 ----- src/time.rs | 29 ------ template/gmi/index.gmi | 7 ++ template/gmi/index/item.gmi | 6 ++ template/html/index/item.html | 2 +- 14 files changed, 210 insertions(+), 308 deletions(-) create mode 100644 config/example.toml create mode 100644 src/config.rs delete mode 100644 src/debug.rs delete mode 100644 src/format.rs delete mode 100644 src/target.rs delete mode 100644 src/time.rs create mode 100644 template/gmi/index.gmi create mode 100644 template/gmi/index/item.gmi diff --git a/.gitignore b/.gitignore index 869df07..daab55e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +/public /target Cargo.lock \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index bde31ef..251ff04 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "rssto" -version = "0.1.0" +version = "0.2.0" edition = "2024" license = "MIT" readme = "README.md" -description = "Aggregate RSS feeds into different formats" -keywords = ["rss", "aggregator", "convertor", "conversion", "static"] +description = "Convert RSS feeds into multiple formats" +keywords = ["rss", "aggregator", "conversion", "html", "gemtext"] categories = ["command-line-utilities", "parsing", "text-processing", "value-formatting"] repository = "https://github.com/YGGverse/rssto" @@ -13,5 +13,10 @@ repository = "https://github.com/YGGverse/rssto" anyhow = "1.0" chrono = "^0.4.20" clap = { version = "4.5", features = ["derive"] } +log = "0.4" reqwest = { version = "0.12", features = ["blocking"] } rss = "2.0" +serde = { version = "1.0", features = ["derive"] } +toml = "0.9" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +url = "2.5" diff --git a/README.md b/README.md index 2c739db..5698ce5 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,14 @@ [![Dependencies](https://deps.rs/repo/github/YGGverse/rssto/status.svg)](https://deps.rs/repo/github/YGGverse/rssto) [![crates.io](https://img.shields.io/crates/v/rssto.svg)](https://crates.io/crates/rssto) -## Aggregate RSS feeds into different formats - -A simple multi-source feed aggregator that outputs static files in multiple formats. +Convert RSS feeds into multiple formats ## Roadmap * [x] HTML +* [x] [Gemtext](https://geminiprotocol.net/docs/gemtext.gmi) +* [ ] JSON * [ ] Markdown -* [ ] Gemtext ## Install @@ -23,27 +22,12 @@ cargo install rssto ## Launch ``` bash -rssto --source https://path/to/source1.rss\ - --target /path/to/source1dir\ - --source https://path/to/source2.rss\ - --target /path/to/source2dir\ - --format html -``` - -### Options - -``` bash --d, --debug Show output (`d` - debug, `e` - error, `i` - info) [default: ei] --f, --format Export formats (`html`,`md`,etc.) [default: html] --l, --limit Limit channel items (unlimited by default) --s, --source RSS feed URL(s) - --target Destination directory - --template