arr=($url1 $url2 $url3)
for i in ${arr[@]}; do
if [[ $i == $1 ]] ;then
ans=$i
break
fi
done
Я не совсем знаком с rss-каналами или форматом, в котором они приходят. Я также не вижу, используя, например, newsbeuter
около 200 эпизодов, которые, как вы говорите, присутствуют в ленте (Я вижу всего 10 статей ).
Но если простая цель состоит в том, чтобы загрузить.mp3
-файлы, упомянутые в фиде -файл (с ), это может сработать для вас:
wget http://www.internethistorypodcast.com/feed/ -O feed
wget $(grep -ioP '<enclosure\s+url="\K.*?\.mp3(?=")' feed)
Первая команда загружает канал -файл (с )и сохраняет его/их как feed
. Второй извлекает имена файлов.mp3
-из теговenclosure
-в файлеfeed
-(s )и загружает их.
Примечание. :Я только что просмотрел веб-сайт и не смог найти полный список рассылки/загрузки. Его отсутствие может быть преднамеренным, и в этом свете я не думаю, что мне было бы уместно объяснять, как сканировать сам сайт, чтобы извлечь/загрузить все подкасты.
Из этого поста:
URL="https://feeds.feedburner.com/TEDenEspanol"
curl -s $URL | xmlstarlet sel -N atom="http://www.w3.org/2005/Atom" -t -m './/enclosure' -v '@url' -n | wget -i -
curl
получает XML из URL xmlstarlet
извлечь URL-адрес вложения из XML wget
список URL-адресов загрузки из стандартного ввода стандартного ввода Если вы не хотите скачивать все ссылки, wget
не нужен.
Чтобы получить, например, заголовок:
curl -s $URL | xmlstarlet sel -t -v 'rss/channel/title'
youtube-dl
может это сделать.
Просто передайте URL фида в качестве единственного аргумента.