All source code single file
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
# Alby Command-line Boosting App
|
||||
|
||||
# boostagram
|
||||
|
||||
A command-line tool for sending [Podcasting 2.0](https://podcastindex.org/) boostagrams via [AlbyHub](https://github.com/getAlby/hub). The following workflow has been confirmed on NixOS, but should work about the same on other distros.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- NixOS with AlbyHub installed and funded (channels open)
|
||||
- Network access to the AlbyHub machine
|
||||
- Python 3 and Node.js available on the sending machine
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Add packages to configuration.nix
|
||||
|
||||
```nix
|
||||
environment.systemPackages = with pkgs; [
|
||||
nodejs
|
||||
(python3.withPackages (ps: with ps; [ feedparser ]))
|
||||
];
|
||||
```
|
||||
|
||||
Rebuild:
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch
|
||||
```
|
||||
|
||||
### 2. Connect the Alby CLI to AlbyHub
|
||||
|
||||
You have two options:
|
||||
|
||||
#### Option A: Auth flow (recommended if you have HTTPS)
|
||||
|
||||
```bash
|
||||
npx @getalby/cli auth https://YOUR_ALBYHUB_ADDRESS --app-name "boostagram"
|
||||
```
|
||||
|
||||
Open the URL it prints in your browser, approve the connection in AlbyHub, then:
|
||||
|
||||
```bash
|
||||
npx @getalby/cli auth --complete
|
||||
```
|
||||
|
||||
#### Option B: NWC connection string (works without HTTPS)
|
||||
|
||||
1. Open the AlbyHub web UI in your browser
|
||||
2. Go to **Apps** or **NWC Connections**
|
||||
3. Create a new connection named "boostagram"
|
||||
4. Copy the `nostr+walletconnect://...` string
|
||||
5. Paste it into the CLI:
|
||||
|
||||
```bash
|
||||
npx @getalby/cli connect "nostr+walletconnect://YOUR_CONNECTION_STRING"
|
||||
```
|
||||
|
||||
### 3. Place the script
|
||||
|
||||
Copy `boostagram` somewhere in your `$PATH` (e.g. `~/bin/` or `/usr/local/bin/`):
|
||||
|
||||
```bash
|
||||
cp boostagram ~/bin/boostagram
|
||||
chmod +x ~/bin/boostagram
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
boostagram --feed <RSS_FEED_URL> --amount <SATS> --message "<TEXT>" --sender "<NAME>"
|
||||
```
|
||||
|
||||
### Required flags
|
||||
|
||||
| Flag | Description |
|
||||
|------|-------------|
|
||||
| `--feed` | Podcast RSS feed URL |
|
||||
| `--amount` | Total sats to boost (split across recipients automatically) |
|
||||
| `--sender` | Your display name |
|
||||
|
||||
### Optional flags
|
||||
|
||||
| Flag | Description | Default |
|
||||
|------|-------------|---------|
|
||||
| `--message` | Boostagram message text | (none) |
|
||||
| `--episode` | Episode title to boost (partial match, case-insensitive) | Latest episode |
|
||||
| `--ts` | Playback position in seconds | (none) |
|
||||
| `--app-name` | App name in the boostagram metadata | `boostagram` |
|
||||
|
||||
### Examples
|
||||
|
||||
Boost the last available episode:
|
||||
|
||||
```bash
|
||||
python ./boostagram --feed https://linuxunplugged.com/rss --amount 608221 --message "Dis me massage." --sender "poopie mcfartweiner"
|
||||
```
|
||||
|
||||
Boost a specific episode:
|
||||
|
||||
```bash
|
||||
boostagram --feed https://linuxunplugged.com/rss \
|
||||
--amount 500 \
|
||||
--message "Loved this episode!" \
|
||||
--sender "YourName" \
|
||||
--episode "Oops! All Shells"
|
||||
```
|
||||
|
||||
### How it works
|
||||
|
||||
1. Fetches the RSS feed and finds the `<podcast:value>` block
|
||||
2. If `--episode` is given, matches against episode titles; otherwise uses the latest episode
|
||||
3. Splits the sats across all recipients defined in the feed's value block
|
||||
4. Constructs a BLIP-0010 boostagram JSON payload
|
||||
5. Sends a keysend payment to each recipient via the Alby CLI with the boostagram attached as TLV record 7629169
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**"error: no \<podcast:value\> block found in feed"**
|
||||
The podcast doesn't support Podcasting 2.0 value blocks. Not all podcasts have this.
|
||||
|
||||
**"Timed out waiting for wallet approval"**
|
||||
The Alby CLI isn't authenticated. Run the auth flow from step 2 above.
|
||||
|
||||
**Auth URL won't load in browser**
|
||||
Use the Tailscale IP instead of the hostname, or use Option B (NWC connection string).
|
||||
|
||||
**Payments fail individually**
|
||||
Check your AlbyHub has sufficient channel balance. Each recipient split is sent as a separate keysend payment.
|
||||
|
||||
Reference in New Issue
Block a user