# ytstream — these are INSTALLED in susan's crontab as of 2026-08-13. # Kept here as the record of what should be there (`crontab -l` to confirm). # # HC_API_URL is already set at the top of susan's crontab; these follow the # existing one-UUID-per-job convention. `sg mediaserver` guarantees new files are # group-owned by mediaserver even if the invoking shell's primary group differs. # # The two UUIDs are INHERITED from youtube-automate's entries rather than freshly # created, and the schedules are unchanged for the same reason: a healthchecks # check may be configured with a cron expression rather than a simple period, so # moving :17 to :23 could have alerted on a job that ran perfectly. Inheriting # also keeps the ping history continuous across the handover. The checks are still # *named* after youtube-automate in the hc.jihakuz.xyz UI — rename them there, it # has no effect on anything here. # Sync subscriptions, poll, materialise, reap. Hourly at :17. # Measured 2026-08-13: a full run over 11 channels takes ~8s. 17 * * * * runitor -uuid 41a4d61a-7743-43d9-9b5d-d37d536e4726 -- sg mediaserver "/usr/local/bin/ytstream run" # Keep yt-dlp current — this is the thing that keeps playback working as YouTube # changes. Mondays 04:40. # # The script tries to restart ytstream-proxy and cannot, because cron runs it as # susan. That is harmless: the proxy shells out to `yt-dlp` per request, so a pip # upgrade takes effect on the next fetch with no restart. Leaving the attempt in # means the message shows up in the healthchecks output if it ever does matter. 40 4 * * 1 runitor -uuid 721e4cf0-d796-48e7-a184-79d21e1ba373 -- /opt/ytstream/deploy/update-ytdlp.sh