From aa91ee8d7a01663ab1fb9a5187edb69e5bd008e4 Mon Sep 17 00:00:00 2001 From: Nathan Young Date: Sat, 19 Sep 2026 01:47:28 -0600 Subject: [PATCH 1/9] Added docker image files --- .gitea/scripts/update_dockerhub_api | 25 +++++++++++++++ .gitea/workflows/docker_build.yml | 50 +++++++++++++++++++++++++++++ Dockerfile | 20 ++++++++++++ bin/update_dockerhub_api | 25 +++++++++++++++ 4 files changed, 120 insertions(+) create mode 100755 .gitea/scripts/update_dockerhub_api create mode 100644 .gitea/workflows/docker_build.yml create mode 100644 Dockerfile create mode 100755 bin/update_dockerhub_api diff --git a/.gitea/scripts/update_dockerhub_api b/.gitea/scripts/update_dockerhub_api new file mode 100755 index 0000000..d6d6245 --- /dev/null +++ b/.gitea/scripts/update_dockerhub_api @@ -0,0 +1,25 @@ +#!/bin/bash + +DOCKERHUB_USERNAME="${1}" +DOCKERHUB_PASSWORD="${2}" +GITEA_OWNER_REPO="${3}" +GITEA_API_KEY="${4}" +gitea_username=$(echo "${GITEA_OWNER_REPO}" | sed 's/\/.*//') +repo_name=$(echo "${GITEA_OWNER_REPO}" | sed 's/^.*\///') + +NEW_DOCKERHUB_TOKEN=$(curl -s -X POST "https://hub.docker.com/v2/auth/token" \ + -H "Content-Type: application/json" \ + -d "{\"identifier\": \"${DOCKERHUB_USERNAME}\", \"secret\": \"${DOCKERHUB_PASSWORD}\"}" \ + | jq -r .access_token) + +curl -X 'PUT' \ + "https://gitea.happylizard.me/api/v1/repos/${gitea_username}/${repo_name}/actions/secrets/DOCKERHUB_TOKEN" \ + -H 'accept: application/json' \ + -H "Authorization: token ${GITEA_API_KEY}" \ + -H 'Content-Type: application/json' \ + -d "{ + \"data\": \"${NEW_DOCKERHUB_TOKEN}\", + \"description\": \"\" +}" + + diff --git a/.gitea/workflows/docker_build.yml b/.gitea/workflows/docker_build.yml new file mode 100644 index 0000000..0460715 --- /dev/null +++ b/.gitea/workflows/docker_build.yml @@ -0,0 +1,50 @@ +name: Build and Push Docker Image + +on: + push: + branches: + - docker_upload + +jobs: + docker: + runs-on: ubuntu-latest + + steps: + - id: get-repo-name + name: Grab formatted repo name + run: | + repository_name=$(echo ${{ gitea.repository }} | sed 's/^.*\///') + echo "repository-name=$repository_name" >> "$GITEA_OUTPUT" + - name: Print repo name (for testing) + run: | + echo "Repository name: ${{ steps.get-repo-name.outputs.repository-name }}" + + - name: Checkout repository + uses: actions/checkout@v4 + + - run: | + ./bin/update_dockerhub_api \ + ${{ secrets.DOCKERHUB_USERNAME }} \ + ${{ secrets.DOCKERHUB_PASSWORD }} \ + ${{ gitea.repository }} \ + ${{ secrets.API_KEY }} + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + registry: docker.io + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: | + docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{ steps.get-repo-name.outputs.repository-name }}:latest + docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{ steps.get-repo-name.outputs.repository-name }}:${{ gitea.sha }} + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f576503 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM python:3-alpine3.15 +WORKDIR /app + +# Install the application dependencies +# COPY . ./ +COPY happy_ripper.py ./ +COPY requirements.txt ./ +COPY templates ./ +COPY tmp ./ + +RUN pip install --no-cache-dir -r requirements.txt +RUN apk add --no-cache ffmpeg + +EXPOSE 5000 + +## Setup an app user so the container doesn't run as the root user +#RUN useradd app +#USER app + +CMD ["python3", "./happy_ripper.py"] diff --git a/bin/update_dockerhub_api b/bin/update_dockerhub_api new file mode 100755 index 0000000..d6d6245 --- /dev/null +++ b/bin/update_dockerhub_api @@ -0,0 +1,25 @@ +#!/bin/bash + +DOCKERHUB_USERNAME="${1}" +DOCKERHUB_PASSWORD="${2}" +GITEA_OWNER_REPO="${3}" +GITEA_API_KEY="${4}" +gitea_username=$(echo "${GITEA_OWNER_REPO}" | sed 's/\/.*//') +repo_name=$(echo "${GITEA_OWNER_REPO}" | sed 's/^.*\///') + +NEW_DOCKERHUB_TOKEN=$(curl -s -X POST "https://hub.docker.com/v2/auth/token" \ + -H "Content-Type: application/json" \ + -d "{\"identifier\": \"${DOCKERHUB_USERNAME}\", \"secret\": \"${DOCKERHUB_PASSWORD}\"}" \ + | jq -r .access_token) + +curl -X 'PUT' \ + "https://gitea.happylizard.me/api/v1/repos/${gitea_username}/${repo_name}/actions/secrets/DOCKERHUB_TOKEN" \ + -H 'accept: application/json' \ + -H "Authorization: token ${GITEA_API_KEY}" \ + -H 'Content-Type: application/json' \ + -d "{ + \"data\": \"${NEW_DOCKERHUB_TOKEN}\", + \"description\": \"\" +}" + + -- 2.54.0 From df972f1e83799e35f03778abe50535df78f217d8 Mon Sep 17 00:00:00 2001 From: Nathan Young Date: Sat, 19 Sep 2026 01:53:08 -0600 Subject: [PATCH 2/9] testing --- lorem_ipsum | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 lorem_ipsum diff --git a/lorem_ipsum b/lorem_ipsum new file mode 100644 index 0000000..e69de29 -- 2.54.0 From 2248cfef502ffdb84e8b23ad54098ff463e9b48f Mon Sep 17 00:00:00 2001 From: Nathan Young Date: Sat, 19 Sep 2026 01:56:16 -0600 Subject: [PATCH 3/9] fixed (hopefully) --- bin/manually_get_dockerhub_token | 7 +++++++ lorem_ipsum | 0 2 files changed, 7 insertions(+) create mode 100755 bin/manually_get_dockerhub_token delete mode 100644 lorem_ipsum diff --git a/bin/manually_get_dockerhub_token b/bin/manually_get_dockerhub_token new file mode 100755 index 0000000..533f978 --- /dev/null +++ b/bin/manually_get_dockerhub_token @@ -0,0 +1,7 @@ +read -p "Dockerhub username: " DOCKERHUB_USERNAME +read -p "Dockerhub PASSWORD: " DOCKERHUB_PASSWORD + +curl -s -X POST "https://hub.docker.com/v2/auth/token" \ + -H "Content-Type: application/json" \ + -d "{\"identifier\": \"${DOCKERHUB_USERNAME}\", \"secret\": \"${DOCKERHUB_PASSWORD}\"}" \ + | jq -r .access_token diff --git a/lorem_ipsum b/lorem_ipsum deleted file mode 100644 index e69de29..0000000 -- 2.54.0 From e59ab8324cb049fd6459598c3894d0c86091ff42 Mon Sep 17 00:00:00 2001 From: Nathan Young Date: Sat, 19 Sep 2026 02:02:11 -0600 Subject: [PATCH 4/9] Fixed gitea runner issue --- .gitea/workflows/docker_build.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/docker_build.yml b/.gitea/workflows/docker_build.yml index 0460715..3bb1e53 100644 --- a/.gitea/workflows/docker_build.yml +++ b/.gitea/workflows/docker_build.yml @@ -14,10 +14,13 @@ jobs: name: Grab formatted repo name run: | repository_name=$(echo ${{ gitea.repository }} | sed 's/^.*\///') + dockerhub_repo_name="${repository_name^}" echo "repository-name=$repository_name" >> "$GITEA_OUTPUT" + echo "dockerhub-repo-name=$dockerhub_repo_name" >> "$GITEA_OUTPUT" - name: Print repo name (for testing) run: | echo "Repository name: ${{ steps.get-repo-name.outputs.repository-name }}" + echo "Dockerhub formatted repo name: ${{ steps.get-repo-name.outputs.dockerhub-repo-name }}" - name: Checkout repository uses: actions/checkout@v4 @@ -45,6 +48,6 @@ jobs: context: . push: true tags: | - docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{ steps.get-repo-name.outputs.repository-name }}:latest - docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{ steps.get-repo-name.outputs.repository-name }}:${{ gitea.sha }} + docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{ steps.get-repo-name.outputs.dockerhub-repo-name }}:latest + docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{ steps.get-repo-name.outputs.dockerhub-repo-name }}:${{ gitea.sha }} -- 2.54.0 From 975ce1ec95a9a97061b54e4a4e96b3fd5381a4dc Mon Sep 17 00:00:00 2001 From: Nathan Young Date: Sat, 19 Sep 2026 02:04:30 -0600 Subject: [PATCH 5/9] fix --- .gitea/workflows/docker_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/docker_build.yml b/.gitea/workflows/docker_build.yml index 3bb1e53..5360e45 100644 --- a/.gitea/workflows/docker_build.yml +++ b/.gitea/workflows/docker_build.yml @@ -14,7 +14,7 @@ jobs: name: Grab formatted repo name run: | repository_name=$(echo ${{ gitea.repository }} | sed 's/^.*\///') - dockerhub_repo_name="${repository_name^}" + dockerhub_repo_name=$(echo ${repository_name} | tr '[:upper:]' '[:lower:]') echo "repository-name=$repository_name" >> "$GITEA_OUTPUT" echo "dockerhub-repo-name=$dockerhub_repo_name" >> "$GITEA_OUTPUT" - name: Print repo name (for testing) -- 2.54.0 From 051a9e5c5f72689f0114310cc0e2d135e500b770 Mon Sep 17 00:00:00 2001 From: Nathan Young Date: Sat, 19 Sep 2026 02:05:42 -0600 Subject: [PATCH 6/9] fix again --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f576503..61ba2ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,6 @@ WORKDIR /app COPY happy_ripper.py ./ COPY requirements.txt ./ COPY templates ./ -COPY tmp ./ RUN pip install --no-cache-dir -r requirements.txt RUN apk add --no-cache ffmpeg -- 2.54.0 From 08a14f9c99d2d53d3b4d32827fcd439c79c3a56d Mon Sep 17 00:00:00 2001 From: Nathan Young Date: Sat, 19 Sep 2026 02:14:46 -0600 Subject: [PATCH 7/9] Fix requirements --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index abe6be9..254829f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ Flask==3.1.3 mutagen==1.47.0 yt_dlp==2026.8.19 +ytmusicapi==1.12.3 -- 2.54.0 From 408f2242a7a4561892cd8ff6117ae6dcd4459e5b Mon Sep 17 00:00:00 2001 From: Nathan Young Date: Sat, 19 Sep 2026 02:23:18 -0600 Subject: [PATCH 8/9] fixed --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 61ba2ed..80c59c0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ WORKDIR /app # COPY . ./ COPY happy_ripper.py ./ COPY requirements.txt ./ -COPY templates ./ +COPY templates ./templates RUN pip install --no-cache-dir -r requirements.txt RUN apk add --no-cache ffmpeg -- 2.54.0 From 51bfcfb986b1f8c748dc3c3c36e98a82accec894 Mon Sep 17 00:00:00 2001 From: Nathan Young Date: Sat, 19 Sep 2026 02:30:22 -0600 Subject: [PATCH 9/9] Added files and fixed workflow files --- bin/manually_get_dockerhub_token | 3 +++ bin/readme.md | 1 + bin/update_dockerhub_api | 5 +++++ 3 files changed, 9 insertions(+) create mode 100644 bin/readme.md diff --git a/bin/manually_get_dockerhub_token b/bin/manually_get_dockerhub_token index 533f978..0a03776 100755 --- a/bin/manually_get_dockerhub_token +++ b/bin/manually_get_dockerhub_token @@ -1,3 +1,6 @@ +#!/bin/bash +# Will return your dockerhub token (tokens may be temporary) + read -p "Dockerhub username: " DOCKERHUB_USERNAME read -p "Dockerhub PASSWORD: " DOCKERHUB_PASSWORD diff --git a/bin/readme.md b/bin/readme.md new file mode 100644 index 0000000..ff8f00f --- /dev/null +++ b/bin/readme.md @@ -0,0 +1 @@ +These are mainly only needed for managing the git repository, not to be used with happy-ripper diff --git a/bin/update_dockerhub_api b/bin/update_dockerhub_api index d6d6245..2a5e263 100755 --- a/bin/update_dockerhub_api +++ b/bin/update_dockerhub_api @@ -1,5 +1,10 @@ #!/bin/bash +if [[ -z "${1}" ]]; then + echo "This is for the gitea actions only, as it requires the repository's secrets to pass the needed variables" + exit 1 +fi + DOCKERHUB_USERNAME="${1}" DOCKERHUB_PASSWORD="${2}" GITEA_OWNER_REPO="${3}" -- 2.54.0