132 lines
4.4 KiB
ReStructuredText
132 lines
4.4 KiB
ReStructuredText
Automating
|
|
==========
|
|
|
|
Automate downloading your subscriptions by running the :ref:`'sub' sub-command
|
|
<usage:subscriptions options>` periodically. There are various tools that can run
|
|
commands on a schedule you may use any of them that work with your installation
|
|
method. Most users use `cron`_ in `Docker containers <docker and unraid_>`_.
|
|
|
|
|
|
Docker and Unraid
|
|
-----------------
|
|
|
|
:doc:`The 'ytdl-sub' Docker container images <../install/docker>` provide optional cron
|
|
support. Enable cron support by setting `a cron schedule`_ in the ``CRON_SCHEDULE``
|
|
environment variable:
|
|
|
|
.. code-block:: yaml
|
|
:caption: ./compose.yaml
|
|
:emphasize-lines: 4
|
|
|
|
services:
|
|
ytdl-sub:
|
|
environment:
|
|
CRON_SCHEDULE: "0 */6 * * *"
|
|
# WARNING: See "Getting Started" -> "Automating" docs regarding throttles/bans:
|
|
# CRON_RUN_ON_START: false
|
|
|
|
Then recreate the container to apply the change and start it to generate the default
|
|
``/config/ytdl-sub-configs/cron`` script. Read the comments in that script and edit as
|
|
appropriate.
|
|
|
|
The container cron wrapper script will write output from the cron job to
|
|
``/config/ytdl-sub-configs/.cron.log``. The default image ``ENTRYPOINT`` will ``$ tail
|
|
...`` that file so you can monitor the cron job in the container's output and thus also
|
|
in the Docker logs.
|
|
|
|
You may also set the ``CRON_RUN_ON_START`` environment variable to ``true`` to have the
|
|
image run your cron script whenever the container starts in addition to the cron
|
|
schedule.
|
|
|
|
.. warning::
|
|
|
|
Using ``CRON_RUN_ON_START`` may cause your cron script to run too often and may
|
|
trigger throttles and bans. When enabled, your cron script will run *whenever* the
|
|
container starts including when the host reboots, when ``# dockerd`` restarts such as
|
|
when upgrading Docker itself, when a new image is pulled, when something applies
|
|
Compose changes, etc.. This may result in running ``ytdl-sub`` right before or after
|
|
the next cron scheduled run.
|
|
|
|
|
|
.. _linux-setup:
|
|
|
|
Linux, Mac OS X, BSD, or other UNIX's
|
|
-------------------------------------
|
|
|
|
For installations on systems already running ``# crond``, you can also use cron to run
|
|
``ytdl-sub`` periodically. Write a script to run ``ytdl-sub`` in the cron job. Be sure
|
|
the script changes to the same directory as your configuration and uses the full path to
|
|
``ytdl-sub``:
|
|
|
|
.. code-block:: shell
|
|
:caption: ~/.local/bin/ytdl-sub-cron
|
|
:emphasize-lines: 2,3
|
|
|
|
#!/bin/bash
|
|
cd "~/.config/ytdl-sub/"
|
|
~/.local/bin/ytdl-sub --dry-run sub -o '--ytdl_options.max_downloads 3' |&
|
|
tee -a "~/.local/state/ytdl-sub/.cron.log"
|
|
|
|
Then tell ``# crond`` when to run the script:
|
|
|
|
.. code-block:: console
|
|
|
|
echo "0 */6 * * * ${HOME}/.local/bin/ytdl-sub-cron" | crontab "-"
|
|
|
|
Remove the ``--dry-run`` and ``-o ...`` CLI options from your cron script when you've
|
|
tested your configuration and you're ready to download entries unattended.
|
|
|
|
|
|
.. _windows-setup:
|
|
|
|
Windows
|
|
-------
|
|
|
|
For most Windows users, the best way to run commands periodically is `the Task
|
|
Scheduler`_:
|
|
|
|
.. attention::
|
|
|
|
These instructions are untested. Use at your own risk. If you use them, whether they
|
|
work or not, please let us know how it went in `a support post in Discord`_ or `a new
|
|
GitHub issue`_.
|
|
|
|
#. Open the Task Scheduler app.
|
|
|
|
#. Click ``Create Basic Task`` at the top of the right sidebar.
|
|
|
|
#. Set all the fields as appropriate until you get to the ``Action``...
|
|
|
|
#. For the ``Action``, select ``Start a program``...
|
|
|
|
#. Click ``Browse...`` to the installed ``ytdl-sub.exe`` executable...
|
|
|
|
#. Add CLI arguments to ``Add arguments (optional):``, for example ``--dry-run sub -o
|
|
'--ytdl_options.max_downloads 3'``...
|
|
|
|
#. Set ``Start in (optional):`` to the directory containing your configuration.
|
|
|
|
#. Finish the rest of the ``Create Basic Task`` wizard.
|
|
|
|
|
|
Next Steps
|
|
----------
|
|
|
|
At this point, ``ytdl-sub`` should run periodically and keep your subscriptions current
|
|
in your media library without your intervention. As your :doc:`subscriptions file
|
|
<./subscriptions>` grows or you discover new use cases, it becomes worth while to
|
|
simplify things by :doc:`defining your own custom presets <./first_config>`.
|
|
|
|
|
|
|
|
.. _`cron`:
|
|
https://en.wikipedia.org/wiki/Cron
|
|
.. _`a cron schedule`:
|
|
https://crontab.cronhub.io/
|
|
|
|
.. _`the Task Scheduler`:
|
|
https://learn.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page
|
|
.. _`a support post in Discord`:
|
|
https://discord.com/channels/994270357957648404/1084886228266127460
|
|
.. _`a new GitHub issue`:
|
|
https://github.com/jmbannon/ytdl-sub/issues/new
|