баш-костыли для подкастов

Руководства, инструкции, советы и хитрости
Ответить
Аватара пользователя
lumberjack
Модератор
Сообщения: 1010
Зарегистрирован: 30 сен 2012, 04:04
Темы: 152
Откуда: Сургут
Статус: Не в сети

баш-костыли для подкастов

Сообщение lumberjack » 30 апр 2015, 19:22

захотелось подкасты послушать, но качать лень, а в качестве плеера пользуюсь mpd в связке с ncmpcpp. посему нарисовал такое:

Код: Выделить всё

#!/usr/bin/env bash
echo "получение списка"
wget -q http://podcast.armadamusic.com/armada/podcast.xml -O - | egrep "m4a|mp3" | sed 's/.*http/http/g;s/m4a.*/m4a/;s/mp3.*/mp3/' | sort -u > /tmp/armada.txt

while [[ true ]]; do
	wget -rci /tmp/armada.txt -nH --cut-dirs=3 -P '/mnt/data2/music/lossy/podcasts/Armada/'
	zenity --info --text 'закачка завершена'&& break || sleep 10s
done

rm /tmp/armada.txt

echo "получение списка";

for year in $(seq 2014 2015); do
    wget "http://garagefm.ru/?menu=18&year=$year&type=mix" -O - | sed "s/ /\n/g" | 
    grep -a "mp3" | grep -a ^href | awk -F\" '{print $2}' > /tmp/garage.txt
done
for year in $(seq 2014 2015); do
    for month in $(seq 1 12); do
        wget "http://garagefm.ru/?menu=18&year=$year&month=$month&type=radio" -O - | 
        sed "s/ /\n/g" | grep -a "mp3" | grep -a ^href | awk -F\" '{print $2}' >> /tmp/garage.txt
    done        
done

while [[ true ]]; do
    wget -rci /tmp/garage.txt -nH --cut-dirs=3 -P /mnt/data2/music/lossy/radio/europe+/garagefm/ \
    && zenity --info --text 'закачка завершена' && break;
done

rm /tmp/garage.txt;

exit 0;
завернул в сервис: cat ~/.config/systemd/user/podcasts.service

Код: Выделить всё

[Unit]
Description=Скачивание подкастов

[Service]
ExecStart=/home/black/.config/scripts/podcasts
Environment=DISPLAY=:0

[Install]
WantedBy=default.target
и пустил еженедельно по таймеру: cat ~/.config/systemd/user/podcasts.timer

Код: Выделить всё

[Unit]
Description=Запуск еженедельного скачивания подкастов

[Timer]
OnCalendar=weekly
Persistent=true     
 
[Install]
WantedBy=timers.target
затем включил таймер:
systemctl --user enable podcasts.timer ; systemctl --user start podcasts.timer
по завершению скачивания выскакивает уведомление, что закачка завершена.
если в mpd не настроено автообновление базы, можно обновить ее вручную командой mpc update
в принципе, файлы можно и не качать, а ограничится лишь списком ссылок, сохранив их в плейлист:

Код: Выделить всё

wget -q http://podcast.armadamusic.com/armada/podcast.xml -O - | egrep "m4a|mp3" | 
sed 's/.*http/http/g;s/m4a.*/m4a/;s/mp3.*/mp3/' | sort -u > /tmp/podsacts_$(date +%F).m3u;

for year in $(seq 2014 2015); do
    wget "http://garagefm.ru/?menu=18&year=$year&type=mix" -O - | sed "s/ /\n/g" | 
    grep -a "mp3" | grep -a ^href | awk -F\" '{print $2}' >> /tmp/podsacts_$(date +%F).m3u
done
for year in $(date +%Y); do
    for month in $(date +%m | sed 's/.*0//')  ; do
        wget "http://garagefm.ru/?menu=18&year=$year&month=$month&type=radio" -O - | 
        sed "s/ /\n/g" | grep -a "mp3" | grep -a ^href | awk -F\" '{print $2}' >> /tmp/podsacts_$(date +%F).m3u
    done
done
ваш_плеер /tmp/podsacts_$(date +%F).m3u
ps
дополняем, предлагаем, критикуем :)

Аватара пользователя
ZEN
Администратор
Сообщения: 1362
Зарегистрирован: 27 сен 2012, 18:23
Темы: 208
Откуда: Украина, Одесса
Статус: Не в сети

Re: баш-костыли для подкастов

Сообщение ZEN » 30 апр 2015, 22:21

хм... подсветка синтаксиса глючит, если в коде ссылки есть... Я сменил пока что тег code2 на code
бог создал труд и обезьяну
чтоб получился человек
а вот пингвина он не трогал
тот сразу вышел хорошо

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей