diff --git a/README.md b/README.md index 1a2ef62..4fd0051 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ Проект, содержащий в себе скрипты для работы с IPTV-плейлистами. Для начала работы необходимо скачать файл [playlists.ini](https://git.axenov.dev/IPTV/playlists/raw/branch/master/playlists.ini). +Для этого можно запустить `./playlists.sh`. - [Инструменты для работы с IPTV-плейлистами](#инструменты-для-работы-с-iptv-плейлистами) - [Скачать все плейлисты](#скачать-все-плейлисты) diff --git a/check-pls.sh b/check-pls.sh index 3eae46b..ce98b91 100755 --- a/check-pls.sh +++ b/check-pls.sh @@ -1,5 +1,4 @@ #!/bin/bash - ################################################# # # IPTV Playlist check tool diff --git a/download-all.sh b/download-all.sh index b465921..28abccc 100755 --- a/download-all.sh +++ b/download-all.sh @@ -1,5 +1,4 @@ #!/bin/bash - ################################################# # # IPTV Playlist download tool @@ -15,17 +14,18 @@ # https://git.axenov.dev/IPTV/tools/src/branch/master/LICENSE # ################################################# +# shellcheck disable=SC2002 + +./playlists.sh TOOLS_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"; DL_DIR="$TOOLS_DIR/downloaded" -INI_FILE="$(dirname "$TOOLS_DIR")/playlists.ini" +INI_FILE="$TOOLS_DIR/playlists.ini" rm -rf "$DL_DIR" && \ mkdir -p "$DL_DIR" && \ cd "$DL_DIR" && \ - cat "$INI_FILE" \ - | grep -P "pls\s*=\s*'(.*)'" \ - | sed "s#^pls\s*=\s*##g" \ - | sed "s#'##g" \ + grep -oP "(?<=pls=)(.*)" "$INI_FILE" \ + | tr -d "'" \ | tr -d '\r' \ | xargs wget diff --git a/find-in-all.sh b/find-in-all.sh index fa4a222..3135094 100755 --- a/find-in-all.sh +++ b/find-in-all.sh @@ -1,11 +1,9 @@ #!/bin/bash - ################################################# # # IPTV channel finder (all playlists) # # Usage: -# ./download-all.sh # ./find-in-all.sh "(disney|atv)" # # 1st argument is channel name pattern. @@ -16,7 +14,10 @@ # ################################################# + TOOLS_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"; +$TOOLS_DIR/download-all.sh + DL_DIR="$TOOLS_DIR/downloaded" [ ! -d "$DL_DIR" ] && echo "Error: '$DL_DIR' directory does not exist. Run ./download-all.sh" && exit 1 [ ! "$(ls -A "$DL_DIR")" ] && echo "Error: '$DL_DIR' directory is empty. Run ./download-all.sh" && exit 2 diff --git a/find-in-pls.sh b/find-in-pls.sh index 172c22e..3c9fad8 100755 --- a/find-in-pls.sh +++ b/find-in-pls.sh @@ -1,5 +1,4 @@ #!/bin/bash - ################################################# # # IPTV channel finder (one playlist) diff --git a/make-pls.sh b/make-pls.sh index 4a09815..54448af 100755 --- a/make-pls.sh +++ b/make-pls.sh @@ -1,11 +1,9 @@ #!/bin/bash - ################################################# # -# IPTV channel maker (all playlists) +# IPTV playlist maker (all playlists) # # Usage: -# ./download-all.sh # ./make-pls.sh "disney" # # 1st argument is channel name pattern. @@ -18,14 +16,12 @@ # https://git.axenov.dev/IPTV/tools/src/branch/master/LICENSE # ################################################# +# shellcheck disable=SC2086 TOOLS_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"; -DL_DIR="$TOOLS_DIR/downloaded" -[ ! -d "$DL_DIR" ] && echo "Error: '$DL_DIR' directory does not exist. Run ./download-all.sh" && exit 1 -[ ! "$(ls -A "$DL_DIR")" ] && echo "Error: '$DL_DIR' directory is empty. Run ./download-all.sh" && exit 2 +$TOOLS_DIR/download-all.sh channel="$1" -playlist="$2" regex_ch="^#extinf:\s*-?[01]\s*.*,(.*${channel,,}.*)" regex_url="^https?:\/\/.*$" @@ -34,12 +30,12 @@ found_count=0 found_last=0 echo "#EXTM3U" -echo "# Autogenerated at `date +%d.%m.%Y`" +echo "# Autogenerated at $(date '+%d.%m.%Y')" echo "# https://git.axenov.dev/IPTV/tools" echo for file in ./downloaded/*; do - while read line; do + while read -r line; do if [[ "${line,,}" =~ $regex_ch ]]; then echo -e "$line" ((found_count += 1)) @@ -51,5 +47,5 @@ for file in ./downloaded/*; do found_last=0 fi fi - done < $file + done < "$file" done diff --git a/playlists.sh b/playlists.sh new file mode 100755 index 0000000..b68079e --- /dev/null +++ b/playlists.sh @@ -0,0 +1,20 @@ +#!/bin/bash +################################################# +# +# IPTV playlists.ini download tool +# +# Usage: +# ./playlists.sh +# +# Remote playlists.ini will be downloaded in this directory +# More info: https://git.axenov.dev/IPTV/playlists +# +# Anthony Axenov (c) 2022 +# The MIT License: +# https://git.axenov.dev/IPTV/tools/src/branch/master/LICENSE +# +################################################# + +TOOLS_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"; +INI_FILE="$TOOLS_DIR/playlists.ini" +wget "https://git.axenov.dev/IPTV/playlists/raw/branch/master/playlists.ini" -O "$INI_FILE"