0.0.2 #1

Merged
sudacode merged 4 commits from 0.0.2 into master 2024-09-05 04:37:14 -07:00
6 changed files with 29 additions and 18 deletions

View File

@ -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

View File

@ -1 +1 @@
0.0.1
0.0.2

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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()