diff --git a/CHANGELOG.md b/CHANGELOG.md index 55a83e3..7901524 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,17 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Add support for more sites +## [2.1.4] - 2022-05-29 + +### Fixed + +- Docker container now works again +- Fixed cron in docker container + +### Changed + +- Docker container scheduling is now more practical + ## [2.1.3] - 2022-05-29 ### Fixed diff --git a/docker/Dockerfile.amd64 b/docker/Dockerfile.amd64 index 5e162ba..23068c9 100644 --- a/docker/Dockerfile.amd64 +++ b/docker/Dockerfile.amd64 @@ -7,7 +7,7 @@ LABEL build_version="Version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="Ivan Schaller" # manga-dlp version -ENV MDLP_VERSION=2.1.3 +ENV MDLP_VERSION=2.1.4 # install packages RUN \ @@ -28,7 +28,6 @@ RUN \ /var/tmp/* -# copy files to container # copy files to container COPY docker/rootfs / COPY mangadlp/ /app/mangadlp/ diff --git a/docker/Dockerfile.arm64 b/docker/Dockerfile.arm64 index dd205b0..a1c5510 100644 --- a/docker/Dockerfile.arm64 +++ b/docker/Dockerfile.arm64 @@ -7,7 +7,7 @@ LABEL build_version="Version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="Ivan Schaller" # manga-dlp version -ENV MDLP_VERSION=2.1.3 +ENV MDLP_VERSION=2.1.4 # install packages RUN \ @@ -28,7 +28,6 @@ RUN \ /var/tmp/* -# copy files to container # copy files to container COPY docker/rootfs / COPY mangadlp/ /app/mangadlp/ diff --git a/docker/README.md b/docker/README.md index 27b11f7..d4eb656 100644 --- a/docker/README.md +++ b/docker/README.md @@ -33,6 +33,8 @@ docker run -e PUID= -e PGID= ## Run commands in container +> You don't need to use the full path of manga-dlp.py because `/app` already is the working directory + You can simply use the `docker exec` command to run the scripts like normal. ```sh @@ -41,21 +43,54 @@ docker exec python3 manga-dlp.py ## Run your own schedule -The default config runs manga-dlp.py once a day at 03:00 and fetches every chapter of the mangas listed in the file -mangas.txt in the root directory of this repo. +The default config runs `manga-dlp.py` once a day at 12:00 and fetches every chapter of the mangas listed in the file +`mangas.txt` in the root directory of this repo. -To use your own schedule you need to mount (override) the default crontab or add new ones to the cron directory. +#### The default schedule: + +```sh +#!/bin/bash + +python3 /app/manga-dlp.py \ + --path /app/downloads \ + --read /app/mangas.txt \ + --chapters all \ + --wait 2 +``` + +To use your own schedule you need to mount (override) the default schedule or add new ones to the crontab. + +> Don't forget to add the cron entries for every new schedule ```yml # docker-compose.yml volumes: - - ./crontab:/etc/cron.d/01_manga-dlp # overwrites the default one - - ./crontab2:/etc/cron.d/02_something # adds a new one + - ./crontab:/etc/cron.d/mangadlp # overwrites the default crontab + - ./crontab2:/etc/cron.d/something # adds a new one crontab file + - ./schedule1:/app/schedules/daily # overwrites the default schedule + - ./schedule2:/app/schedules/weekly # adds a new schedule ``` ```sh -docker run -v ./crontab:/etc/cron.d/01_manga-dlp # overwrites the default one -docker run -v ./crontab2:/etc/cron.d/02_something # adds a new one +docker run -v ./crontab:/etc/cron.d/mangadlp # overwrites the default crontab +docker run -v ./crontab2:/etc/cron.d/something # adds a new one crontab file +docker run -v ./schedule1:/app/schedules/daily # overwrites the default schedule +docker run -v ./schedule2:/app/schedules/weekly # adds a new schedule +``` + +#### The default crontab file: + +```sh +SHELL=/bin/bash +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +# default crontab to run manga-dlp once a day +# and get all (new) chapters of the mangas in +# the file mangas.txt +# "/proc/1/fd/1 2>&1" is to show the logs in the container +# "s6-setuidgid abc" is used to set the permissions + +0 12 * * * root s6-setuidgid abc /app/schedules/daily > /proc/1/fd/1 2>&1 ``` ## Add mangas to mangas.txt @@ -77,15 +112,15 @@ docker run -v ./mangas.txt:/app/mangas.txt Per default as in the script, it downloads everything to "downloads" in the scripts root directory. This data does not persist with container recreation, so you need to mount it. This is already done in the quick start section. If you want -to change the path of the host, simply change `./media/mangas/` to a path of your choice. +to change the path of the host, simply change `./downloads/` to a path of your choice. ```yml # docker-compose.yml volumes: - - ./media/mangas/:/app/downloads + - ./downloads/:/app/downloads ``` ```sh -docker run -v ./media/mangas/:/app/downloads +docker run -v ./downloads/:/app/downloads ``` diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index d6144ed..1b47ccb 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -12,6 +12,8 @@ services: volumes: - ./downloads/:/app/downloads/ # default manga download directory - ./mangas.txt:/app/mangas.txt # default file for manga links to download + #- ./crontab:/etc/cron.d/mangadlp # path to default crontab + #- ./schedule:/app/schedules/daily # path to the default schedule which is run daily environment: - TZ=Europe/Zurich # - PUID= # custom userid - defaults to 4444 diff --git a/docker/rootfs/app/schedules/daily b/docker/rootfs/app/schedules/daily new file mode 100755 index 0000000..d1d9d1f --- /dev/null +++ b/docker/rootfs/app/schedules/daily @@ -0,0 +1,7 @@ +#!/bin/bash + +python3 /app/manga-dlp.py \ + --path /app/downloads \ + --read /app/mangas.txt \ + --chapters all \ + --wait 2 diff --git a/docker/rootfs/etc/cont-init.d/80-fix-perms b/docker/rootfs/etc/cont-init.d/80-fix-perms index 1ec425d..bddecbc 100644 --- a/docker/rootfs/etc/cont-init.d/80-fix-perms +++ b/docker/rootfs/etc/cont-init.d/80-fix-perms @@ -10,3 +10,6 @@ find '/app' -type 'f' \( -not -perm 664 -and -not -path '/app/downloads*' \) -ex find '/app' \( -not -user abc -and -not -path '/app/downloads*' \) -exec chown abc '{}' \+ find '/app' \( -not -group abc -and -not -path '/app/downloads*' \) -exec chown :abc '{}' \+ + +# fix schedules +chmod -R +x /app/schedules diff --git a/docker/rootfs/etc/cron.d/01-manga-dlp b/docker/rootfs/etc/cron.d/01-manga-dlp deleted file mode 100644 index 3547e86..0000000 --- a/docker/rootfs/etc/cron.d/01-manga-dlp +++ /dev/null @@ -1,5 +0,0 @@ -# default crontab to run manga-dlp once a day -# and get all (new) chapters of the mangas in -# the file mangas.txt - -0 3 * * * abc python3 /app/manga-dlp.py --read /app/mangas.txt -c all diff --git a/docker/rootfs/etc/cron.d/mangadlp b/docker/rootfs/etc/cron.d/mangadlp new file mode 100644 index 0000000..3db1d4d --- /dev/null +++ b/docker/rootfs/etc/cron.d/mangadlp @@ -0,0 +1,11 @@ +SHELL=/bin/bash +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +# default crontab to run manga-dlp once a day +# and get all (new) chapters of the mangas in +# the file mangas.txt +# "/proc/1/fd/1 2>&1" is to show the logs in the container +# "s6-setuidgid abc" is used to set the permissions + +0 12 * * * root s6-setuidgid abc /app/schedules/daily > /proc/1/fd/1 2>&1 + diff --git a/manga-dlp.py b/manga-dlp.py index 40715cf..75dfe24 100644 --- a/manga-dlp.py +++ b/manga-dlp.py @@ -3,7 +3,7 @@ import sys from mangadlp.input import get_args -mangadlp_version = "2.1.3" +mangadlp_version = "2.1.4" def get_input(): diff --git a/mangadlp/input.py b/mangadlp/input.py index a18e142..4ae6871 100644 --- a/mangadlp/input.py +++ b/mangadlp/input.py @@ -4,7 +4,7 @@ from pathlib import Path import mangadlp.app as app -mangadlp_version = "2.1.3" +mangadlp_version = "2.1.4" def check_args(args): diff --git a/setup.py b/setup.py index 1877374..151d055 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ long_description = readme.read_text() setuptools.setup( name="manga-dlp", - version="2.1.3", + version="2.1.4", author="Ivan Schaller", author_email="ivan@schaller.sh", description="A cli manga downloader",