switch to ffprobe for health checks
This commit is contained in:
doms9 2026-01-31 02:27:25 -05:00
parent ec9a35b657
commit 00000d943e
3 changed files with 33 additions and 64 deletions

View file

@ -14,6 +14,11 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Install FFmpeg
run: |
sudo apt-get update
sudo apt-get install ffmpeg -y
- name: Run health.sh - name: Run health.sh
run: bash health.sh run: bash health.sh

View file

@ -28,12 +28,10 @@ http://fl1.moveonjoy.com/Aspire/index.m3u8
http://fl1.moveonjoy.com/BBC_AMERICA/index.m3u8 http://fl1.moveonjoy.com/BBC_AMERICA/index.m3u8
#EXTINF:-1 tvg-chno="10" tvg-id="BBC.News.(North.America).HD.us2" tvg-name="BBC World News" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s89542_dark_360w_270h.png" group-title="TV",BBC World News #EXTINF:-1 tvg-chno="10" tvg-id="BBC.News.(North.America).HD.us2" tvg-name="BBC World News" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s89542_dark_360w_270h.png" group-title="TV",BBC World News
#EXTVLCOPT:http-user-agent=curl/8.5.0 http://fl1.moveonjoy.com/BBC_WORLD_NEWS/index.m3u8
http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/1723
#EXTINF:-1 tvg-chno="11" tvg-id="BET.HD.us2" tvg-name="BET" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10051_dark_360w_270h.png" group-title="TV",BET #EXTINF:-1 tvg-chno="11" tvg-id="BET.HD.us2" tvg-name="BET" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10051_dark_360w_270h.png" group-title="TV",BET
#EXTVLCOPT:http-user-agent=curl/8.5.0 http://mytvstream.net:8080/live/30550113/30550113/13702.m3u8
http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/2071
#EXTINF:-1 tvg-chno="12" tvg-id="Big.Ten.Network.HD.us2" tvg-name="Big Ten Network" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s56783_dark_360w_270h.png" group-title="TV",Big Ten Network #EXTINF:-1 tvg-chno="12" tvg-id="Big.Ten.Network.HD.us2" tvg-name="Big Ten Network" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s56783_dark_360w_270h.png" group-title="TV",Big Ten Network
http://23.237.104.106:8080/USA_BTN/index.m3u8 http://23.237.104.106:8080/USA_BTN/index.m3u8
@ -150,8 +148,7 @@ http://mytvstream.net:8080/live/30550113/30550113/66795.m3u8
http://mytvstream.net:8080/live/30550113/30550113/58827.m3u8 http://mytvstream.net:8080/live/30550113/30550113/58827.m3u8
#EXTINF:-1 tvg-chno="50" tvg-id="FanDuel.Sports.Network.Ohio.(Cleveland).HDTV.us" tvg-name="FDSN Ohio" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s49691_dark_360w_270h.png" group-title="TV",FDSN Ohio #EXTINF:-1 tvg-chno="50" tvg-id="FanDuel.Sports.Network.Ohio.(Cleveland).HDTV.us" tvg-name="FDSN Ohio" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s49691_dark_360w_270h.png" group-title="TV",FDSN Ohio
#EXTVLCOPT:http-user-agent=curl/8.5.0 http://mytvstream.net:8080/live/30550113/30550113/17752.m3u8
http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/222126
#EXTINF:-1 tvg-chno="51" tvg-id="FanDuel.Sports.Network.Oklahoma.24/7.HDTV.(Tulsa).us" tvg-name="FDSN Oklahoma" tvg-logo="https://i.gyazo.com/80ad6fd142cd67f06eef58d9ce5aa72b.png" group-title="TV",FDSN Oklahoma #EXTINF:-1 tvg-chno="51" tvg-id="FanDuel.Sports.Network.Oklahoma.24/7.HDTV.(Tulsa).us" tvg-name="FDSN Oklahoma" tvg-logo="https://i.gyazo.com/80ad6fd142cd67f06eef58d9ce5aa72b.png" group-title="TV",FDSN Oklahoma
http://mytvstream.net:8080/live/30550113/30550113/20934.m3u8 http://mytvstream.net:8080/live/30550113/30550113/20934.m3u8
@ -160,16 +157,13 @@ http://mytvstream.net:8080/live/30550113/30550113/20934.m3u8
http://mytvstream.net:8080/live/30550113/30550113/221151.m3u8 http://mytvstream.net:8080/live/30550113/30550113/221151.m3u8
#EXTINF:-1 tvg-chno="53" tvg-id="FanDuel.Sports.Network.Southeast.HDTV.(Mont./Birm./Dothan/Mobile.AL).us" tvg-name="FDSN Southeast" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s20789_dark_360w_270h.png" group-title="TV",FDSN Southeast #EXTINF:-1 tvg-chno="53" tvg-id="FanDuel.Sports.Network.Southeast.HDTV.(Mont./Birm./Dothan/Mobile.AL).us" tvg-name="FDSN Southeast" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s20789_dark_360w_270h.png" group-title="TV",FDSN Southeast
#EXTVLCOPT:http-user-agent=curl/8.5.0 http://mytvstream.net:8080/live/30550113/30550113/2213.m3u8
http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/222130
#EXTINF:-1 tvg-chno="54" tvg-id="FanDuel.Sports.Network.Southwest.HDTV.24/7.(Main).us" tvg-name="FDSN Southwest" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s59629_dark_360w_270h.png" group-title="TV",FDSN Southwest #EXTINF:-1 tvg-chno="54" tvg-id="FanDuel.Sports.Network.Southwest.HDTV.24/7.(Main).us" tvg-name="FDSN Southwest" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s59629_dark_360w_270h.png" group-title="TV",FDSN Southwest
#EXTVLCOPT:http-user-agent=curl/8.5.0 http://mytvstream.net:8080/live/30550113/30550113/21843.m3u8
http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/220452
#EXTINF:-1 tvg-chno="55" tvg-id="FanDuel.Sports.Network.Sun.South.24/7.HDTV.(South.Marlins,.Rays,.Heat).us" tvg-name="FDSN Sun" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s61084_dark_360w_270h.png" group-title="TV",FDSN Sun #EXTINF:-1 tvg-chno="55" tvg-id="FanDuel.Sports.Network.Sun.South.24/7.HDTV.(South.Marlins,.Rays,.Heat).us" tvg-name="FDSN Sun" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s61084_dark_360w_270h.png" group-title="TV",FDSN Sun
#EXTVLCOPT:http-user-agent=curl/8.5.0 http://mytvstream.net:8080/live/30550113/30550113/104917.m3u8
http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/222132
#EXTINF:-1 tvg-chno="56" tvg-id="FanDuel.Sports.Network.West.HDTV.us" tvg-name="FDSN West" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s59627_dark_360w_270h.png" group-title="TV",FDSN West #EXTINF:-1 tvg-chno="56" tvg-id="FanDuel.Sports.Network.West.HDTV.us" tvg-name="FDSN West" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s59627_dark_360w_270h.png" group-title="TV",FDSN West
http://mytvstream.net:8080/live/30550113/30550113/20932.m3u8 http://mytvstream.net:8080/live/30550113/30550113/20932.m3u8
@ -217,8 +211,7 @@ https://fl1.moveonjoy.com/FXX/index.m3u8
http://fl1.moveonjoy.com/FYI/index.m3u8 http://fl1.moveonjoy.com/FYI/index.m3u8
#EXTINF:-1 tvg-chno="71" tvg-id="Game.Show.Network.HD.us2" tvg-name="Game Show Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14909_dark_360w_270h.png" group-title="TV",Game Show Network #EXTINF:-1 tvg-chno="71" tvg-id="Game.Show.Network.HD.us2" tvg-name="Game Show Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14909_dark_360w_270h.png" group-title="TV",Game Show Network
#EXTVLCOPT:http-user-agent=curl/8.5.0 http://mytvstream.net:8080/live/30550113/30550113/120633.m3u8
http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/1948
#EXTINF:-1 tvg-chno="72" tvg-id="get.us2" tvg-name="getTV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s82563_dark_360w_270h.png" group-title="TV",getTV #EXTINF:-1 tvg-chno="72" tvg-id="get.us2" tvg-name="getTV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s82563_dark_360w_270h.png" group-title="TV",getTV
http://fl1.moveonjoy.com/GET_TV/index.m3u8 http://fl1.moveonjoy.com/GET_TV/index.m3u8

View file

@ -1,8 +1,6 @@
#!/bin/bash #!/bin/bash
base_file="./M3U8/base.m3u8" base_file="./M3U8/base.m3u8"
UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0"
MAX_JOBS=10 MAX_JOBS=10
RETRY_COUNT=3
README="./readme.md" README="./readme.md"
STATUSLOG=$(mktemp) STATUSLOG=$(mktemp)
@ -15,66 +13,39 @@ get_status() {
[[ "$url" != http* ]] && return [[ "$url" != http* ]] && return
printf '[%d/%d] Checking %s\n' "$((index + 1))" "$total" "$url" printf '[%d/%d] Checking "%s"\n' "$((index + 1))" "$total" "$url"
for attempt in $(seq 1 "$RETRY_COUNT"); do output=$(
response=$( ffprobe \
curl -skL \ -v error \
-A "$UA" \ -rw_timeout 15000000 \
-H "Accept: */*" \ -timeout 15000000 \
-H "Accept-Language: en-US,en;q=0.9" \ -select_streams v:0 \
-H "Connection: keep-alive" \ -show_entries stream=codec_name \
-o /dev/null \ -of csv=p=0 \
--compressed \ -headers "User-Agent: curl/8.5.0" \
--max-time 30 \
-w "%{http_code}" \
"$url" 2>&1 "$url" 2>&1
) )
[[ "$response" =~ ^[0-9]+$ ]] && break rc=$?
sleep 1 if ((rc == 0)); then
done
if [[ ! "$response" =~ ^[0-9]+$ ]]; then
if [[ "$response" == *"timed out"* ]]; then
echo "| $channel | Connection timed out | \`$url\` |" >>"$STATUSLOG"
else
echo "| $channel | Curl error | \`$url\` |" >>"$STATUSLOG"
fi
echo "FAIL" >>"$STATUSLOG"
return
fi
status_code="$response"
case "$status_code" in
2* | 3*)
echo "PASS" >>"$STATUSLOG" echo "PASS" >>"$STATUSLOG"
;;
4* | 5*)
echo "| $channel | HTTP Error ($status_code) | \`$url\` |" >>"$STATUSLOG"
echo "FAIL" >>"$STATUSLOG"
;;
*)
if [[ "$status_code" == "000" ]]; then
echo "| $channel | Connection timed out (000) | \`$url\` |" >>"$STATUSLOG"
else else
echo "| $channel | Unknown status ($status_code) | \`$url\` |" >>"$STATUSLOG" if [[ "$output" =~ Server\ returned\ ([0-9]{3})\ (.+) ]]; then
code="${BASH_REMATCH[1]}"
echo "| $channel | HTTP Error ($code) | \`$url\` |" >>"$STATUSLOG"
else
echo "| $channel | HTTP Error (000) | \`$url\` |" >>"$STATUSLOG"
fi fi
echo "FAIL" >>"$STATUSLOG" echo "FAIL" >>"$STATUSLOG"
;; fi
esac
} }
check_links() { check_links() {
echo "Checking links from: $base_file" echo -e "Checking links from: $base_file\n"
total_urls=$(grep -cE '^https?://' "$base_file") total_urls=$(grep -cE '^https?://' "$base_file")
channel_num=0 channel_num=0
name="" name=""