🦈🏠🐜 Initial Commit 🐜🦈🏠

This commit is contained in:
casjay 2022-10-07 15:56:48 -04:00
commit 0777c29ab9
No known key found for this signature in database
GPG Key ID: 4F765975C1F0EE5F
14 changed files with 379 additions and 0 deletions

4
.dockerignore Normal file
View File

@ -0,0 +1,4 @@
# Files to ignore
.gitkeep
.gitignore
.node_modules/**

93
.gitignore vendored Normal file
View File

@ -0,0 +1,93 @@
# gitignore created on 10/07/22 at 15:56
# Disable reminder in prompt
ignoredirmessage
# OS generated files
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# Other
**/.installed
# ignore commit message
**/.gitcommit
#ignore .failed
**/.build_failed
# ignore .bak files
**/*.bak
# ignore .no_push files
**/.no_push
# ignore .no_git files
**/.no_git

59
Dockerfile Normal file
View File

@ -0,0 +1,59 @@
FROM casjaysdevdocker/alpine:latest as build
ARG LICENSE=WTFPL \
IMAGE_NAME=youtube-dl \
TIMEZONE=America/New_York \
PORT=
ENV SHELL=/bin/bash \
TERM=xterm-256color \
HOSTNAME=${HOSTNAME:-casjaysdev-$IMAGE_NAME} \
TZ=$TIMEZONE
RUN mkdir -p /bin/ /config/ /data/ && \
rm -Rf /bin/.gitkeep /config/.gitkeep /data/.gitkeep && \
apk update -U --no-cache && \
apk add --no-cache \
ffmpeg \
py3-pip && \
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl && \
curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp && \
chmod a+rx /usr/local/bin/yt-dlp /usr/local/bin/youtube-dl
COPY ./bin/. /usr/local/bin/
COPY ./config/. /config/
COPY ./data/. /data/
FROM scratch
ARG BUILD_DATE="$(date +'%Y-%m-%d %H:%M')"
LABEL org.label-schema.name="youtube-dl" \
org.label-schema.description="Containerized version of youtube-dl" \
org.label-schema.url="https://hub.docker.com/r/casjaysdevdocker/youtube-dl" \
org.label-schema.vcs-url="https://github.com/casjaysdevdocker/youtube-dl" \
org.label-schema.build-date=$BUILD_DATE \
org.label-schema.version=$BUILD_DATE \
org.label-schema.vcs-ref=$BUILD_DATE \
org.label-schema.license="$LICENSE" \
org.label-schema.vcs-type="Git" \
org.label-schema.schema-version="latest" \
org.label-schema.vendor="CasjaysDev" \
maintainer="CasjaysDev <docker-admin@casjaysdev.com>"
ENV SHELL="/bin/bash" \
TERM="xterm-256color" \
HOSTNAME="casjaysdev-youtube-dl" \
TZ="${TZ:-America/New_York}"
WORKDIR /root
VOLUME ["/config","/data"]
EXPOSE $PORT
COPY --from=build /. /
ENTRYPOINT [ "tini", "--" ]
HEALTHCHECK CMD [ "/usr/local/bin/entrypoint-youtube-dl.sh", "healthcheck" ]
CMD [ "/usr/local/bin/entrypoint-youtube-dl.sh" ]

13
LICENSE.md Normal file
View File

@ -0,0 +1,13 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2022 casjay <git-admin@casjaysdev.com>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
1. You just DO WHAT THE FUCK YOU WANT TO.

51
README.md Normal file
View File

@ -0,0 +1,51 @@
## 👋 Welcome to youtube-dl 🚀
youtube-dl README
## Run container
```shell
dockermgr update youtube-dl
```
### via command line
```shell
docker pull casjaysdevdocker/youtube-dl:latest && \
docker run -d \
--restart always \
--name casjaysdevdocker-youtube-dl \
--hostname casjaysdev-youtube-dl \
-e TZ=${TIMEZONE:-America/New_York} \
-v $HOME/Videos/ytdl:/data/video:z \
-v $HOME/Music/ytdl:/data/audio:z \
-v $HOME/.local/share/srv/docker/youtube-dl/files/config:/config:z \
-p 80:80 \
casjaysdevdocker/youtube-dl:latest
```
### via docker-compose
```yaml
version: "2"
services:
youtube-dl:
image: casjaysdevdocker/youtube-dl
container_name: youtube-dl
environment:
- TZ=America/New_York
- HOSTNAME=casjaysdev-youtube-dl
volumes:
- $HOME/Videos/ytdl:/data/video:z
- $HOME/Music/ytdl:/data/audio:z
- $HOME/.local/share/srv/docker/youtube-dl/files/config:/config:z
ports:
- 80:80
restart: always
```
## Authors
🤖 casjay: [Github](https://github.com/casjay) [Docker](https://hub.docker.com/r/casjay) 🤖
⛵ CasjaysDevDocker: [Github](https://github.com/casjaysdevdocker) [Docker](https://hub.docker.com/r/casjaysdevdocker) ⛵

0
bin/.gitkeep Normal file
View File

134
bin/entrypoint-youtube-dl.sh Executable file
View File

@ -0,0 +1,134 @@
#!/usr/bin/env bash
# shellcheck shell=bash
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
##@Version : 202210071527-git
# @@Author : Jason Hempstead
# @@Contact : jason@casjaysdev.com
# @@License : WTFPL
# @@ReadME : entrypoint-youtube-dl.sh --help
# @@Copyright : Copyright: (c) 2022 Jason Hempstead, Casjays Developments
# @@Created : Friday, Oct 07, 2022 15:27 EDT
# @@File : entrypoint-youtube-dl.sh
# @@Description :
# @@Changelog : New script
# @@TODO : Better documentation
# @@Other :
# @@Resource :
# @@Terminal App : no
# @@sudo/root : no
# @@Template : other/docker-entrypoint
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
APPNAME="$(basename "$0" 2>/dev/null)"
VERSION="202210071527-git"
HOME="${USER_HOME:-$HOME}"
USER="${SUDO_USER:-$USER}"
RUN_USER="${SUDO_USER:-$USER}"
SCRIPT_SRC_DIR="${BASH_SOURCE%/*}"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Set bash options
[ "$1" == "--debug" ] && set -xo pipefail && export SCRIPT_OPTS="--debug" && export _DEBUG="on"
[ "$1" == "--raw" ] && export SHOW_RAW="true"
set -o pipefail
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Set functions
__version() { echo -e ${GREEN:-}"$VERSION"${NC:-}; }
__find() { ls -A "$*" 2>/dev/null; }
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# colorization
[ -n "$SHOW_RAW" ] || printf_color() { echo -e '\t\t'${2:-}"${1:-}${NC}"; }
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
__exec_bash() {
local cmd="${*:-/bin/bash}"
local exitCode=0
echo "Executing command: $cmd"
$cmd || exitCode=10
return ${exitCode:-$?}
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Define default variables
TZ="${TZ:-America/New_York}"
HOSTNAME="${HOSTNAME:-casjaysdev-bin}"
BIN_DIR="${BIN_DIR:-/usr/local/bin}"
DATA_DIR="${DATA_DIR:-$(__find /data/ 2>/dev/null | grep '^' || false)}"
CONFIG_DIR="${CONFIG_DIR:-$(__find /config/ 2>/dev/null | grep '^' || false)}"
CONFIG_COPY="${CONFIG_COPY:-false}"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Additional variables
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Export variables
export TZ HOSTNAME
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# import variables from file
[ -f "/root/env.sh" ] && . "/root/env.sh"
[ -f "/config/.env.sh" ] && . "/config/.env.sh"
[ -f "/root/env.sh" ] && [ ! -f "/config/.env.sh" ] && cp -Rf "/root/env.sh" "/config/.env.sh"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Set timezone
[ -n "${TZ}" ] && echo "${TZ}" >/etc/timezone
[ -f "/usr/share/zoneinfo/${TZ}" ] && ln -sf "/usr/share/zoneinfo/${TZ}" "/etc/localtime"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Set hostname
if [ -n "${HOSTNAME}" ]; then
echo "${HOSTNAME}" >/etc/hostname
echo "127.0.0.1 ${HOSTNAME} localhost ${HOSTNAME}.local" >/etc/hosts
fi
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Delete any gitkeep files
[ -n "${CONFIG_DIR}" ] && { [ -d "${CONFIG_DIR}" ] && rm -Rf "${CONFIG_DIR}/.gitkeep" || mkdir -p "/config/"; }
[ -n "${DATA_DIR}" ] && { [ -d "${DATA_DIR}" ] && rm -Rf "${DATA_DIR}/.gitkeep" || mkdir -p "/data/"; }
[ -n "${BIN_DIR}" ] && { [ -d "${BIN_DIR}" ] && rm -Rf "${BIN_DIR}/.gitkeep" || mkdir -p "/bin/"; }
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Copy config files to /etc
if [ -n "${CONFIG_DIR}" ] && [ "${CONFIG_COPY}" = "true" ]; then
for config in ${CONFIG_DIR}; do
if [ -d "/config/$config" ]; then
[ -d "/etc/$config" ] || mkdir -p "/etc/$config"
cp -Rf "/config/$config/." "/etc/$config/"
elif [ -f "/config/$config" ]; then
cp -Rf "/config/$config" "/etc/$config"
fi
done
fi
[ -f "/etc/.env.sh" ] && rm -Rf "/etc/.env.sh"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Additional commands
[ -d "$HOME/.config/youtube-dl" ] || mkdir -p "$HOME/.config/youtube-dl"
[ -f "/config/youtube-dl.conf" ] && cp -Rf "/config/youtube-dl.conf" "$HOME/.config/youtube-dl/config"
[ -d "/config" ] && cp -Rf "/config/." "$HOME/.config/youtube-dl/"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
case "$1" in
--help) # Help message
echo 'Docker container for '$APPNAME''
echo "Usage: $APPNAME [healthcheck, bash, command]"
echo "Failed command will have exit code 10"
echo
exitCode=$?
;;
healthcheck) # Docker healthcheck
echo "$(uname -s) $(uname -m) is running"
echo _other_commands here
exitCode=$?
;;
*/bin/sh | */bin/bash | bash | shell | sh) # Launch shell
shift 1
__exec_bash "${@:-/bin/bash}"
exitCode=$?
;;
*) # Execute primary command
if [ $# -eq 0 ]; then
__exec_bash "/bin/bash"
else
__exec_bash "/bin/bash"
fi
exitCode=$?
;;
esac
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# end of entrypoint
exit ${exitCode:-$?}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

4
bin/ytda Normal file
View File

@ -0,0 +1,4 @@
#!/usr/bin/env sh
youtube-dl -f bestaudio --extract-audio --audio-format mp3 --config-location "$HOME/.config/youtube-dl/music" "$@"
exit $?

4
bin/ytdv Normal file
View File

@ -0,0 +1,4 @@
#!/usr/bin/env sh
youtube-dl -f bestvideo+bestaudio --config-location "$HOME/.config/youtube-dl/video" "$@"
exit $?

0
config/.gitkeep Normal file
View File

7
config/audio.conf Normal file
View File

@ -0,0 +1,7 @@
# Save all music under Music directory in your home directory
-o ~/data/audio/%(title)s.%(ext)s
--metadata-from-title "(?P<artist>.+?) - (?P<title>.+)"
--add-metadata
--embed-thumbnail
--no-warnings
--ignore-errors

5
config/video.conf Normal file
View File

@ -0,0 +1,5 @@
# Save all videos under Videos directory in your home directory
-o ~/data/video/%(title)s.%(ext)s
--metadata-from-title "(?P<artist>.+?) - (?P<title>.+)"
--add-metadata
-ic

5
config/youtube-dl.conf Normal file
View File

@ -0,0 +1,5 @@
# Save all videos under Videos directory in your home directory
-o ~/data/%(title)s.%(ext)s
--metadata-from-title "(?P<artist>.+?) - (?P<title>.+)"
--add-metadata
-ic

0
data/.gitkeep Normal file
View File