Initial commit
This commit is contained in:
84
find-in-pls.sh
Executable file
84
find-in-pls.sh
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
|
||||
#################################################
|
||||
#
|
||||
# IPTV channel finder (one playlist)
|
||||
#
|
||||
# Usage:
|
||||
# ./find-in-pls.sh "disney" local/pls.m3u
|
||||
# ./find-in-pls.sh "disney" https://example.com/pls.m3u
|
||||
#
|
||||
# 1st argument is channel name pattern.
|
||||
#
|
||||
# 2nd argument is playlist file name or URL.
|
||||
# If it is an URL it will be saved in /tmp and
|
||||
# checked as local file.
|
||||
#
|
||||
# Both *.m3u and *.m3u8 are supported.
|
||||
#
|
||||
# Anthony Axenov (c) 2022
|
||||
# The MIT License:
|
||||
# https://git.axenov.dev/IPTV/tools/src/branch/master/LICENSE
|
||||
#
|
||||
#################################################
|
||||
|
||||
channel="$1"
|
||||
playlist="$2"
|
||||
playlist_url="$playlist"
|
||||
regex_ch="^#extinf:\s*-?[01]\s*.*,(.*${channel,,}.*)"
|
||||
regex_url="^https?:\/\/.*$"
|
||||
|
||||
is_downloaded=0
|
||||
download_dir="/tmp/$(date '+%s%N')"
|
||||
|
||||
found_count=0
|
||||
found_last=0
|
||||
line_count=1
|
||||
|
||||
if [[ "$playlist" =~ $regex_url ]]; then
|
||||
mkdir -p "$download_dir"
|
||||
cd "$download_dir"
|
||||
wget "$playlist" -q > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
is_downloaded=1
|
||||
playlist="$download_dir/$(ls -1 "$download_dir")"
|
||||
cd - > /dev/null
|
||||
else
|
||||
echo "ERROR: cannot download playlist: $playlist"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "--------------------"
|
||||
echo -e "\033[20m\033[97mChannel:\033[0m $channel"
|
||||
echo -e "\033[20m\033[97mPlaylist:\033[0m $playlist_url"
|
||||
echo -e "\033[20m\033[97mRegex:\033[0m $regex_ch"
|
||||
echo "--------------------"
|
||||
|
||||
while read line; do
|
||||
if [[ "${line,,}" =~ $regex_ch ]]; then
|
||||
echo -e "\n\033[32m$line_count FOUND:\033[0m\t$line"
|
||||
((found_count += 1))
|
||||
found_last=$found_count
|
||||
fi
|
||||
if [ $found_last -gt 0 ]; then
|
||||
if [[ "${line,,}" =~ $regex_url ]]; then
|
||||
echo -e "\t\t$line"
|
||||
found_last=0
|
||||
fi
|
||||
fi
|
||||
((line_count += 1))
|
||||
done < $playlist
|
||||
|
||||
if [ $found_count -eq 0 ]; then
|
||||
echo -e "\033[91mNothing found\033[0m"
|
||||
else
|
||||
echo "--------------------"
|
||||
echo -e "\033[20m\033[97mChannel:\033[0m $channel"
|
||||
echo -e "\033[20m\033[97mPlaylist:\033[0m $playlist_url"
|
||||
echo -e "\033[20m\033[97mFound:\033[0m\033[32m $found_count\033[0m"
|
||||
fi
|
||||
|
||||
if [ $is_downloaded -eq 1 ]; then
|
||||
rm -rf "$download_dir"
|
||||
fi
|
||||
Reference in New Issue
Block a user