فهرست منبع

add yt-dlp role

Blaine Story 1 سال پیش
والد
کامیت
fb248f15b8
5فایلهای تغییر یافته به همراه80 افزوده شده و 0 حذف شده
  1. 10 0
      plays/nas-ytdlp.yml
  2. 35 0
      roles/yt-dlp/tasks/main.yml
  3. 13 0
      roles/yt-dlp/templates/Dockerfile.j2
  4. 1 0
      roles/yt-dlp/templates/yt-dlp.conf
  5. 21 0
      roles/yt-dlp/templates/yt-dlp.j2

+ 10 - 0
plays/nas-ytdlp.yml

@@ -0,0 +1,10 @@
+---
+- hosts: nas
+  gather_facts: true
+  become: true
+
+  roles:
+    - yt-dlp
+
+  vars_files:
+    - "{{ inventory_dir }}/vars/vault.yaml"

+ 35 - 0
roles/yt-dlp/tasks/main.yml

@@ -0,0 +1,35 @@
+---
+- name: Create yt-dlp docker dir
+  ansible.builtin.file:
+    path: /opt/docker/yt-dlp
+    state: directory
+    owner: root
+    group: root
+    mode: '0755' 
+
+- name: Add yt-dlp Dockerfiles
+  ansible.builtin.template:
+    src: "{{ item.src }}"
+    dest: /opt/docker/yt-dlp/{{ item.dest }}
+    owner: root
+    group: root
+    mode: '0644'
+  with_items:
+    - { src: "Dockerfile.j2", dest: "Dockerfile" }
+    - { src: "yt-dlp.conf", dest: "yt-dlp.conf" }
+
+- name: Add yt-dlp script
+  ansible.builtin.template:
+    src: yt-dlp.j2
+    dest: /usr/local/bin/yt-dlp
+    owner: root
+    group: root
+    mode: '0755'
+
+- name: Add update-yt-dlp alias
+  ansible.builtin.lineinfile:
+    path: /root/.bashrc
+    regexp: "^alias update-yt-dlp="
+    line: "alias update-yt-dlp='cd /root/docker/yt-dlp ; docker build . -t yt-dlp --no-cache ; cd - > /dev/null'"
+
+    

+ 13 - 0
roles/yt-dlp/templates/Dockerfile.j2

@@ -0,0 +1,13 @@
+# {{ ansible_managed }}
+
+FROM alpine:latest
+
+RUN apk add --no-cache yt-dlp
+RUN adduser -u {{ vaulted_media_uid }} -D {{ vaulted_media_user }}
+
+RUN mkdir /home/{{ vaulted_media_user }}/.config
+COPY yt-dlp.conf /home/{{ vaulted_media_user }}/.config/yt-dlp.conf
+
+USER {{ vaulted_media_user }}
+
+ENTRYPOINT ["yt-dlp"]

+ 1 - 0
roles/yt-dlp/templates/yt-dlp.conf

@@ -0,0 +1 @@
+-o /data/%(uploader)s/%(title)s.%(ext)s

+ 21 - 0
roles/yt-dlp/templates/yt-dlp.j2

@@ -0,0 +1,21 @@
+#!/bin/bash
+# {{ ansible_managed }}
+
+if [[ "$#" -lt 2 ]] ; then
+  echo "usage: $0 public|private URL"
+  exit 1
+fi
+
+folder=$(echo "$1" | tr '[:upper:]' '[:lower:]')
+shift
+
+if [[ "$USER" == "{{ vaulted_media_user }}" ]] ; then
+  echo "run again with sudo (sudo !!)"
+  exit 1
+fi
+
+if [[ "$folder" == "public" ]] ; then
+  docker run --rm -v /mergerfs/public/Videos/youtube:/data --user {{ vaulted_media_uid }} yt-dlp "$@"
+else
+  docker run --rm -v /mergerfs/private/Videos/youtube:/data --user {{ vaulted_media_uid }} yt-dlp "$@"
+fi