diff options
author | Mike Crute <mike@crute.us> | 2018-02-27 04:27:37 +0000 |
---|---|---|
committer | Mike Crute <mike@crute.us> | 2018-02-27 04:27:37 +0000 |
commit | 113ac47ce88dae726551e3fab9d640d4e977c835 (patch) | |
tree | 0a1ba50ea9cd7330b0f339e727d03ada2b227c79 /auto-dvd-ripper | |
parent | 7e3908d14bfab45e6b3c3962efa50bdc60398b24 (diff) | |
download | dockerfiles-113ac47ce88dae726551e3fab9d640d4e977c835.tar.bz2 dockerfiles-113ac47ce88dae726551e3fab9d640d4e977c835.tar.xz dockerfiles-113ac47ce88dae726551e3fab9d640d4e977c835.zip |
Add dvd ripper
Diffstat (limited to 'auto-dvd-ripper')
-rw-r--r-- | auto-dvd-ripper/Dockerfile | 19 | ||||
-rw-r--r-- | auto-dvd-ripper/Makefile | 23 | ||||
-rwxr-xr-x | auto-dvd-ripper/entrypoint.sh | 5 | ||||
-rw-r--r-- | auto-dvd-ripper/handbrake-1.0.7-r5.apk | bin | 0 -> 326824 bytes | |||
-rwxr-xr-x | auto-dvd-ripper/rip_dvd.sh | 64 |
5 files changed, 111 insertions, 0 deletions
diff --git a/auto-dvd-ripper/Dockerfile b/auto-dvd-ripper/Dockerfile new file mode 100644 index 0000000..5994cb7 --- /dev/null +++ b/auto-dvd-ripper/Dockerfile | |||
@@ -0,0 +1,19 @@ | |||
1 | FROM alpine:edge | ||
2 | LABEL maintainer="Mike Crute <mike@crute.us>" | ||
3 | |||
4 | COPY handbrake-1.0.7-r5.apk /tmp/ | ||
5 | |||
6 | RUN \ | ||
7 | echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories; \ | ||
8 | apk --no-cache add su-exec dumb-init sg3_utils; \ | ||
9 | apk --no-cache --allow-untrusted add /tmp/handbrake-1.0.7-r5.apk; \ | ||
10 | addgroup -g 1000 -S alpine; \ | ||
11 | adduser -u 1000 -S -H -D -G alpine alpine; \ | ||
12 | addgroup alpine cdrom; \ | ||
13 | rm -rf /root/.cache /tmp/*; | ||
14 | |||
15 | ADD rip_dvd.sh /usr/bin/ | ||
16 | ADD entrypoint.sh / | ||
17 | |||
18 | ENTRYPOINT ["/entrypoint.sh"] | ||
19 | CMD ["/sbin/su-exec", "alpine", "/usr/bin/rip_dvd.sh"] | ||
diff --git a/auto-dvd-ripper/Makefile b/auto-dvd-ripper/Makefile new file mode 100644 index 0000000..a8c34a7 --- /dev/null +++ b/auto-dvd-ripper/Makefile | |||
@@ -0,0 +1,23 @@ | |||
1 | REPO=575365190010.dkr.ecr.us-west-2.amazonaws.com | ||
2 | IMAGE=auto-dvd-ripper:latest-alpine | ||
3 | |||
4 | all: | ||
5 | docker build -t $(IMAGE) . | ||
6 | |||
7 | all-no-cache: | ||
8 | docker build --no-cache -t $(IMAGE) . | ||
9 | |||
10 | run: | ||
11 | docker run -d \ | ||
12 | --device /dev/cdrom \ | ||
13 | -v /mnt/Media:/mnt/Media \ | ||
14 | -v /var/log/ripper:/var/log/ripper \ | ||
15 | $(IMAGE) | ||
16 | |||
17 | send: | ||
18 | docker save auto-dvd-ripper:latest-alpine | ssh alpine@snoopy docker load | ||
19 | |||
20 | publish: | ||
21 | eval $$(aws ecr get-login --region us-west-2) | ||
22 | docker tag $(IMAGE) $(REPO)/$(IMAGE) | ||
23 | docker push $(REPO)/$(IMAGE) | ||
diff --git a/auto-dvd-ripper/entrypoint.sh b/auto-dvd-ripper/entrypoint.sh new file mode 100755 index 0000000..8b1a3e4 --- /dev/null +++ b/auto-dvd-ripper/entrypoint.sh | |||
@@ -0,0 +1,5 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | sg_raw /dev/cdrom ea 00 00 00 00 00 01 | ||
4 | |||
5 | exec /usr/bin/dumb-init "$@" | ||
diff --git a/auto-dvd-ripper/handbrake-1.0.7-r5.apk b/auto-dvd-ripper/handbrake-1.0.7-r5.apk new file mode 100644 index 0000000..c103667 --- /dev/null +++ b/auto-dvd-ripper/handbrake-1.0.7-r5.apk | |||
Binary files differ | |||
diff --git a/auto-dvd-ripper/rip_dvd.sh b/auto-dvd-ripper/rip_dvd.sh new file mode 100755 index 0000000..9bb79e0 --- /dev/null +++ b/auto-dvd-ripper/rip_dvd.sh | |||
@@ -0,0 +1,64 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | exec 1> /var/log/ripper/ripper.log 2>&1 | ||
4 | |||
5 | function handbrake_rip() { | ||
6 | TEMP_FILE="${1}.m4v" | ||
7 | |||
8 | if [ -e "/mnt/Media/IncomingBackup/$TEMP_FILE" ]; then | ||
9 | TEMP_FILE="NewMovie-$(date +%s).m4v" | ||
10 | fi | ||
11 | |||
12 | HandBrakeCLI --main-feature --native-language eng \ | ||
13 | -i /dev/cdrom -o "$TEMP_FILE" \ | ||
14 | --subtitle scan --subtitle-burned native | ||
15 | |||
16 | cp "$TEMP_FILE" "/mnt/Media/Incoming/$TEMP_FILE" | ||
17 | } | ||
18 | |||
19 | function dvdbackup_rip() { | ||
20 | dvdbackup -i /dev/cdrom -M -p | ||
21 | cp -r "${1}" "/mnt/Media/IncomingBackup/" | ||
22 | } | ||
23 | |||
24 | function rip_dvd() { | ||
25 | # Make sure we have storage | ||
26 | if ! mount | grep /mnt/Media > /dev/null; then | ||
27 | email "Error: DVD Rip Failed" "Tried to rip but media wasn't mounted" | ||
28 | return 1 | ||
29 | fi | ||
30 | |||
31 | # Make a temp directory and go there | ||
32 | TEMPDIR=$(mktemp -d) | ||
33 | echo $TEMPDIR | ||
34 | cd $TEMPDIR | ||
35 | |||
36 | # Get title and language | ||
37 | HandBrakeCLI --scan -i /dev/cdrom > dvdinfo 2>&1 | ||
38 | |||
39 | TITLE=$(egrep -o 'DVD Title:.*' dvdinfo | awk 'BEGIN { FS=": "; } { print $2 }') | ||
40 | LANGUAGE=$(grep -A 1 'audio tracks:' dvdinfo | sed -n 2p | awk '{ print $3 }') | ||
41 | |||
42 | # Makeup something unique if the DVD doesn't have one | ||
43 | if [ -z "$TITLE" ]; then | ||
44 | TITLE="NewMovie-$(date +%s)" | ||
45 | fi | ||
46 | |||
47 | trap "eject /dev/cdrom" ERR | ||
48 | |||
49 | #dvdbackup_rip "$TITLE" | ||
50 | handbrake_rip "$TITLE" | ||
51 | |||
52 | eject /dev/cdrom | ||
53 | cd /tmp && rm -rf "$TEMPDIR" | ||
54 | } | ||
55 | |||
56 | while true; do | ||
57 | if ! blkid /dev/cdrom | grep 'TYPE=' >/dev/null; then | ||
58 | sleep 1 | ||
59 | else | ||
60 | echo "=============================== START DVD RIP ==============================" | ||
61 | rip_dvd | ||
62 | echo "============================== FINISH DVD RIP ==============================" | ||
63 | fi | ||
64 | done | ||