This commit is contained in:
Jesse Bannon 2025-03-15 15:01:11 -07:00
parent f61da6d64a
commit 4491ed5232
3 changed files with 16 additions and 107 deletions

View file

@ -27,7 +27,7 @@ services:
restart: unless-stopped restart: unless-stopped
ytdl-sub-ubuntu: ytdl-sub-ubuntu:
image: ytdl-sub-ubuntu:local image: ytdl-sub-ubuntu:local
container_name: ytdl-sub container_name: ytdl-sub-ubuntu
environment: environment:
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
@ -36,4 +36,4 @@ services:
- CRON_RUN_ON_START=true - CRON_RUN_ON_START=true
volumes: volumes:
- ./volumes/ytdl-sub:/config - ./volumes/ytdl-sub:/config
restart: unless-stopped restart: unless-stopped

View file

@ -1,133 +1,43 @@
Automating Downloads 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 <guides/getting_started/automating_downloads:docker and unraid>` :ref:`Guide for Docker and Unraid Containers <guides/getting_started/automating_downloads:docker and unraid>`
:ref:`Guide for Linux <guides/getting_started/automating_downloads:linux>` :ref:`Guide for Linux <guides/getting_started/automating_downloads:linux>`
:ref:`Guide for Windows <guides/getting_started/automating_downloads:windows>` :ref:`Guide for Windows <guides/getting_started/automating_downloads: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-unraid-setup:
Docker and Unraid Docker and Unraid
----------------- -----------------
.. tab-set:: Cron is preconfigured in every ytdl-sub docker container. Enable by adding the following
ENV variables to your docker setup.
.. tab-item:: GUI Image
The script that will execute automatically is located at ``/config/ytdl-sub-configs/run_cron``.
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
- </path/to/ytdl-sub/config>:/config
- </path/to/ytdl-sub/tv_shows>:/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-setup:
Linux Linux
----- -----
Must configure crontab manually, like so:
.. code-block:: shell .. code-block:: shell

View file

@ -79,7 +79,6 @@ Docker Compose is an easy "set it and forget it" install method. Follow the inst
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
- TZ=America/Los_Angeles - TZ=America/Los_Angeles
- DOCKER_MODS=linuxserver/mods:universal-cron
volumes: volumes:
- <path/to/ytdl-sub/config>:/config - <path/to/ytdl-sub/config>:/config
- <path/to/tv_shows>:/tv_shows # optional - <path/to/tv_shows>:/tv_shows # optional