FROM python:3.11-slim AS builder
WORKDIR /root
ENV ARCH=x86_64

ARG HTTP_PROXY
ARG HTTPS_PROXY

COPY sources.list /etc/apt/sources.list
RUN mkdir -p /tmp
RUN apt-get update && apt-get install -y nasm yasm git curl lbzip2 build-essential
RUN git clone https://github.com/acoustid/ffmpeg-build.git
RUN echo "FFMPEG_CONFIGURE_FLAGS+=(--enable-encoder=pcm_s16le --enable-muxer=wav --enable-filter=loudnorm --enable-filter=aresample --enable-filter=replaygain --enable-filter=volume)" >> ffmpeg-build/common.sh
RUN ffmpeg-build/build-linux.sh
RUN mv ffmpeg-build/artifacts/ffmpeg-*-linux-gnu/bin/ffmpeg .

FROM python:3.11-slim

ENV WINEPREFIX="/wine32"
ENV WINEARCH=win32
ENV LOG_LEVEL=

RUN dpkg --add-architecture i386
# 原来是：apt-get install -y wine32 wine:i386 --no-install-recommends
# 最小改动：明确装 wine32（和 wine 本体），避免 wine:i386 虚拟包坑
RUN apt-get update && apt-get install -y --no-install-recommends wine wine32 ca-certificates curl cabextract xvfb xauth  && rm -rf /var/lib/apt/lists/*
RUN apt-get clean

RUN /usr/bin/wine wineboot | true
COPY --from=builder /root/ffmpeg /usr/bin/ffmpeg


# 3) 手动安装 Wine Mono（关键）
# 说明：
# - 你可以按需换版本号
# - x86.msi 对 win32 prefix 更合适
ARG WINE_MONO_VER=9.0.0
RUN set -eux; \
    export http_proxy="${HTTP_PROXY}" https_proxy="${HTTPS_PROXY}";\
    curl -L -o /tmp/wine-mono.msi \
      "https://dl.winehq.org/wine/wine-mono/${WINE_MONO_VER}/wine-mono-${WINE_MONO_VER}-x86.msi"; \
    xvfb-run -a wine msiexec /i /tmp/wine-mono.msi /qn /l*v /tmp/wine-mono-install.log \
      || (echo "==== wine-mono install failed (tail) ===="; tail -n 200 /tmp/wine-mono-install.log; exit 1); \
    rm -f /tmp/wine-mono.msi
# 原来是 COPY psp_at3tool.exe .
# 最小改动：换成你的编码器 + codec
COPY psp_at3tool.exe .
COPY atrac3.acm .

# 安装并注册 atrac3.acm（核心）
# 1) 拷到 system32
# 2) 写 Drivers32: msacm.atrac3=atrac3.acm
RUN mkdir -p "$WINEPREFIX/drive_c/windows/system32" && \
    cp atrac3.acm "$WINEPREFIX/drive_c/windows/system32/atrac3.acm" && \
    wine reg add "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Drivers32" \
      /v msacm.atrac3 /t REG_SZ /d atrac3.acm /f ;\ 
    wine reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Drivers32" /v msacm.at3 /t REG_SZ /d atrac3.acm /f || true; \
    wineserver -w

COPY requirements.txt .
RUN pip install -r requirements.txt
RUN mkdir /uploads
COPY *.py ./

# 原来 EXPOSE 5000，但 CMD 端口是 5001；最小修复：对齐
EXPOSE 5001
ENTRYPOINT ["uvicorn"]
CMD ["main:api", "--host", "0.0.0.0", "--port", "5001"]
