1
Fork 0

Add OPML output option.

This commit is contained in:
Bauke 2022-09-21 16:18:53 +02:00
parent 41e1b2aaf6
commit f27795fcfe
Signed by: Bauke
GPG Key ID: C1C0F29952BCF558
3 changed files with 103 additions and 1 deletions

88
Cargo.lock generated
View File

@ -215,6 +215,30 @@ version = "0.26.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d"
[[package]]
name = "hard-xml"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3477ce594ff6d821c38fc3f8d28744b9bac0340c94b152ebb0f8a1fd5b740f54"
dependencies = [
"hard-xml-derive",
"jetscii",
"lazy_static",
"memchr",
"xmlparser",
]
[[package]]
name = "hard-xml-derive"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3aa4585e2b133d2479ff3f03febd76972234cc04b40cdb374fab11a7f7b797ca"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
@ -273,6 +297,12 @@ dependencies = [
"unicode-width",
]
[[package]]
name = "jetscii"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47f142fe24a9c9944451e8349de0a56af5f3e7226dc46f3ed4d4ecc0b85af75e"
[[package]]
name = "js-sys"
version = "0.3.60"
@ -339,6 +369,17 @@ version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
[[package]]
name = "opml"
version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d41b8c4211bfa2e51d1910dbad2b4740e06486ece44de3fd9c7512f009ff9e99"
dependencies = [
"hard-xml",
"serde",
"thiserror",
]
[[package]]
name = "os_str_bytes"
version = "6.3.0"
@ -448,6 +489,26 @@ dependencies = [
"untrusted",
]
[[package]]
name = "serde"
version = "1.0.144"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.144"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "sharded-slab"
version = "0.1.4"
@ -470,6 +531,7 @@ dependencies = [
"clap",
"color-eyre",
"indicatif",
"opml",
"ureq",
]
@ -515,6 +577,26 @@ version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16"
[[package]]
name = "thiserror"
version = "1.0.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c53f98874615aea268107765aa1ed8f6116782501d18e53d08b471733bea6c85"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8b463991b4eab2d801e724172285ec4195c650e8ec79b149e6c2a8e6dd3f783"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "thread_local"
version = "1.1.4"
@ -767,3 +849,9 @@ name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "xmlparser"
version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "114ba2b24d2167ef6d67d7d04c8cc86522b87f490025f39f0303b7db5bf5e3d8"

View File

@ -14,6 +14,7 @@ path = "source/main.rs"
[dependencies]
color-eyre = "0.6.2"
indicatif = "0.17.1"
opml = "1.1.4"
ureq = "2.5.0"
[dependencies.clap]

View File

@ -23,6 +23,10 @@ pub struct Args {
#[clap(short, long)]
pub appid: Vec<usize>,
/// Output the feeds as OPML.
#[clap(long)]
pub opml: bool,
/// The time in milliseconds to sleep between HTTP requests.
#[clap(short, long, default_value = "250")]
pub timeout: u64,
@ -66,9 +70,18 @@ fn main() -> Result<()> {
feeds_to_output = potential_feeds;
}
let mut opml_document = opml::OPML::default();
for feed in feeds_to_output {
if args.opml {
opml_document.add_feed(&feed, &feed);
} else {
println!("{feed}");
}
}
if args.opml {
println!("{}", opml_document.to_string()?);
}
Ok(())
}