You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
2.4 KiB
Bash

#!/bin/bash
# scrape the links
curl https://liveonlineradio.net/countries | htmlq -a href a | grep "/category/" | cut -c11- > list.txt
curl https://liveonlineradio.net/ | htmlq -a href a | grep "genres" | cut -c9- > genres.txt
# get the links for the webpages
for i in "" page/{2..200} ; do for j in $(cat list.txt) ; do curl -s https://liveonlineradio.net/category/$j/$i | htmlq -a href a | grep "https://liveonlineradio.net/" | grep -v "page\|category" | sed 's/\;//g' | awk '!seen[$0]++' | sed '/^$/d' | cut -c29- >> A-$j.txt ; echo -e "$j - $i" ; done ; done
for i in "" page/{2..200} ; do for j in $(cat genres.txt) ; do curl -s https://liveonlineradio.net/genres/$j/$i | ./htmlq -a href a | grep "https://liveonlineradio.net/" | grep -v "page\|genres" | sed 's/\;//g' | awk '!seen[$0]++' | sed '/^$/d' | cut -c29- >> A-$j.txt ; echo -e "$j - $i" ; done ; done
# remove list.txt and other empty text files
rm list.txt genres.txt ; find . -type f -empty -delete
# remove duplicate entries
for i in *.txt ; do cat $i | awk '!seen[$0]++' > A-$i ; done
# scrape the links from each text file to a m3u output
#for i in A-*.txt ; do for j in $(cat $i) ; do curl -s $j | htmlq audio | grep -oP 'src="\K[^"]+' | sed 's/\;//g' | sed '/^$/d' >> A$i ; echo -e "\n$i - $j - done\n" ; done ; done
for i in A-*.txt ; do for j in $(cat $i) ; do curl -s https://liveonlineradio.net/$j > mep1 ; cat mep1 | htmlq --text h1 | sed '/^$/d' | ( echo "#EXTINF:-1," && cat) | paste -d "" -s | awk 'length>15' >> A$i ; cat mep1 | htmlq audio | grep -oP 'src="\K[^"]+' | sed 's/\;//g' | sed '/^$/d' >> A$i ; echo -e "$i - $j" ; done ; done
#for i in A-*.txt ; do for j in $(cat $i) ; do curl -s https://liveonlineradio.net/$j > mep1 ; { echo "#EXTINF:-1 , " & cat mep1 | htmlq --text h1 | sed '/^$/d' ; } | paste -d "" -s | awk 'length>15' >> A$i ; cat mep1 | htmlq audio | grep -oP 'src="\K[^"]+' | sed 's/\;//g' | sed '/^$/d' >> A$i ; echo -e "$i - $j" ; done ; done
# remove streams that don't have a title
for i in AA-*.txt ; do cat $i | grep -B1 "http" | sed '/^$/d' > A$i ; done
# remove streams that are currently offline
for i in AAA-*.txt ; do cat $i | grep -B1 -v "OffAir" | sed '/^$/d' > A$i ; done
for i in AAAA-*.txt ; do cat $i | grep -v "\-\-" | sed '/^$/d' > A$i ; done
# convert links to m3u streams
for i in AAAAA-*.txt ; do sed '1s/^/#EXTM3U\n/' $i > $i.m3u ; done
# remove AAAAA- and double extensions in streams
for i in *.m3u ; do mv "$i" "`echo $i | sed -e 's/AAAAA-//' -e 's/.txt//'`" ; done