Spaces:
Running
Running
Download Dockerfile from Reoo88/Prayer-Time-Bot: direct link, hf CLI and curl.
- Browser
- Download file 2.83 kB
-
https://huggingface.co/spaces/Reoo88/Prayer-Time-Bot/resolve/main/Dockerfile
- Command line
-
hf download hf://spaces/Reoo88/Prayer-Time-Bot/Dockerfile
-
curl -L -o Dockerfile https://huggingface.co/spaces/Reoo88/Prayer-Time-Bot/resolve/main/Dockerfile
2.83 kB
| FROM python:3.11-slim-trixie | |
| # ffmpeg only. Recording/remux packages are not installed. | |
| RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg ca-certificates tzdata && rm -rf /var/lib/apt/lists/* | |
| RUN ffmpeg -hide_banner -h protocol=rtmps 2>&1 | grep -q rtmp_enhanced_codecs | |
| WORKDIR /app | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -U -r requirements.txt | |
| COPY app.py relay.py youtube_api.py youtube_manager.py flv_bridge.py stream_monitor.py telemetry.py tiktok_auth.py ingest.py index.html ./ | |
| COPY verify.sh verify_tokens.py probe_live.py test_watchdog.py test_lifecycle.py test_relay.py test_source_reconnect.py test_ingest_routes.py test_transition_ingest.py test_concurrency.py test_flv_bridge.py test_adaptive_format.py test_regressions.py test_completion.py test_channel_switch.py test_dashboard.js test_telemetry.py test_smart_mode.py ./ | |
| # TikTok Live Monitor → Direct Relay → YouTube. No local video files. | |
| ENV TZ=Asia/Baghdad \ | |
| CHECK_INTERVAL=20 \ | |
| SOURCE_STALL_TIMEOUT=12 \ | |
| YOUTUBE_SOURCE_STALL_SECONDS=12 \ | |
| MAX_CONCURRENT_RELAYS=4 \ | |
| YOUTUBE_MAX_EVENTS=4 \ | |
| YOUTUBE_LIGHT_MAX=0 \ | |
| YOUTUBE_TITLE_TEMPLATE="{broadcaster} | {date} {time}" \ | |
| YOUTUBE_SEND_MODE=auto \ | |
| YOUTUBE_AUTO_TRANSCODE=0 \ | |
| YOUTUBE_AUDIO_PROFILE=aac_low \ | |
| YOUTUBE_AUDIO_BITRATE=128k \ | |
| YOUTUBE_AUDIO_CHANNELS=2 \ | |
| YOUTUBE_GOP=60 \ | |
| YOUTUBE_INPUT_RECOVERY=1 \ | |
| YOUTUBE_PREFER_H264=1 \ | |
| YOUTUBE_CODEC_FALLBACK_MODE=matchgop \ | |
| YOUTUBE_RETRY_MIN=1 \ | |
| YOUTUBE_RETRY_MAX=60 \ | |
| YOUTUBE_SOURCE_LIMIT=6 \ | |
| YOUTUBE_SOURCE_UPGRADE_SECONDS=300 \ | |
| YOUTUBE_FLAP_LIMIT=4 \ | |
| YOUTUBE_FLAP_FALLBACK_MODE=matchgop \ | |
| YOUTUBE_COPY_RECOVERY=1 \ | |
| YOUTUBE_COPY_RECOVERY_SECONDS=60 \ | |
| YOUTUBE_X264_PRESET=ultrafast \ | |
| YOUTUBE_FIFO_TIMESHIFT=0 \ | |
| YOUTUBE_HEALTH_INTERVAL=20 \ | |
| TELEMETRY_ENABLED=1 \ | |
| YOUTUBE_IDLE_RESET_SECONDS=600 \ | |
| STREAM_EVENT_MAX=10000 \ | |
| YOUTUBE_OBS_HOLD_SECONDS=900 \ | |
| YOUTUBE_SOURCE_RETRY=15 \ | |
| YOUTUBE_FORCE_GAP=5 \ | |
| YOUTUBE_END_GRACE=40 \ | |
| YOUTUBE_REUSE_IDLE=90 \ | |
| YOUTUBE_STABLE_SECONDS=25 \ | |
| YOUTUBE_FFMPEG_LOGLEVEL=info \ | |
| YOUTUBE_SOURCE_READ_TIMEOUT=15 \ | |
| YOUTUBE_SOURCE_READ_ATTEMPTS=3 \ | |
| YOUTUBE_REATTACH_GRACE_SECONDS=2 \ | |
| YOUTUBE_PROGRESS_STALL_SECONDS=60 \ | |
| YOUTUBE_KILL_GRACE_SECONDS=10 \ | |
| YOUTUBE_PUMP_JOIN_SECONDS=2 \ | |
| YOUTUBE_AUTH_PAUSE_SECONDS=90 \ | |
| YOUTUBE_SESSION_MAX_SECONDS=21600 \ | |
| YOUTUBE_ENHANCED_RTMP=auto \ | |
| YOUTUBE_SOURCE_GAP_SUSPECT_SECONDS=8 \ | |
| TIKTOK_TT_TARGET_IDC=useast1a \ | |
| STORAGE_WAIT_SECONDS=30 \ | |
| HLS_START_INDEX=-3 \ | |
| PORT=7860 \ | |
| PYTHONUNBUFFERED=1 \ | |
| YOUTUBE_VIDEO_MODE=original | |
| EXPOSE 7860 | |
| CMD ["sh", "-c", "exec uvicorn app:app --host 0.0.0.0 --port ${PORT:-7860} --timeout-graceful-shutdown 65 --no-access-log"] | |