Pull to refresh

Подкасты и программирование

Reading time3 min
Views5.2K
Долго слушая подкаст «Сиськи-Письки Шоу» я понял что у меня встала работа! :-)

Подкаст был настолько увлекательным, что я не мог оторваться. И тут я решил, что неплохо бы его слушать в метро. Так, у меня есть КПК, который умеет подключаться к копьютеру как флешка.

Отсюда у меня появилось 2 задачи:
  • Закачать оставшиеся подкасты на КПК
  • Докачивать подкасты на КПК по мере выхода

За работу!

Для программистов нет нерешаемых проблем.

Решаем первую задачу. Нужен скрипт, который скачает все подкасты со страницы на основе URL. Хорошей функцией будет остановка в случае если подкаст уже присутствует на носителе (для скачивания только новых).

В ходе работы у меня получился такой скрипт:

#!/bin/bash

# Как пользоваться скриптом
function usage
{
    echo 'Usage: rpod-get.sh -u -f <dest. folder> [-s | -d]'
    echo ' -u url'
    echo ' -f folder path'
    echo ' -d delete old files'
    echo ' -s stop on old file'
}

# Обрабатываем аргументы
TMP=`getopt -o u:f:sd -n 'rpod-get.sh' '--' "$@"`
if [ $? != 0 ] ; then usage; exit 1; fi
eval set '--' "$TMP"
DELETE_OLD_FILES=0
STOP_ON_OLD_FILE=0
while true ; do
    case "$1" in
        -u) URL=$2; shift 2;;
        -f) FOLDER=$2; shift 2;;
        -d) DELETE_OLD_FILES=1 ; shift ;;
        -s) STOP_ON_OLD_FILE=1 ; shift ;;
        --) shift ; break ;;
    esac
done

# Все ли аргументы имеют верные значения
if [ "$URL" = "" ]; then
    usage
    exit 1
fi
if [ "$FOLDER" = "" ]; then
    usage
    exit 1
fi
if [ "$DELETE_OLD_FILES" -eq "1" -a "$STOP_ON_OLD_FILE" -eq "1" ]; then
    echo "Cannot use -s and -d args together"
    usage
    exit 1
fi

# Получаем ссылки на mp3-файлы с подкастами
LINKS=`wget -cq -O - $URL | grep 'mp3?' | iconv -f cp1251 -t utf-8 | sed -r -e 's/.*"(.*)".*/\1/'`

# Индикатор завершенных скачиваний
DONE=0

# За дело
for LINK in $LINKS; do
    FILENAME=`echo $LINK | sed -r -e 's/.*\/([^\/]+)\?.*/\1/'`
    if [ -e $FOLDER/$FILENAME ]; then
        if [ "$DELETE_OLD_FILES" -eq "1" ]; then
            rm $FOLDER/$FILENAME
            wget -cq -O $FOLDER/$FILENAME $LINK
            let DONE=$DONE+1
        fi
        if [ "$STOP_ON_OLD_FILE" -eq "1" ]; then
            echo $DONE
            exit 0
        fi
    else
        wget -cq -O $FOLDER/$FILENAME $LINK
        let DONE=$DONE+1
    fi
done
echo $DONE

Результат?


В результате я получил скрипт, которому можно скармливать страницы вида siski-piski-show.rpod.ru и получать в указанной папке все подкасты с этой страницы. С учетом опции -s можно этот скрипт особенно полезен - он будет сразу останавливаться при получении уже существующего на носителе подкасте.

С помощью этого скрипта я скачал целиком несколько подкастов абсолютно не отвлекаясь от работы.

Хочется больше


Конечно, это еще не все. Программисты не ищут легких путей. В следующей статье я расскажу о том как докачивать новые выпуски подкастов на КПК при его подключении автоматически.
Tags:
Hubs:
+6
Comments27

Articles