From 4491ed5232f6c1c8cfdd459d19e9c7ff0ed8cda4 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Sat, 15 Mar 2025 15:01:11 -0700 Subject: [PATCH] more --- docker/testing/docker-compose.yml | 4 +- .../getting_started/automating_downloads.rst | 118 +++--------------- docs/source/guides/install/docker.rst | 1 - 3 files changed, 16 insertions(+), 107 deletions(-) diff --git a/docker/testing/docker-compose.yml b/docker/testing/docker-compose.yml index d8e31743..432d0098 100644 --- a/docker/testing/docker-compose.yml +++ b/docker/testing/docker-compose.yml @@ -27,7 +27,7 @@ services: restart: unless-stopped ytdl-sub-ubuntu: image: ytdl-sub-ubuntu:local - container_name: ytdl-sub + container_name: ytdl-sub-ubuntu environment: - PUID=1000 - PGID=1000 @@ -36,4 +36,4 @@ services: - CRON_RUN_ON_START=true volumes: - ./volumes/ytdl-sub:/config - restart: unless-stopped \ No newline at end of file + restart: unless-stopped diff --git a/docs/source/guides/getting_started/automating_downloads.rst b/docs/source/guides/getting_started/automating_downloads.rst index 9608a7b1..392c8ebb 100644 --- a/docs/source/guides/getting_started/automating_downloads.rst +++ b/docs/source/guides/getting_started/automating_downloads.rst @@ -1,133 +1,43 @@ Automating Downloads ==================== -One of the key capabilities of ``ytdl-sub`` automating new downloads. -To take advantage of this, you must set up scheduling to execute the commands at some interval. -How you set up this scheduling depends on which version of ``ytdl-sub`` you downloaded. - - :ref:`Guide for Docker and Unraid Containers ` :ref:`Guide for Linux ` :ref:`Guide for Windows ` -.. _cron tab manpage: https://man7.org/linux/man-pages/man5/crontab.5.html#EXAMPLE_CRON_FILE +.. _cron scheduling syntax: https://crontab.guru/#0_*/6_*_*_* .. _docker-unraid-setup: Docker and Unraid ----------------- -.. tab-set:: - - .. tab-item:: GUI Image - - The script that will execute automatically is located at ``/config/ytdl-sub-configs/run_cron``. +Cron is preconfigured in every ytdl-sub docker container. Enable by adding the following +ENV variables to your docker setup. - Access your container at http://localhost:8443/, then in the GUI terminal run these commands: +.. code-block:: yaml - .. code-block:: shell + services: + ytdl-sub: + environment: + - CRON_SCHEDULE="0 */6 * * *" + - CRON_RUN_ON_START=false - echo '#!/bin/bash' > /config/ytdl-sub-configs/run_cron - echo "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" >> /config/ytdl-sub-configs/run_cron - echo "echo 'Cron started, running ytdl-sub...'" >> /config/ytdl-sub-configs/run_cron - echo "cd /config/ytdl-sub-configs" >> /config/ytdl-sub-configs/run_cron - echo "ytdl-sub --config=config.yaml sub subscriptions.yaml" >> /config/ytdl-sub-configs/run_cron - chmod +x /config/ytdl-sub-configs/run_cron - chown abc:abc /config/ytdl-sub-configs/run_cron - You can test the newly created script by running: +- ``CRON_SCHEDULE`` follows the standard `cron scheduling syntax`_. The above value will run the script once every 6 hours. +- ``CRON_RUN_ON_START`` toggles whether to run your cron script on container start. - .. code-block:: shell +The cron script will reside in the main directory with the file name ``cron``. +Cron logs should show when viewing the Docker logs. - /config/ytdl-sub-configs/run_cron - - To create the cron definition, run the following command: - - .. code-block:: shell - - echo "# min hour day month weekday command" > /config/crontabs/abc - echo " 0 */6 * * * /config/ytdl-sub-configs/run_cron" >> /config/crontabs/abc - - This will run the script every 6 hours. To run every hour, change ``*/6`` to ``*/1``, or to run once a day, change the same value to the hour (in 24hr format) that you want it to run at. See the `cron tab manpage`_ for more options. - - .. attention:: - The Docker container needs to be restarted for changes to take effect. Run `crontab -e` after to verify settings are correct. - - .. tab-item:: Headless Image - - .. _LinuxServer's Universal Cron mod: https://github.com/linuxserver/docker-mods/tree/universal-cron - - The first step is to ensure you have `LinuxServer's Universal Cron mod`_ enabled via the environment variable. For the GUI image, this is already included (no need to add it). - - .. code-block:: yaml - - services: - ytdl-sub: - image: ghcr.io/jmbannon/ytdl-sub:latest - container_name: ytdl-sub - environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Los_Angeles - - DOCKER_MODS=linuxserver/mods:universal-cron # <-- Make sure you have this! - volumes: - # ensure directories have user permissions - - :/config - - :/tv_shows - restart: unless-stopped - - This line will tell your container to install and enable cron on start. - - If you had to add this line, you will need to restart your container. - - .. code-block:: shell - - docker compose restart - - The script that will execute automatically is located at ``/config/run_cron``. - - Access your container from the terminal by running: - - .. code-block:: shell - - docker exec -itu abc ytdl-sub /bin/bash - - then in the terminal run these commands: - - .. code-block:: shell - - echo '#!/bin/bash' > /config/run_cron - echo "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" >> /config/run_cron - echo "echo 'Cron started, running ytdl-sub...'" >> /config/run_cron - echo "cd /config" >> /config/run_cron - echo "ytdl-sub --config=config.yaml sub subscriptions.yaml" >> /config/run_cron - chmod +x /config/run_cron - chown abc:abc /config/run_cron - - You can test the newly created script by running: - - .. code-block:: - - /config/run_cron - - To create the cron definition, run the following command: - - .. code-block:: shell - - echo "# min hour day month weekday command" > /config/crontabs/abc - echo " 0 */6 * * * /config/run_cron" >> /config/crontabs/abc - - This will run the script every 6 hours. To run every hour, change ``*/6`` to ``*/1``, or to run once a day, change the same value to the hour (in 24hr format) that you want it to run at. See the `cron tab manpage`_ for more options. - - .. attention:: - The Docker container needs to be restarted for changes to take effect. Run `crontab -e` after to verify settings are correct. .. _linux-setup: Linux ----- +Must configure crontab manually, like so: .. code-block:: shell diff --git a/docs/source/guides/install/docker.rst b/docs/source/guides/install/docker.rst index bf9b04c4..c2faa84a 100644 --- a/docs/source/guides/install/docker.rst +++ b/docs/source/guides/install/docker.rst @@ -79,7 +79,6 @@ Docker Compose is an easy "set it and forget it" install method. Follow the inst - PUID=1000 - PGID=1000 - TZ=America/Los_Angeles - - DOCKER_MODS=linuxserver/mods:universal-cron volumes: - :/config - :/tv_shows # optional