2025-04-13 08:23:22 +03:00
2025-04-07 19:17:04 +03:00
2025-04-13 08:23:22 +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
2025-04-07 12:36:56 +03:00
2025-04-07 12:36:56 +03:00
2024-01-07 14:37:31 +03:00
2025-04-07 11:15:05 +03:00
2025-04-13 08:16:13 +03:00

Icecast Ripper

A Go application that monitors and records Icecast audio streams. It detects when streams go live, automatically records the audio content, and generates an RSS feed of recordings.

Features

  • Automatic Stream Monitoring: Periodically checks if a stream is active
  • Intelligent Recording: Records audio streams when they become active
  • RSS Feed Generation: Provides an RSS feed of recorded streams
  • Web Interface: Simple HTTP server for accessing recordings and RSS feed
  • Docker Support: Run easily in containers with Docker and Docker Compose
  • Configurable: Set recording paths, check intervals, and more via environment variables

Installation

Binary Installation

  1. Download the latest release from the GitHub releases page
  2. Extract the binary to a location in your PATH
  3. Run the binary with the required configuration (see Configuration section)

Docker Installation

Pull the Docker image:

docker pull ghcr.io/kemko/icecast-ripper:master

Or use Docker Compose (see the Docker Compose section below).

Building From Source

Requires Go 1.24 or higher.

git clone https://github.com/kemko/icecast-ripper.git
cd icecast-ripper
go build -o icecast-ripper ./cmd/icecast-ripper/main.go

Configuration

Icecast Ripper is configured through environment variables:

Environment Variable Description Default Required
STREAM_URL URL of the Icecast stream to monitor - Yes
CHECK_INTERVAL Interval between stream checks (e.g., 1m, 30s) 1m No
RECORDINGS_PATH Path where recordings are stored ./recordings No
TEMP_PATH Path for temporary files ./temp No
BIND_ADDRESS Address and port for the HTTP server :8080 No
PUBLIC_URL Public URL for the RSS feed http://localhost:8080 No
LOG_LEVEL Logging level (debug, info, warn, error) info No

Docker Compose

Create a docker-compose.yml file:

---
services:
  icecast-ripper:
    image: ghcr.io/kemko/icecast-ripper:master
    ports:
      - "8080:8080"
    environment:
      - STREAM_URL=http://example.com/stream
      - CHECK_INTERVAL=1m
      - RECORDINGS_PATH=/records
      - TEMP_PATH=/app/temp
      - SERVER_ADDRESS=:8080
      - RSS_FEED_URL=http://localhost:8080/rss
      - LOG_LEVEL=info
    volumes:
      - ./records:/records
      - ./temp:/app/temp
      - ./data:/app/data

Run with:

docker-compose up -d

Usage

  1. Start the application with the required configuration
  2. The application will monitor the stream at the specified interval
  3. When the stream becomes active, recording starts automatically
  4. Access the RSS feed at http://localhost:8080/rss (or the configured URL)
  5. Access the recordings directly via the web interface

API Endpoints

  • GET / - Lists all recordings
  • GET /rss - RSS feed of recordings
  • GET /recordings/{filename} - Download a specific recording

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%