Compare commits

..

No commits in common. "5ac4fa9d999c3a7208a45cbef49e9abd7135e92e" and "3f2dccee55fcd6f7a9eebb4db6b6512de28e8979" have entirely different histories.

2 changed files with 15 additions and 22 deletions

View File

@ -2,8 +2,7 @@
# South Park Downloader Configuration File # # South Park Downloader Configuration File #
############################################ ############################################
# Absolute paths or paths relative to the executable are allowed. # Relative or absolute paths are allowed. Please DON'T use ~/, but rather $HOME or /home/$USER.
# Please DON'T use ~/, but rather $HOME or /home/$USER.
# youtube-dl (or youtube-dlc) executable path # youtube-dl (or youtube-dlc) executable path
YOUTUBE_DL="./yt-dlc/youtube-dlc" YOUTUBE_DL="./yt-dlc/youtube-dlc"

View File

@ -1,17 +1,14 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Resolve executable directory source "$(dirname "$0")/config.sh"
DIR="$(dirname "$(readlink -e "$0")")"
source "$DIR/config.sh" # Turn paths into absolute ones, if they aren't already. Will be necessary, since we'll change directories later.
# Turn paths into absolute ones if they aren't already. Will be necessary since we'll change directories later.
[ ! "${CACHEDIR::1}" = "/" ] && [ ! "${CACHEDIR::1}" = "/" ] &&
CACHEDIR="$DIR/$CACHEDIR" CACHEDIR="$(readlink -f "$(dirname "$0")/$CACHEDIR")"
[ ! "${OUTDIR::1}" = "/" ] && [ ! "${OUTDIR::1}" = "/" ] &&
OUTDIR="$DIR/$OUTDIR" OUTDIR="$(readlink -f "$(dirname "$0")/$OUTDIR")"
[ ! "${YOUTUBE_DL::1}" = "/" ] && [ ! "${YOUTUBE_DL::1}" = "/" ] &&
YOUTUBE_DL="$DIR/$YOUTUBE_DL" YOUTUBE_DL="$(readlink -f "$(dirname "$0")/$YOUTUBE_DL")"
[ ! -e "$OUTDIR" ] && mkdir -p "$OUTDIR" [ ! -e "$OUTDIR" ] && mkdir -p "$OUTDIR"
[ ! -e "$CACHEDIR" ] && mkdir -p "$CACHEDIR" [ ! -e "$CACHEDIR" ] && mkdir -p "$CACHEDIR"
@ -40,7 +37,7 @@ usage() {
echo " -d - Dry run: don't download, just print out URLs" echo " -d - Dry run: don't download, just print out URLs"
} }
unset OPT_SEASON OPT_EPISODE OPT_ALL OPT_EN OPT_LANG OPT_PROGRESS OPT_UPDATE_INDEX OPT_UPDATE_INDEX_EXPLICIT OPT_DRY unset OPT_SEASON OPT_EPISODE OPT_ALL OPT_EN OPT_LANG OPT_PROGRESS OPT_UPDATE_INDEX OPT_DRY
OPT_LANG="EN" OPT_LANG="EN"
OPT_PROGRESS=true OPT_PROGRESS=true
OPT_UPDATE_INDEX=true OPT_UPDATE_INDEX=true
@ -75,7 +72,6 @@ while getopts "pPEDuUdas:e:h" arg; do
;; ;;
u) u)
OPT_UPDATE_INDEX=true OPT_UPDATE_INDEX=true
OPT_UPDATE_INDEX_EXPLICIT=true
;; ;;
U) U)
unset OPT_UPDATE_INDEX unset OPT_UPDATE_INDEX
@ -93,26 +89,26 @@ done
if [ "$OPT_LANG" = "DE" ]; then if [ "$OPT_LANG" = "DE" ]; then
INDEX_FILENAME="$CACHEDIR/_episode_index_DE_" INDEX_FILENAME="$CACHEDIR/_episode_index_DE_"
INDEX_INITIAL_URL="https://www.southpark.de/folgen/940f8z/south-park-cartman-und-die-analsonde-staffel-1-ep-1" INDEX_INITIAL_URL="https://www.southpark.de/folgen/940f8z/south-park-cartman-und-die-analsonde-staffel-1-ep-1"
REGEX_EPISODE_URL="/folgen/[0-9a-z]\\+/south-park-[0-9a-z-]\\+-staffel-[0-9]\\+-ep-[0-9]\\+" REGEX_EPISODE_URL="\"/folgen/[0-9a-z]\+/south-park-[0-9a-z-]\+-staffel-[0-9]\+-ep-[0-9]\+\""
elif [ "$OPT_LANG" = "EN" ]; then elif [ "$OPT_LANG" = "EN" ]; then
INDEX_FILENAME="$CACHEDIR/_episode_index_EN_" INDEX_FILENAME="$CACHEDIR/_episode_index_EN_"
INDEX_INITIAL_URL="https://www.southpark.de/en/episodes/940f8z/south-park-cartman-gets-an-anal-probe-season-1-ep-1" INDEX_INITIAL_URL="https://www.southpark.de/en/episodes/940f8z/south-park-cartman-gets-an-anal-probe-season-1-ep-1"
REGEX_EPISODE_URL="/en/episodes/[0-9a-z]\\+/south-park-[0-9a-z-]\\+-season-[0-9]\\+-ep-[0-9]\\+" REGEX_EPISODE_URL="\"/en/episodes/[0-9a-z]\+/south-park-[0-9a-z-]\+-season-[0-9]\+-ep-[0-9]\+\""
fi fi
update_index() { update_index() {
[ ! -e "$INDEX_FILENAME" ] && echo "$INDEX_INITIAL_URL" > "$INDEX_FILENAME" [ ! -e "$INDEX_FILENAME" ] && echo "$INDEX_INITIAL_URL" > "$INDEX_FILENAME"
echo -ne "\e[32m>>> Updating episode index\e[m" echo -ne "\e[32m>>> Updating episode index\e[m"
while true; do while true; do
local SEEDURL="$(tail -n1 "$INDEX_FILENAME" | tr -d '\n')" local URL="$(tail -n1 "$INDEX_FILENAME")"
local HTML="$(curl -s "$SEEDURL")" local NEWURLS="$(curl -s "$URL" | grep -o "$REGEX_EPISODE_URL" | tr -d "\"" | sed -E "s/^/https:\/\/www.southpark.de/g")"
local URLS="$(echo -n "$HTML" | sed 's@</a>@\n@g' | sed -n "s@.*href=\"\\($REGEX_EPISODE_URL\\)\".*@\\1@p" | sed "s@^@https://www.southpark.de@g")" [ "$URL" = "$(printf "$NEWURLS" | tail -n1)" ] && break
# The sed command only retains all matches after the seed URL
local NEWURLS="$(echo -n "$URLS" | sed -n "\\@^$SEEDURL\$@{:1;n;p;b1}")"
[ -z "$NEWURLS" ] && break
echo "$NEWURLS" >> "$INDEX_FILENAME" echo "$NEWURLS" >> "$INDEX_FILENAME"
echo -ne "\e[32m.\e[m" echo -ne "\e[32m.\e[m"
done done
# The awk command removes duplicate lines
local NEW_INDEX="$(awk '!x[$0]++' "$INDEX_FILENAME")"
printf "$NEW_INDEX" > "$INDEX_FILENAME"
echo echo
} }
@ -237,8 +233,6 @@ elif [ -n "$OPT_ALL" ]; then
[ -n "$OPT_UPDATE_INDEX" ] && update_index [ -n "$OPT_UPDATE_INDEX" ] && update_index
p_info "Going to download ALL episodes" p_info "Going to download ALL episodes"
download_all download_all
elif [ -n "$OPT_UPDATE_INDEX_EXPLICIT" ] && [ -n "$OPT_UPDATE_INDEX" ]; then
update_index
else else
usage usage
exit 1 exit 1