Sign inSign up

visesa84/acestream-scraper-outpace

By visesa84

•Updated about 8 hours ago

Get acestreams from multiple sites together into a single list, with Zeronet support. Multi-arc

Image
Networking
Web servers
Content management system
0

2.3K

visesa84/acestream-scraper-outpace repository overview

⁠Acestream Scraper PyAcexy

Code can be found here⁠

Acestream Scraper is a Flask application for collecting and organizing AceStream channel references, managing TV channels and EPG data, and serving playlists or stream links to compatible players. It stores application data in SQLite and provides a web UI and a REST API.

It does not provide channel content. Configure sources or channel IDs that you are entitled to use.

⁠What it does

  • Scrapes HTTP/HTTPS and ZeroNet sources for channel IDs and metadata.
  • Lets you add and manage channels, search the catalog, filter out unwanted entries, and check stream availability.
  • Supports a separate TV-channel catalog that can group multiple AceStream IDs for the same channel.
  • Imports XMLTV EPG sources, maps guide entries to TV channels, and displays schedules.
  • Generates M3U playlists and supports traditional and HLS stream modes.
  • Schedules program recordings and processes recording files with FFmpeg.
  • Exposes a Flask web interface and a REST API with Swagger documentation.
  • Runs Outpace stream services in the Docker image; the bundled AceStream search engine can be enabled separately. ZeroNet, Tor, and Cloudflare WARP are included as optional supporting services/features.

⁠Run with Docker Compose

The repository includes a Compose configuration with persistent mounts for the database/configuration, recordings, and ZeroNet data:

  1. Create a docker-compose.yml file:
version: '3.8'

services:
  acestream-scraper:
    image: visesa84/acestream-scraper-outpace:latest
    container_name: Acestream_Proxy
    cap_add:
      - NET_ADMIN
      - SYS_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv4.ip_forward=1
    environment:
      - TZ=Europe/Madrid
      - ENABLE_TOR=false
      - ENABLE_WARP=false
      - CONTAINER_NETWORK_MODE=host
      - WARP_LICENSE_KEY=
      - FLASK_PORT=8040
    ports:
      - "1935:1935"  # Outpace RTMP Port
      - "6878:6878"  # Outpace Port
      - "8040:8040"  # Flask application
      - "8621:8621"  # Outpace P2P Port
      - "8622:8622"  # Outpace P2P Port
      - "8625:8625"  # Acestream Search P2P Port
      - "43110:43110"  # ZeroNet UI
      - "43111:43111"  # ZeroNet peer
      - "26552:26552"  # ZeroNet peer
    volumes:
      - ./data/zeronet:/app/ZeroNet/data
      - ./data/config:/app/config
      - ./data/recordings:/app/config/recordings
    healthcheck:
      test: ["CMD", "/app/healthcheck.sh"]
      interval: 30s
      timeout: 10s
      retries: 3
  1. Start the service:

    docker-compose up -d
    

Open http://localhost:8040. On first launch, follow the setup wizard, then add sources or channels.

The checked-in docker-compose.yml⁠ is the reference for the image tag, environment, port mappings, and volumes used by this checkout. Review it before exposing the service on a network. The main web port is 8040; the Compose file also publishes the P2P, search-engine, and ZeroNet ports.

⁠Data and configuration

In the Docker image, /app/config is persistent application storage. It contains acestream.db and may contain config.json; recordings are stored in /app/config/recordings, and ZeroNet data is stored in /app/ZeroNet/data. Keep these mounts when replacing or updating a container.

Frequently used image environment variables:

VariableImage defaultPurpose
FLASK_PORT8040Web application port
TZEurope/MadridContainer timezone
ENABLE_TORfalseStart Tor for ZeroNet use
ENABLE_WARPfalseInitialize Cloudflare WARP; requires tunnel/network permissions
ENABLE_ACESTREAM_SEARCHtrueStart the bundled AceStream search service on port 6880 (P2P port 8625)
CHECKSTATUS_ENABLEDapplication settingEnable automatic stream checks

Application settings such as the playlist base URL, rescrape/check intervals, EPG refresh interval, and stream mode can be managed in the web UI. See Configuration⁠.

⁠Web pages and endpoints

  • Web UI: / (setup wizard on first run), /dashboard (channel catalog), /search, /config
  • TV channels and schedules: /tv-channels, /epg, /streams, /recordings
  • Playlist: /playlist.m3u; ?refresh=true requests source refresh and ?search=term filters the result
  • Swagger API documentation: /api/docs
  • Health API: /api/health/

⁠Runtime architecture

The image entrypoint starts the Flask/Gunicorn app, ZeroNet, and two Outpace processes (main stream listener on 6878 and a checker on 6879). It can also start the AceStream search engine. The Outpace peer listeners use 8621 and 8622; the search engine uses 8625. Tor and WARP are optional.

Older documentation referred to PyAcexy and to a built-in Acestream engine serving the main stream port. Those instructions do not describe the current entrypoint: the current stream services are Outpace, while the bundled AceStream process is used for search.

⁠Development

The project uses Python, Flask, SQLAlchemy, and Flask-Migrate. Install the dependencies from requirements.txt and requirements-prod.txt as appropriate, then run the WSGI application with a compatible server. The Docker image is the supported way to run the full set of bundled services.

⁠Documentation

⁠Acknowledgements

This project uses Flask, SQLAlchemy, BeautifulSoup, Outpace, ZeroNet, FFmpeg, and other open-source software. See the dependency manifests and upstream projects for their respective licenses.

Special thanks to the developers of Flask, BeautifulSoup, SQLAlchemy, and other dependencies used in this project.

Tag summary

Content type

Image

Digest

sha256:73df15e07…

Size

523.7 MB

Last updated

about 8 hours ago

docker pull visesa84/acestream-scraper-outpace