13 Commits
4 changed files with 40 additions and 4 deletions
+4
View File
@@ -0,0 +1,4 @@
.git
__pycache__
server.log
*.pyc
+18
View File
@@ -0,0 +1,18 @@
FROM python:3.13-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends ffmpeg \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY server.py index.html README.md ./
ENV C41_SOURCE=/data/source \
C41_OUTPUT=/data/encoded \
C41_HOST=0.0.0.0 \
C41_PORT=8765
EXPOSE 8765
VOLUME ["/data/source", "/data/encoded"]
CMD ["python3", "server.py"]
+12
View File
@@ -0,0 +1,12 @@
services:
c41-player:
build: .
container_name: c41-player
environment:
C41_HOST: 0.0.0.0
ports:
- "8765:8765"
volumes:
- "/home/human/Videos/Yassine Salon/C41/media:/data/source:ro"
- "/home/human/Videos/Yassine Salon/C41/media-mp4:/data/encoded"
restart: unless-stopped
+6 -4
View File
@@ -2,6 +2,7 @@
import argparse import argparse
import concurrent.futures import concurrent.futures
import json import json
import os
import re import re
import subprocess import subprocess
import struct import struct
@@ -352,20 +353,21 @@ def main():
"root", "root",
nargs="?", nargs="?",
type=Path, type=Path,
default=Path("/home/human/Videos/Yassine Salon/C41/media-mp4"), default=Path(os.environ.get("C41_OUTPUT", "/home/human/Videos/Yassine Salon/C41/media-mp4")),
help="folder containing YYYYMMDD recording directories", help="folder containing YYYYMMDD recording directories",
) )
parser.add_argument("--port", type=int, default=8765) parser.add_argument("--port", type=int, default=int(os.environ.get("C41_PORT", "8765")))
parser.add_argument("--host", default=os.environ.get("C41_HOST", "127.0.0.1"))
parser.add_argument( parser.add_argument(
"--source", "--source",
type=Path, type=Path,
default=Path("/home/human/Videos/Yassine Salon/C41/media"), default=Path(os.environ.get("C41_SOURCE", "/home/human/Videos/Yassine Salon/C41/media")),
help="folder containing source AVI files for manual encoding", help="folder containing source AVI files for manual encoding",
) )
args = parser.parse_args() args = parser.parse_args()
recordings = scan_recordings(args.root.expanduser().resolve()) recordings = scan_recordings(args.root.expanduser().resolve())
server = ThreadingHTTPServer(("127.0.0.1", args.port), PlayerHandler) server = ThreadingHTTPServer((args.host, args.port), PlayerHandler)
server.recordings = recordings server.recordings = recordings
server.source_root = args.source.expanduser().resolve() server.source_root = args.source.expanduser().resolve()
server.output_root = args.root.expanduser().resolve() server.output_root = args.root.expanduser().resolve()