diff --git a/Dockerfile b/Dockerfile index 58d280a..c219491 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,8 +2,7 @@ FROM python:3.10 WORKDIR /v6 ENV v6root=/v6data -RUN apt-get update -RUN apt-get install -y libopus0 opus-tools ffmpeg +RUN apt-get update && apt-get install -y libopus0 opus-tools ffmpeg proxychains proxychains COPY base.requirements.txt base.requirements.txt RUN pip install -r base.requirements.txt COPY requirements.txt requirements.txt @@ -13,4 +12,6 @@ ENV v6host=0.0.0.0 RUN mkdir ${v6root} COPY v6d3music v6d3music RUN python3 -m v6d3music.main -CMD ["python3", "-m", "v6d3music.run-bot"] +COPY proxychains.conf /etc/proxychains.conf +COPY entrypoint.sh /entrypoint.sh +CMD ["/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..299ec5b --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/sh +set -e +byedpi=$(dig +short byedpi) +sed -i -e 's/byedpi/'$byedpi'/g' /etc/proxychains.conf +exec python3 -m v6d3music.run-bot diff --git a/proxychains.conf b/proxychains.conf new file mode 100644 index 0000000..1bcd901 --- /dev/null +++ b/proxychains.conf @@ -0,0 +1,9 @@ +quiet_mode +strict_chain +proxy_dns + +tcp_read_time_out 15000 +tcp_connect_time_out 8000 + +[ProxyList] +socks4 byedpi 1080 diff --git a/v6d3music/core/ffmpegnormalaudio.py b/v6d3music/core/ffmpegnormalaudio.py index 5ca5d86..db6ce36 100644 --- a/v6d3music/core/ffmpegnormalaudio.py +++ b/v6d3music/core/ffmpegnormalaudio.py @@ -14,23 +14,23 @@ __all__ = ("FFmpegNormalAudio",) class FFmpegNormalAudio(discord.FFmpegAudio): def __init__( self, - source, + source: str, *, - executable="ffmpeg", - pipe=False, stderr=None, before_options=None, options=None, ): + internal = source.startswith("http://adaas:5000/cachedx/") + executable = "ffmpeg" if internal else "proxychains" self.source = source - args = [] - subprocess_kwargs = {"stdin": source if pipe else subprocess.DEVNULL, "stderr": stderr} + args = [] if internal else ["ffmpeg"] + subprocess_kwargs = {"stdin": subprocess.DEVNULL, "stderr": stderr} if isinstance(before_options, str): args.extend(shlex.split(before_options)) args.append("-i") - args.append("-" if pipe else source) + args.append(source) args.extend(("-f", "s16le", "-ar", "48000", "-ac", "2", "-loglevel", "warning")) if isinstance(options, str):