dependabot[bot] 0f1baa900f Bump actions/setup-go from 5 to 6 (#29)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 6.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-09 09:56:24 +03:00
2025-04-07 12:47:36 +03:00
2024-03-17 15:14:40 +03:00
2025-04-07 13:27:12 +03:00
2025-04-07 12:47:36 +03:00
2025-04-07 13:27:12 +03:00
2025-04-07 19:21:20 +03:00
2024-01-07 14:37:31 +03:00
2025-04-07 11:15:05 +03:00

Icecast Ripper

A lightweight Go application that automatically monitors Icecast audio streams, records them when they go live, and serves recordings via an RSS feed for podcast clients.

Features

  • Smart Stream Detection: Monitors Icecast streams and detects when they go live
  • Automatic Recording: Records live streams to MP3 files with timestamps
  • Podcast-Ready RSS Feed: Generates an RSS feed compatible with podcast clients
  • Web Server: Built-in HTTP server for accessing recordings and RSS feed
  • Containerized: Ready to run with Docker and Docker Compose
  • Configurable: Easy configuration via environment variables

Quick Start

Using Docker

docker run -d \
  --name icecast-ripper \
  -p 8080:8080 \
  -e STREAM_URL=http://example.com:8000/stream \
  -v ./recordings:/recordings \
  ghcr.io/kemko/icecast-ripper:latest

Using Docker Compose

services:
  icecast-ripper:
    image: ghcr.io/kemko/icecast-ripper:latest
    ports:
      - "8080:8080"
    environment:
      - STREAM_URL=http://example.com:8000/stream
      - PUBLIC_URL=https://your-domain.com  # For RSS feed links
    volumes:
      - ./recordings:/recordings

Running the Binary

Download the latest release and run:

export STREAM_URL=http://example.com:8000/stream
./icecast-ripper

Configuration

Configure Icecast Ripper with these environment variables:

Variable Description Default Required
STREAM_URL URL of the Icecast stream to monitor - Yes
CHECK_INTERVAL How often to check if the stream is live 1m No
RECORDINGS_PATH Where to store recordings ./recordings No
TEMP_PATH Where to store temporary files /tmp No
BIND_ADDRESS HTTP server address:port :8080 No
PUBLIC_URL Public URL for RSS feed links http://localhost:8080 No
LOG_LEVEL Logging level (debug, info, warn, error) info No

Endpoints

  • GET /rss - RSS feed of recordings (for podcast apps)
  • GET /recordings/ - Direct access to stored recordings

Building From Source

Requires Go 1.22 or higher:

git clone https://github.com/kemko/icecast-ripper.git
cd icecast-ripper
make build

How It Works

  1. The application checks if the specified Icecast stream is live
  2. When the stream is detected as live, recording begins
  3. Recording continues until the stream ends or is interrupted
  4. Recordings are saved with timestamps in the configured directory
  5. The RSS feed is automatically updated with new recordings

License

This project is licensed under the MIT License - see the LICENSE file for details.

Description
No description provided
Readme MIT 5.2 MiB
Languages
Go 93.3%
Dockerfile 3.7%
Makefile 3%