# nostcat [![Crates.io](https://img.shields.io/crates/v/nostcat)](https://crates.io/crates/nostcat) [![Crates.io](https://img.shields.io/crates/d/nostcat)](https://crates.io/crates/nostcat) [![Crates.io](https://img.shields.io/crates/l/nostcat)](https://github.com/blakejakopovic/nostcat/blob/master/LICENSE) Websocket client for nostr relay scripting ## Examples Using interactive input ```shell $ nostcat wss://relay.damus.io ["REQ", "RAND", {"kinds": [1], "limit": 8}] ``` Using stdin (supports multiple lines of commands) ```shell $ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' | nostcat wss://relay.damus.io $ cat commands.txt ["REQ", "RAND", {"kinds": [1], "limit": 2}] ["REQ", "RAND2", {"kinds": [2], "limit": 2}] $ cat commands.txt | nostcat wss://relay.damus.io ``` Using jq to query Nostr JSON events and select the event JSON ```shell $ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' | nostcat wss://relay.damus.io | jq '.[2]' $ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' | nostcat wss://relay.damus.io | jq '.[2].content' ``` Unique (dedupe) results as they come in (note: no longer applies sorting events - FIFO) ```shell $ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' | nostcat --unique wss://relay.damus.io wss://nostr.ono.re ``` With a websocket connection timeout in milliseconds ```shell $ echo '["REQ", "RAND", {"kinds": [1], "limit": 2}]' | nostcat --connect-timeout 250 wss://relay.damus.io ``` Stream websocket data (like tail -f) ```shell $ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' | nostcat --stream wss://relay.damus.io ``` Output info log messages which can assist with debugging ```shell $ echo '["REQ", "RAND", {"kinds": [1], "limit": 8}]' | RUST_LOG=info nostcat wss://relay.damus.io ``` Pipe events from one server to another (currently limited to 1 event at a time) ```shell $ echo '["REQ", "CID", {"limit": 1}]' | nostcat wss://relay.damus.io | jq -c 'del(.[1])' | nostcat wss://nostr.ono.re ``` Pipe events from one server to another (for multiple events, `ctrl-C` when finished) ```shell $ echo '["REQ", "CID", {"limit": 3}]' | nostcat wss://relay.damus.io | jq -c 'del(.[1])' | nostcat --stream wss://nostr.ono.re ``` ## Getting started Using Cargo to install (requires ~/.cargo/bin to be in PATH) ```shell $ cargo install nostcat ``` Building from source (may be unstable) ```shell $ git clone https://github.com/blakejakopovic/nostcat $ cargo build --release ```