Новый скрипт playlists, который выкачивает ini

- playlists вызывается в download-all
- download-all теперь вызывается в начале find-in-all и make-pls
- мелочи по скриптам в целом
This commit is contained in:
Антон Аксенов
2025-03-18 17:05:07 +08:00
parent 2ec6b582c4
commit c3163d683d
7 changed files with 36 additions and 20 deletions

View File

@@ -3,6 +3,7 @@
Проект, содержащий в себе скрипты для работы с IPTV-плейлистами. Проект, содержащий в себе скрипты для работы с IPTV-плейлистами.
Для начала работы необходимо скачать файл [playlists.ini](https://git.axenov.dev/IPTV/playlists/raw/branch/master/playlists.ini). Для начала работы необходимо скачать файл [playlists.ini](https://git.axenov.dev/IPTV/playlists/raw/branch/master/playlists.ini).
Для этого можно запустить `./playlists.sh`.
- [Инструменты для работы с IPTV-плейлистами](#инструменты-для-работы-с-iptv-плейлистами) - [Инструменты для работы с IPTV-плейлистами](#инструменты-для-работы-с-iptv-плейлистами)
- [Скачать все плейлисты](#скачать-все-плейлисты) - [Скачать все плейлисты](#скачать-все-плейлисты)

View File

@@ -1,5 +1,4 @@
#!/bin/bash #!/bin/bash
################################################# #################################################
# #
# IPTV Playlist check tool # IPTV Playlist check tool

View File

@@ -1,5 +1,4 @@
#!/bin/bash #!/bin/bash
################################################# #################################################
# #
# IPTV Playlist download tool # IPTV Playlist download tool
@@ -15,17 +14,18 @@
# https://git.axenov.dev/IPTV/tools/src/branch/master/LICENSE # 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; )"; TOOLS_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )";
DL_DIR="$TOOLS_DIR/downloaded" DL_DIR="$TOOLS_DIR/downloaded"
INI_FILE="$(dirname "$TOOLS_DIR")/playlists.ini" INI_FILE="$TOOLS_DIR/playlists.ini"
rm -rf "$DL_DIR" && \ rm -rf "$DL_DIR" && \
mkdir -p "$DL_DIR" && \ mkdir -p "$DL_DIR" && \
cd "$DL_DIR" && \ cd "$DL_DIR" && \
cat "$INI_FILE" \ grep -oP "(?<=pls=)(.*)" "$INI_FILE" \
| grep -P "pls\s*=\s*'(.*)'" \ | tr -d "'" \
| sed "s#^pls\s*=\s*##g" \
| sed "s#'##g" \
| tr -d '\r' \ | tr -d '\r' \
| xargs wget | xargs wget

View File

@@ -1,11 +1,9 @@
#!/bin/bash #!/bin/bash
################################################# #################################################
# #
# IPTV channel finder (all playlists) # IPTV channel finder (all playlists)
# #
# Usage: # Usage:
# ./download-all.sh
# ./find-in-all.sh "(disney|atv)" # ./find-in-all.sh "(disney|atv)"
# #
# 1st argument is channel name pattern. # 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="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )";
$TOOLS_DIR/download-all.sh
DL_DIR="$TOOLS_DIR/downloaded" DL_DIR="$TOOLS_DIR/downloaded"
[ ! -d "$DL_DIR" ] && echo "Error: '$DL_DIR' directory does not exist. Run ./download-all.sh" && exit 1 [ ! -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 [ ! "$(ls -A "$DL_DIR")" ] && echo "Error: '$DL_DIR' directory is empty. Run ./download-all.sh" && exit 2

View File

@@ -1,5 +1,4 @@
#!/bin/bash #!/bin/bash
################################################# #################################################
# #
# IPTV channel finder (one playlist) # IPTV channel finder (one playlist)

View File

@@ -1,11 +1,9 @@
#!/bin/bash #!/bin/bash
################################################# #################################################
# #
# IPTV channel maker (all playlists) # IPTV playlist maker (all playlists)
# #
# Usage: # Usage:
# ./download-all.sh
# ./make-pls.sh "disney" # ./make-pls.sh "disney"
# #
# 1st argument is channel name pattern. # 1st argument is channel name pattern.
@@ -18,14 +16,12 @@
# https://git.axenov.dev/IPTV/tools/src/branch/master/LICENSE # 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; )"; TOOLS_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )";
DL_DIR="$TOOLS_DIR/downloaded" $TOOLS_DIR/download-all.sh
[ ! -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
channel="$1" channel="$1"
playlist="$2"
regex_ch="^#extinf:\s*-?[01]\s*.*,(.*${channel,,}.*)" regex_ch="^#extinf:\s*-?[01]\s*.*,(.*${channel,,}.*)"
regex_url="^https?:\/\/.*$" regex_url="^https?:\/\/.*$"
@@ -34,12 +30,12 @@ found_count=0
found_last=0 found_last=0
echo "#EXTM3U" echo "#EXTM3U"
echo "# Autogenerated at `date +%d.%m.%Y`" echo "# Autogenerated at $(date '+%d.%m.%Y')"
echo "# https://git.axenov.dev/IPTV/tools" echo "# https://git.axenov.dev/IPTV/tools"
echo echo
for file in ./downloaded/*; do for file in ./downloaded/*; do
while read line; do while read -r line; do
if [[ "${line,,}" =~ $regex_ch ]]; then if [[ "${line,,}" =~ $regex_ch ]]; then
echo -e "$line" echo -e "$line"
((found_count += 1)) ((found_count += 1))
@@ -51,5 +47,5 @@ for file in ./downloaded/*; do
found_last=0 found_last=0
fi fi
fi fi
done < $file done < "$file"
done done

20
playlists.sh Executable file
View File

@@ -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"