Compare commits
4 Commits
f0a84c1f41
...
959a1d01d6
Author | SHA1 | Date | |
---|---|---|---|
|
959a1d01d6 | ||
|
8a5fba0f31 | ||
|
ba3f916dcf | ||
|
492f68e0f8 |
13
Dockerfile
13
Dockerfile
@ -2,16 +2,14 @@
|
||||
FROM python:3.10-slim
|
||||
|
||||
# Set environment variables for the MPV socket and server host/port
|
||||
ENV MPV_SOCKET="/tmp/mpvsocket" \
|
||||
HOST_NAME="0.0.0.0" \
|
||||
PORT_NUMBER=8080 \
|
||||
LOGLEVEL="info"
|
||||
ENV LISTEN_ADDRESS="0.0.0.0" \
|
||||
LISTEN_PORT=8080
|
||||
|
||||
# Set the working directory in the container
|
||||
WORKDIR /app
|
||||
|
||||
# Copy the current directory contents into the container at /app
|
||||
COPY server.py /app/server.py
|
||||
COPY server.py requirements.txt /app/
|
||||
|
||||
# Install any needed packages specified in requirements.txt
|
||||
# If there are no external dependencies, you can skip this step
|
||||
@ -20,7 +18,8 @@ COPY server.py /app/server.py
|
||||
# Make port 8080 available to the world outside this container
|
||||
EXPOSE "${PORT_NUMBER}"
|
||||
|
||||
RUN pip3 install --no-cache-dir Flask mysql-connector-python
|
||||
RUN pip3 install --no-cache-dir -r requirements.txt
|
||||
|
||||
# Run server.py when the container launches
|
||||
CMD ["python3", "server.py", "--host", "${HOST_NAME}", "--port", "${PORT_NUMBER}", "--input-ipc-server", "${MPV_SOCKET}"]
|
||||
# CMD ["python3", "server.py", "--host", "${LISTEN_ADDRESS}", "--port", "${LISTEN_PORT}", "--input-ipc-server", "${MPV_SOCKET}"]
|
||||
CMD gunicorn --bind "${LISTEN_ADDRESS}":"${LISTEN_PORT}" server:app
|
||||
|
@ -1,7 +1,6 @@
|
||||
IP=0.0.0.0 # Lisen on all interfaces
|
||||
PORT_NUMBER=8080 # Internal port number
|
||||
LISTEN_ADDRESS=0.0.0.0 # Lisen on all interfaces
|
||||
LISTEN_PORT=8080 # Internal port number
|
||||
MPV_SOCKET=/tmp/mpvsocket # Path to mpv socket
|
||||
LOGLEVEL=info
|
||||
|
||||
# MySQL connection info
|
||||
MYSQL_HOST=localhost
|
||||
@ -10,3 +9,4 @@ MYSQL_PASSWORD=SecretPassword
|
||||
MYSQL_DATABASE=mpv
|
||||
MYSQL_PORT=3306
|
||||
|
||||
LOGLEVEL=info
|
||||
|
@ -8,8 +8,8 @@ WorkingDirectory=<PATH_TO_PYTHON_SCRIPT>
|
||||
ExecStart=<PATH_TO_PYTHON> <PATH_TO_PYTHON_SCRIPT>
|
||||
Restart=on-failure
|
||||
Environment="MPV_SOCKET=/tmp/mpvsocket"
|
||||
Environment="HOST_NAME=0.0.0.0"
|
||||
Environment="PORT_NUMBER=42069"
|
||||
Environment="LISTEN_ADDRESS=0.0.0.0"
|
||||
Environment="LISTEN_PORT=42069"
|
||||
Environment="MYSQL_HOST=http://localhost"
|
||||
Environment="MYSQL_USER=mpvuser"
|
||||
Environment="MYSQL_PASSWORD=SecretPassword"
|
||||
|
@ -1,8 +1,10 @@
|
||||
blinker==1.8.2
|
||||
click==8.1.7
|
||||
Flask==3.0.3
|
||||
gunicorn==23.0.0
|
||||
itsdangerous==2.2.0
|
||||
Jinja2==3.1.4
|
||||
MarkupSafe==2.1.5
|
||||
mysql-connector-python==9.0.0
|
||||
packaging==24.1
|
||||
Werkzeug==3.0.4
|
||||
|
20
server.py
20
server.py
@ -15,6 +15,17 @@ logging.basicConfig(
|
||||
level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s"
|
||||
)
|
||||
|
||||
# Ensure Flask doesn't duplicate log messages
|
||||
log = logging.getLogger("werkzeug")
|
||||
log.setLevel(logging.ERROR)
|
||||
|
||||
# Flask app
|
||||
app = Flask(__name__)
|
||||
|
||||
# Flask logging configuration to use the same logger as the rest of the app
|
||||
app.logger.handlers = logging.getLogger().handlers
|
||||
app.logger.setLevel(logging.getLogger().level)
|
||||
|
||||
SOCKET_RETRY_DELAY = 5 # Time in seconds between retries to connect to the socket
|
||||
MAX_RETRIES = 10 # Maximum number of retries to connect to the socket
|
||||
|
||||
@ -29,6 +40,7 @@ MYSQL_USER: str = os.getenv("MYSQL_USER", "your_username")
|
||||
MYSQL_PASSWORD: str = os.getenv("MYSQL_PASSWORD", "your_password")
|
||||
MYSQL_PORT: int = int(os.getenv("MYSQL_PORT", "3306"))
|
||||
LOGLEVEL = os.getenv("LOGLEVEL", "INFO").strip().upper()
|
||||
|
||||
if LOGLEVEL == "DEBUG":
|
||||
logging.getLogger().setLevel(logging.DEBUG)
|
||||
elif LOGLEVEL == "WARNING":
|
||||
@ -39,9 +51,6 @@ else:
|
||||
logging.getLogger().setLevel(logging.INFO)
|
||||
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
|
||||
def get_mysql_connection():
|
||||
"""Get a MySQL database connection."""
|
||||
try:
|
||||
@ -120,10 +129,11 @@ def add_video():
|
||||
video_name: str = data.get("video_name")
|
||||
channel_url: str = data.get("channel_url")
|
||||
channel_name: str = data.get("channel_name")
|
||||
watch_date: date = data.get("watch_date")
|
||||
watch_date: date = date.today().strftime("%Y-%m-%d")
|
||||
|
||||
if video_url and video_name and channel_url and channel_name and watch_date:
|
||||
logging.info(f"Received data: {data}")
|
||||
logging.debug(f"Received data: {data}")
|
||||
logging.debug(f"Watch date: {watch_date}")
|
||||
|
||||
# Insert the data into the MySQL database
|
||||
connection = get_mysql_connection()
|
||||
|
Loading…
Reference in New Issue
Block a user