From bbd08c4bc387f081d9be172c4b96989ff46cf868 Mon Sep 17 00:00:00 2001 From: DrWarpMan Date: Fri, 26 Apr 2024 10:34:36 +0200 Subject: [PATCH 1/9] added is within allowed time range logic --- rootfs/etc/services.d/autovideoconverter/run | 123 ++++++++++++++----- 1 file changed, 92 insertions(+), 31 deletions(-) diff --git a/rootfs/etc/services.d/autovideoconverter/run b/rootfs/etc/services.d/autovideoconverter/run index 415cb1c..fe33166 100755 --- a/rootfs/etc/services.d/autovideoconverter/run +++ b/rootfs/etc/services.d/autovideoconverter/run @@ -484,43 +484,104 @@ process_watch_folder() { fi } +is_within_allowed_time_range() { + allowed_time_ranges=$1 + + if [ -z "$allowed_time_ranges" ]; then + return 0 + fi + + range_pattern="^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)(-[0-9]{1,2})?(-[0-9]{1,2})?$" + + day_now=$(LC_ALL=C date +%a) # Mon, Tue, Wed, etc. + hour_now=$(LC_ALL=C date +%k) # 0-23 + + IFS=',' read -r -a ranges_array <<< "$allowed_time_ranges" + + for range in "${ranges_array[@]}"; do + if [[ $range =~ $range_pattern ]]; then + day=${BASH_REMATCH[1]} + # :1 removes the leading dash + start_hour=${BASH_REMATCH[2]:1} + end_hour=${BASH_REMATCH[3]:1} + + # Mon turns into Mon-0-24 + if [ -z "$start_hour" ]; then + start_hour=0 + end_hour=24 + fi + + # Mon-12 turns into Mon-12-13 + if [ -z "$end_hour" ]; then + end_hour=$((start_hour + 1)) + fi + + if [ "$start_hour" -lt 0 ] || [ "$start_hour" -gt 23 ]; then + echo "Invalid range: '$range', start hour must be from 0 to 23" + exit 1 + fi + + if [ "$end_hour" -lt 1 ] || [ "$end_hour" -gt 24 ]; then + echo "Invalid range: '$range', end hour must be from 1 to 24" + exit 1 + fi + + if [ "$start_hour" -ge "$end_hour" ]; then + echo "Invalid range: '$range', start hour must be less than end hour" + exit 1 + fi + + if [ "$day" == "$day_now" ] && [ "$hour_now" -ge "$start_hour" ] && [ "$hour_now" -lt "$end_hour" ]; then + return 0 + fi + else + echo "Invalid 'allowed_time_ranges' format" + exit 1 + fi + done + + return 1 +} + [ -f "$FAILED_CONVERSIONS" ] || touch "$FAILED_CONVERSIONS" [ -f "$SUCCESSFUL_CONVERSIONS" ] || touch "$SUCCESSFUL_CONVERSIONS" while true; do - for i in $(seq 1 ${AUTOMATED_CONVERSION_MAX_WATCH_FOLDERS:-5}); do - DIR="/watch$i" - if [ "$i" -eq 1 ]; then - DIR="/watch" - fi + if is_within_allowed_time_range "${ALLOWED_TIME_RANGES:-}"; then + for i in $(seq 1 ${AUTOMATED_CONVERSION_MAX_WATCH_FOLDERS:-5}); do + DIR="/watch$i" + if [ "$i" -eq 1 ]; then + DIR="/watch" + fi - # Set default settings. - AC_PRESET="${AUTOMATED_CONVERSION_PRESET:-Very Fast 1080p30}" - AC_FORMAT="${AUTOMATED_CONVERSION_FORMAT:-mp4}" - AC_SOURCE_STABLE_TIME="${AUTOMATED_CONVERSION_SOURCE_STABLE_TIME:-5}" - AC_SOURCE_MIN_DURATION="${AUTOMATED_CONVERSION_SOURCE_MIN_DURATION:-10}" - AC_SOURCE_MAIN_TITLE_DETECTION="${AUTOMATED_CONVERSION_SOURCE_MAIN_TITLE_DETECTION:-0}" - AC_OUTPUT_DIR="${AUTOMATED_CONVERSION_OUTPUT_DIR:-/output}" - AC_OUTPUT_SUBDIR="${AUTOMATED_CONVERSION_OUTPUT_SUBDIR:-UNSET}" - AC_KEEP_SOURCE="${AUTOMATED_CONVERSION_KEEP_SOURCE:-1}" - AC_VIDEO_FILE_EXTENSIONS="${AUTOMATED_CONVERSION_VIDEO_FILE_EXTENSIONS:-}" - AC_NON_VIDEO_FILE_ACTION="${AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION:-ignore}" - AC_NON_VIDEO_FILE_EXTENSIONS="${AUTOMATED_CONVERSION_NON_VIDEO_FILE_EXTENSIONS:-jpg jpeg bmp png gif txt nfo}" - AC_NO_GUI_PROGRESS="${AUTOMATED_CONVERSION_NO_GUI_PROGRESS:-0}" - AC_HANDBRAKE_CUSTOM_ARGS="${AUTOMATED_CONVERSION_HANDBRAKE_CUSTOM_ARGS:-}" - AC_OVERWRITE_OUTPUT="${AUTOMATED_CONVERSION_OVERWRITE_OUTPUT:-0}" - - # Apply per-watch folder settings. - if [ -n "${DIR#*/watch}" ]; then - for VAR in PRESET FORMAT SOURCE_STABLE_TIME SOURCE_MIN_DURATION SOURCE_MAIN_TITLE_DETECTION OUTPUT_DIR OUTPUT_SUBDIR KEEP_SOURCE VIDEO_FILE_EXTENSIONS NON_VIDEO_FILE_ACTION NON_VIDEO_FILE_EXTENSIONS NO_GUI_PROGRESS HANDBRAKE_CUSTOM_ARGS OVERWRITE_OUTPUT - do - eval "AC_$VAR=\"\${AUTOMATED_CONVERSION_${VAR}_${DIR#*/watch}:-\$AC_$VAR}\"" - done - fi + # Set default settings. + AC_PRESET="${AUTOMATED_CONVERSION_PRESET:-Very Fast 1080p30}" + AC_FORMAT="${AUTOMATED_CONVERSION_FORMAT:-mp4}" + AC_SOURCE_STABLE_TIME="${AUTOMATED_CONVERSION_SOURCE_STABLE_TIME:-5}" + AC_SOURCE_MIN_DURATION="${AUTOMATED_CONVERSION_SOURCE_MIN_DURATION:-10}" + AC_SOURCE_MAIN_TITLE_DETECTION="${AUTOMATED_CONVERSION_SOURCE_MAIN_TITLE_DETECTION:-0}" + AC_OUTPUT_DIR="${AUTOMATED_CONVERSION_OUTPUT_DIR:-/output}" + AC_OUTPUT_SUBDIR="${AUTOMATED_CONVERSION_OUTPUT_SUBDIR:-UNSET}" + AC_KEEP_SOURCE="${AUTOMATED_CONVERSION_KEEP_SOURCE:-1}" + AC_VIDEO_FILE_EXTENSIONS="${AUTOMATED_CONVERSION_VIDEO_FILE_EXTENSIONS:-}" + AC_NON_VIDEO_FILE_ACTION="${AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION:-ignore}" + AC_NON_VIDEO_FILE_EXTENSIONS="${AUTOMATED_CONVERSION_NON_VIDEO_FILE_EXTENSIONS:-jpg jpeg bmp png gif txt nfo}" + AC_NO_GUI_PROGRESS="${AUTOMATED_CONVERSION_NO_GUI_PROGRESS:-0}" + AC_HANDBRAKE_CUSTOM_ARGS="${AUTOMATED_CONVERSION_HANDBRAKE_CUSTOM_ARGS:-}" + AC_OVERWRITE_OUTPUT="${AUTOMATED_CONVERSION_OVERWRITE_OUTPUT:-0}" + + # Apply per-watch folder settings. + if [ -n "${DIR#*/watch}" ]; then + for VAR in PRESET FORMAT SOURCE_STABLE_TIME SOURCE_MIN_DURATION SOURCE_MAIN_TITLE_DETECTION OUTPUT_DIR OUTPUT_SUBDIR KEEP_SOURCE VIDEO_FILE_EXTENSIONS NON_VIDEO_FILE_ACTION NON_VIDEO_FILE_EXTENSIONS NO_GUI_PROGRESS HANDBRAKE_CUSTOM_ARGS OVERWRITE_OUTPUT + do + eval "AC_$VAR=\"\${AUTOMATED_CONVERSION_${VAR}_${DIR#*/watch}:-\$AC_$VAR}\"" + done + fi - # Process watch folder. - process_watch_folder "$DIR" - done + # Process watch folder. + process_watch_folder "$DIR" + done + fi sleep "${AUTOMATED_CONVERSION_CHECK_INTERVAL:-5}" done From 062481c4008b2d9e82c466927c21adca18ae9e8b Mon Sep 17 00:00:00 2001 From: DrWarpMan Date: Fri, 26 Apr 2024 13:35:59 +0200 Subject: [PATCH 2/9] docs --- rootfs/etc/services.d/autovideoconverter/run | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rootfs/etc/services.d/autovideoconverter/run b/rootfs/etc/services.d/autovideoconverter/run index fe33166..3d2e6e2 100755 --- a/rootfs/etc/services.d/autovideoconverter/run +++ b/rootfs/etc/services.d/autovideoconverter/run @@ -484,13 +484,14 @@ process_watch_folder() { fi } -is_within_allowed_time_range() { +is_now_within_time_range() { allowed_time_ranges=$1 if [ -z "$allowed_time_ranges" ]; then return 0 fi - + + # Example formats: Mon, Tue-3, Wed-12-15 range_pattern="^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)(-[0-9]{1,2})?(-[0-9]{1,2})?$" day_now=$(LC_ALL=C date +%a) # Mon, Tue, Wed, etc. @@ -547,7 +548,7 @@ is_within_allowed_time_range() { [ -f "$SUCCESSFUL_CONVERSIONS" ] || touch "$SUCCESSFUL_CONVERSIONS" while true; do - if is_within_allowed_time_range "${ALLOWED_TIME_RANGES:-}"; then + if is_now_within_time_range "${ALLOWED_TIME_RANGES:-}"; then for i in $(seq 1 ${AUTOMATED_CONVERSION_MAX_WATCH_FOLDERS:-5}); do DIR="/watch$i" if [ "$i" -eq 1 ]; then From a70ac496836f55804099f5635c64efdb7e6160f1 Mon Sep 17 00:00:00 2001 From: DrWarpMan Date: Fri, 26 Apr 2024 13:56:47 +0200 Subject: [PATCH 3/9] added new env to Dockerfile --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 889ff02..3085055 100644 --- a/Dockerfile +++ b/Dockerfile @@ -158,7 +158,8 @@ ENV \ AUTOMATED_CONVERSION_HANDBRAKE_CUSTOM_ARGS= \ AUTOMATED_CONVERSION_INSTALL_PKGS= \ AUTOMATED_CONVERSION_NO_GUI_PROGRESS=0 \ - AUTOMATED_CONVERSION_USE_TRASH=0 + AUTOMATED_CONVERSION_USE_TRASH=0 \ + AUTOMATED_CONVERSION_ALLOWED_TIME_RANGES= # Define mountable directories. VOLUME ["/storage"] From 8f341b63004f08f92b7c24c8a95051b760cb4221 Mon Sep 17 00:00:00 2001 From: DrWarpMan Date: Fri, 26 Apr 2024 15:23:22 +0200 Subject: [PATCH 4/9] added docs for time based autoconversion --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index ec57ba0..e8f3cee 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,7 @@ of this parameter has the format `=`. |`AUTOMATED_CONVERSION_HANDBRAKE_CUSTOM_ARGS`| Custom arguments to pass to HandBrake when performing a conversion. | (no value) | |`AUTOMATED_CONVERSION_INSTALL_PKGS`| Space-separated list of Alpine Linux packages to install. This is useful when the automatic video converter's hooks require tools not available in the container image. See https://pkgs.alpinelinux.org for the list of available Alpine Linux packages. | (no value) | |`AUTOMATED_CONVERSION_USE_TRASH`| When set to `1`, the automatic video converter uses the trash directory. So when the automatic video converter is configured to *not* keep sources, it will move them to the trash directory (`/trash` inside the container) instead of deleting them. | `0` | +|`AUTOMATED_CONVERSION_ALLOWED_TIME_RANGES`| Comma-separated list of time ranges during which the automatic video converter is allowed to convert videos. See the [Time-based Automated Conversion](#time-based-automated-conversion) section for more details. | (no value) | #### Deployment Considerations @@ -752,6 +753,29 @@ subdirectory. For example, if `AUTOMATED_CONVERSION_OUTPUT_SUBDIR` is set to host, `/home/user/appvolumes/HandBrake/TV Shows` should be monitored by the application. +### Time-based Automated Conversion + +The automatic video converter can be configured to convert videos only during a specific time range(s). +This is useful to prevent the automatic video converter from running during the night (or day), active hours, etc. + +The time ranges are defined by the `AUTOMATED_CONVERSION_ALLOWED_TIME_RANGES` environment variable. + +The value of this variable is a comma-separated list of time ranges. +The format of a single time range is `DAY-START_HOUR-END_HOUR`, where: + - `DAY` is a short name of the day of the week. It can be one of the following values: `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat`, `Sun`. + - `START_HOUR` is the starting hour of the time range. It must be an integer between 0 and 23. + - `END_HOUR` is the ending hour of the time range. It must be an integer between 1 and 24. Always greater than `START_HOUR`. End hour is exclusive. + +`START_HOUR` and `END_HOUR` are optional. If `END_HOUR` is omitted, it defaults to `START_HOUR + 1`. +If both `START_HOUR` and `END_HOUR` are omitted, the time range is set to the whole day (0-24). + +Examples of valid values: + - `Tue-14-18`: Convert videos only on Monday, between 14:00 and 17:59. + - `Wed-9-17,Thu-9-17,Fri-9-17`: Convert videos only on Wednesday, Thursday and Friday, between 9:00 and 16:59. + - `Sun-1-2`: Convert videos only on Sunday, between 1:00 and 1:59. Equivalent to `Sun-1`. + - `Mon-0-24`: Convert videos only on Monday, at any hour. Equivalent to `Mon`. + - `Fri-18-24,Sat,Sun,Mon-0-6`: Convert videos from Friday 18:00 to Monday 5:59. + ## Intel Quick Sync Video Intel Quick Sync Video is Intel's brand for its dedicated video encoding and From 56e149592f35e785a5ad7adeeb994b6d69704bfa Mon Sep 17 00:00:00 2001 From: DrWarpMan Date: Fri, 26 Apr 2024 15:26:42 +0200 Subject: [PATCH 5/9] typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e8f3cee..a91042a 100644 --- a/README.md +++ b/README.md @@ -770,7 +770,7 @@ The format of a single time range is `DAY-START_HOUR-END_HOUR`, where: If both `START_HOUR` and `END_HOUR` are omitted, the time range is set to the whole day (0-24). Examples of valid values: - - `Tue-14-18`: Convert videos only on Monday, between 14:00 and 17:59. + - `Tue-14-18`: Convert videos only on Tuesday, between 14:00 and 17:59. - `Wed-9-17,Thu-9-17,Fri-9-17`: Convert videos only on Wednesday, Thursday and Friday, between 9:00 and 16:59. - `Sun-1-2`: Convert videos only on Sunday, between 1:00 and 1:59. Equivalent to `Sun-1`. - `Mon-0-24`: Convert videos only on Monday, at any hour. Equivalent to `Mon`. From 195141011bbdf725cdb13420e6acc46a193955d1 Mon Sep 17 00:00:00 2001 From: DrWarpMan Date: Fri, 26 Apr 2024 15:32:49 +0200 Subject: [PATCH 6/9] timezone note --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a91042a..be590c1 100644 --- a/README.md +++ b/README.md @@ -776,6 +776,8 @@ Examples of valid values: - `Mon-0-24`: Convert videos only on Monday, at any hour. Equivalent to `Mon`. - `Fri-18-24,Sat,Sun,Mon-0-6`: Convert videos from Friday 18:00 to Monday 5:59. +**NOTE**: Don't forget to adjust the time zone of the container to avoid confusion. + ## Intel Quick Sync Video Intel Quick Sync Video is Intel's brand for its dedicated video encoding and From 01cf472b986713c0698c8a3b643960d3560ba741 Mon Sep 17 00:00:00 2001 From: DrWarpMan Date: Fri, 26 Apr 2024 15:55:58 +0200 Subject: [PATCH 7/9] docs --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index be590c1..561ea9f 100644 --- a/README.md +++ b/README.md @@ -776,6 +776,8 @@ Examples of valid values: - `Mon-0-24`: Convert videos only on Monday, at any hour. Equivalent to `Mon`. - `Fri-18-24,Sat,Sun,Mon-0-6`: Convert videos from Friday 18:00 to Monday 5:59. +Keep in mind, if a video conversion starts within an allowed time range, and the conversion lasts longer than the time range, the conversion process will continue until it's finished. + **NOTE**: Don't forget to adjust the time zone of the container to avoid confusion. ## Intel Quick Sync Video From 129873455d8e27d4341247cee00247e5c882812e Mon Sep 17 00:00:00 2001 From: DrWarpMan Date: Fri, 26 Apr 2024 15:59:14 +0200 Subject: [PATCH 8/9] per watch folder timebased conversion --- rootfs/etc/services.d/autovideoconverter/run | 69 ++++++++++---------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/rootfs/etc/services.d/autovideoconverter/run b/rootfs/etc/services.d/autovideoconverter/run index 3d2e6e2..74e9c35 100755 --- a/rootfs/etc/services.d/autovideoconverter/run +++ b/rootfs/etc/services.d/autovideoconverter/run @@ -548,41 +548,44 @@ is_now_within_time_range() { [ -f "$SUCCESSFUL_CONVERSIONS" ] || touch "$SUCCESSFUL_CONVERSIONS" while true; do - if is_now_within_time_range "${ALLOWED_TIME_RANGES:-}"; then - for i in $(seq 1 ${AUTOMATED_CONVERSION_MAX_WATCH_FOLDERS:-5}); do - DIR="/watch$i" - if [ "$i" -eq 1 ]; then - DIR="/watch" - fi + for i in $(seq 1 ${AUTOMATED_CONVERSION_MAX_WATCH_FOLDERS:-5}); do + DIR="/watch$i" + if [ "$i" -eq 1 ]; then + DIR="/watch" + fi - # Set default settings. - AC_PRESET="${AUTOMATED_CONVERSION_PRESET:-Very Fast 1080p30}" - AC_FORMAT="${AUTOMATED_CONVERSION_FORMAT:-mp4}" - AC_SOURCE_STABLE_TIME="${AUTOMATED_CONVERSION_SOURCE_STABLE_TIME:-5}" - AC_SOURCE_MIN_DURATION="${AUTOMATED_CONVERSION_SOURCE_MIN_DURATION:-10}" - AC_SOURCE_MAIN_TITLE_DETECTION="${AUTOMATED_CONVERSION_SOURCE_MAIN_TITLE_DETECTION:-0}" - AC_OUTPUT_DIR="${AUTOMATED_CONVERSION_OUTPUT_DIR:-/output}" - AC_OUTPUT_SUBDIR="${AUTOMATED_CONVERSION_OUTPUT_SUBDIR:-UNSET}" - AC_KEEP_SOURCE="${AUTOMATED_CONVERSION_KEEP_SOURCE:-1}" - AC_VIDEO_FILE_EXTENSIONS="${AUTOMATED_CONVERSION_VIDEO_FILE_EXTENSIONS:-}" - AC_NON_VIDEO_FILE_ACTION="${AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION:-ignore}" - AC_NON_VIDEO_FILE_EXTENSIONS="${AUTOMATED_CONVERSION_NON_VIDEO_FILE_EXTENSIONS:-jpg jpeg bmp png gif txt nfo}" - AC_NO_GUI_PROGRESS="${AUTOMATED_CONVERSION_NO_GUI_PROGRESS:-0}" - AC_HANDBRAKE_CUSTOM_ARGS="${AUTOMATED_CONVERSION_HANDBRAKE_CUSTOM_ARGS:-}" - AC_OVERWRITE_OUTPUT="${AUTOMATED_CONVERSION_OVERWRITE_OUTPUT:-0}" - - # Apply per-watch folder settings. - if [ -n "${DIR#*/watch}" ]; then - for VAR in PRESET FORMAT SOURCE_STABLE_TIME SOURCE_MIN_DURATION SOURCE_MAIN_TITLE_DETECTION OUTPUT_DIR OUTPUT_SUBDIR KEEP_SOURCE VIDEO_FILE_EXTENSIONS NON_VIDEO_FILE_ACTION NON_VIDEO_FILE_EXTENSIONS NO_GUI_PROGRESS HANDBRAKE_CUSTOM_ARGS OVERWRITE_OUTPUT - do - eval "AC_$VAR=\"\${AUTOMATED_CONVERSION_${VAR}_${DIR#*/watch}:-\$AC_$VAR}\"" - done - fi + # Set default settings. + AC_PRESET="${AUTOMATED_CONVERSION_PRESET:-Very Fast 1080p30}" + AC_FORMAT="${AUTOMATED_CONVERSION_FORMAT:-mp4}" + AC_SOURCE_STABLE_TIME="${AUTOMATED_CONVERSION_SOURCE_STABLE_TIME:-5}" + AC_SOURCE_MIN_DURATION="${AUTOMATED_CONVERSION_SOURCE_MIN_DURATION:-10}" + AC_SOURCE_MAIN_TITLE_DETECTION="${AUTOMATED_CONVERSION_SOURCE_MAIN_TITLE_DETECTION:-0}" + AC_OUTPUT_DIR="${AUTOMATED_CONVERSION_OUTPUT_DIR:-/output}" + AC_OUTPUT_SUBDIR="${AUTOMATED_CONVERSION_OUTPUT_SUBDIR:-UNSET}" + AC_KEEP_SOURCE="${AUTOMATED_CONVERSION_KEEP_SOURCE:-1}" + AC_VIDEO_FILE_EXTENSIONS="${AUTOMATED_CONVERSION_VIDEO_FILE_EXTENSIONS:-}" + AC_NON_VIDEO_FILE_ACTION="${AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION:-ignore}" + AC_NON_VIDEO_FILE_EXTENSIONS="${AUTOMATED_CONVERSION_NON_VIDEO_FILE_EXTENSIONS:-jpg jpeg bmp png gif txt nfo}" + AC_NO_GUI_PROGRESS="${AUTOMATED_CONVERSION_NO_GUI_PROGRESS:-0}" + AC_HANDBRAKE_CUSTOM_ARGS="${AUTOMATED_CONVERSION_HANDBRAKE_CUSTOM_ARGS:-}" + AC_OVERWRITE_OUTPUT="${AUTOMATED_CONVERSION_OVERWRITE_OUTPUT:-0}" + AC_ALLOWED_TIME_RANGES="${AUTOMATED_CONVERSION_ALLOWED_TIME_RANGES:-}" + + # Apply per-watch folder settings. + if [ -n "${DIR#*/watch}" ]; then + for VAR in PRESET FORMAT SOURCE_STABLE_TIME SOURCE_MIN_DURATION SOURCE_MAIN_TITLE_DETECTION OUTPUT_DIR OUTPUT_SUBDIR KEEP_SOURCE VIDEO_FILE_EXTENSIONS NON_VIDEO_FILE_ACTION NON_VIDEO_FILE_EXTENSIONS NO_GUI_PROGRESS HANDBRAKE_CUSTOM_ARGS OVERWRITE_OUTPUT ALLOWED_TIME_RANGES + do + eval "AC_$VAR=\"\${AUTOMATED_CONVERSION_${VAR}_${DIR#*/watch}:-\$AC_$VAR}\"" + done + fi - # Process watch folder. - process_watch_folder "$DIR" - done - fi + if ! is_now_within_time_range "$AC_ALLOWED_TIME_RANGES"; then + continue + fi + + # Process watch folder. + process_watch_folder "$DIR" + done sleep "${AUTOMATED_CONVERSION_CHECK_INTERVAL:-5}" done From 5ffc269756fdcb1dcfb4f1a3b53b76c427768a46 Mon Sep 17 00:00:00 2001 From: DrWarpMan Date: Fri, 26 Apr 2024 15:59:37 +0200 Subject: [PATCH 9/9] leading zeroes fix --- rootfs/etc/services.d/autovideoconverter/run | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rootfs/etc/services.d/autovideoconverter/run b/rootfs/etc/services.d/autovideoconverter/run index 74e9c35..c5de572 100755 --- a/rootfs/etc/services.d/autovideoconverter/run +++ b/rootfs/etc/services.d/autovideoconverter/run @@ -512,11 +512,15 @@ is_now_within_time_range() { end_hour=24 fi + start_hour=$(echo "$start_hour" | bc) # Remove leading zeros + # Mon-12 turns into Mon-12-13 if [ -z "$end_hour" ]; then end_hour=$((start_hour + 1)) fi + end_hour=$(echo "$end_hour" | bc) # Remove leading zeros + if [ "$start_hour" -lt 0 ] || [ "$start_hour" -gt 23 ]; then echo "Invalid range: '$range', start hour must be from 0 to 23" exit 1