From 00000d943e65f228e030d35e703946d8719374d5 Mon Sep 17 00:00:00 2001 From: doms9 <96013514+doms9@users.noreply.github.com> Date: Sat, 31 Jan 2026 02:27:25 -0500 Subject: [PATCH] e switch to ffprobe for health checks --- .github/workflows/health.yml | 5 +++ M3U8/base.m3u8 | 21 ++++------- health.sh | 71 +++++++++++------------------------- 3 files changed, 33 insertions(+), 64 deletions(-) diff --git a/.github/workflows/health.yml b/.github/workflows/health.yml index f7f92f25..b7f1e9d9 100644 --- a/.github/workflows/health.yml +++ b/.github/workflows/health.yml @@ -14,6 +14,11 @@ jobs: with: fetch-depth: 0 + - name: Install FFmpeg + run: | + sudo apt-get update + sudo apt-get install ffmpeg -y + - name: Run health.sh run: bash health.sh diff --git a/M3U8/base.m3u8 b/M3U8/base.m3u8 index 8a8ddf03..45be6612 100644 --- a/M3U8/base.m3u8 +++ b/M3U8/base.m3u8 @@ -28,12 +28,10 @@ http://fl1.moveonjoy.com/Aspire/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 -#EXTVLCOPT:http-user-agent=curl/8.5.0 -http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/1723 +http://fl1.moveonjoy.com/BBC_WORLD_NEWS/index.m3u8 #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://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/2071 +http://mytvstream.net:8080/live/30550113/30550113/13702.m3u8 #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 @@ -150,8 +148,7 @@ http://mytvstream.net:8080/live/30550113/30550113/66795.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 -#EXTVLCOPT:http-user-agent=curl/8.5.0 -http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/222126 +http://mytvstream.net:8080/live/30550113/30550113/17752.m3u8 #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 @@ -160,16 +157,13 @@ http://mytvstream.net:8080/live/30550113/30550113/20934.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 -#EXTVLCOPT:http-user-agent=curl/8.5.0 -http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/222130 +http://mytvstream.net:8080/live/30550113/30550113/2213.m3u8 #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://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/220452 +http://mytvstream.net:8080/live/30550113/30550113/21843.m3u8 #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://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/222132 +http://mytvstream.net:8080/live/30550113/30550113/104917.m3u8 #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 @@ -217,8 +211,7 @@ https://fl1.moveonjoy.com/FXX/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 -#EXTVLCOPT:http-user-agent=curl/8.5.0 -http://lucidhosting.xyz:82/sandriassoc@gmail.com/Sm8G4ddxoW/1948 +http://mytvstream.net:8080/live/30550113/30550113/120633.m3u8 #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 diff --git a/health.sh b/health.sh index b781e26e..ddeedd31 100644 --- a/health.sh +++ b/health.sh @@ -1,8 +1,6 @@ #!/bin/bash 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 -RETRY_COUNT=3 README="./readme.md" STATUSLOG=$(mktemp) @@ -15,66 +13,39 @@ get_status() { [[ "$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 - response=$( - curl -skL \ - -A "$UA" \ - -H "Accept: */*" \ - -H "Accept-Language: en-US,en;q=0.9" \ - -H "Connection: keep-alive" \ - -o /dev/null \ - --compressed \ - --max-time 30 \ - -w "%{http_code}" \ - "$url" 2>&1 - ) + output=$( + ffprobe \ + -v error \ + -rw_timeout 15000000 \ + -timeout 15000000 \ + -select_streams v:0 \ + -show_entries stream=codec_name \ + -of csv=p=0 \ + -headers "User-Agent: curl/8.5.0" \ + "$url" 2>&1 + ) - [[ "$response" =~ ^[0-9]+$ ]] && break + rc=$? - sleep 1 - 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*) + if ((rc == 0)); then echo "PASS" >>"$STATUSLOG" - ;; + else + if [[ "$output" =~ Server\ returned\ ([0-9]{3})\ (.+) ]]; then + code="${BASH_REMATCH[1]}" - 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" + echo "| $channel | HTTP Error ($code) | \`$url\` |" >>"$STATUSLOG" else - echo "| $channel | Unknown status ($status_code) | \`$url\` |" >>"$STATUSLOG" + echo "| $channel | HTTP Error (000) | \`$url\` |" >>"$STATUSLOG" fi echo "FAIL" >>"$STATUSLOG" - ;; - - esac + fi } check_links() { - echo "Checking links from: $base_file" + echo -e "Checking links from: $base_file\n" total_urls=$(grep -cE '^https?://' "$base_file") channel_num=0 name=""