Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #/bin/bash
- #************************************************#
- # sibnet.sh #
- # автор: [email protected] #
- # Август , 2012 #
- # #
- # Сохраняем популярное видео #
- # с video.sibnet.ru/rating #
- #************************************************#
- #const
- onpage=15
- period=2
- path="."
- link="video.sibnet.ru/rating"
- #triggers (disable options)
- _i="" #скачать ролик по id
- _c="" #включить кириллицу
- cat <<USAGE
- Использование: sibnet.sh [-n ШТУК_НА_СТРАНИЦЕ] [-p ПЕРИОД] [-c] ... [КАТАЛОГ_ЗАГРУЗКИ]
- -n [15|50|100] количество скачиваемых видеороликов
- -p [0|1|2] топ-лист за выбранный период
- 0=день, 1=неделя, 2=месяц
- -l link скачать все видео со страницы по адресу link
- -i video_id скачать видео по id
- -c писать кириллицу в именах файлов
- КАТАЛОГ_ЗАГРУЗКИ по умолчанию текущая директория
- Например: скачать 50 видеороликов из топа за месяц в домашнюю папку
- sibnet.sh -n50 -p2 ~
- USAGE
- #разбираем опции
- while getopts ":n:p:l:i:c" opt; do
- case "$opt" in
- "l")
- link="$OPTARG" >&2
- ;;
- "c")
- _c=1 >&2
- ;;
- "i")
- _i="$OPTARG" >&2
- ;;
- "n")
- onpage="$OPTARG" >&2
- ;;
- "p")
- period="$OPTARG" >&2
- ;;
- "?")
- echo "Invalid option: -$OPTARG" >&2
- exit 1
- ;;
- ":")
- echo "Option -$OPTARG requires an argument." >&2
- exit 1
- ;;
- esac
- done
- #разбираем параметр path
- for p in "${@:$OPTIND}"; do
- mkdir -p $p 2> /dev/null #comment or not to comment...
- if [ -d $p ]; then
- path=$p
- break
- else
- exit
- fi
- shift
- done
- path=`grep -io ".*[^/]" <<< "$path"` #убираем / на конце
- echo "...onpage=$onpage period=$period dir=$path"
- #exit
- if ! [ $_i ]; then # читается: если нет опции -i (то парсим страницу)
- echo "...получаем куки"
- wget --save-cookies=/tmp/cookies.txt --keep-session-cookies -q --spider 'video.sibnet.ru/rating'
- echo "...устанавливаем период $period id=0|1|2 (день|неделя|месяц)"
- wget --load-cookies=/tmp/cookies.txt --keep-session-cookies -q --spider --max-redirect=0 "http://video.sibnet.ru/set.php?action=period&id=$period"
- echo "...устанавливаем лимит видео на странице $onpage onpage=15|50|100"
- wget --load-cookies=/tmp/cookies.txt --keep-session-cookies -q --spider --max-redirect=0 "http://video.sibnet.ru/set.php?action=videoonpage&onpage=$onpage"
- echo "...сохраняем получившуюся страницу в /tmp для парсинга"
- wget --load-cookies=/tmp/cookies.txt --keep-session-cookies -q "$link" -O /tmp/video.sibnet.ru.html
- echo "...выдираем список названий видео и id на транслите"
- list=`grep -iroP '(?<=/video)\d+[^/]*(?=/)' /tmp/video.sibnet.ru.html`
- rus_list=( `grep -oP "<a.*?/video\d+.*?/a>" /tmp/video.sibnet.ru.html | iconv -t utf8 -f cp1251 | grep -oP '(?<=alt=").*(?= - )' | sed 's/[/\\*?<>|:"$% ]/_/g'` )
- else
- list=$_i
- fi
- l=`wc -w <<< $list`
- echo "Количество роликов: $l "
- #echo $list
- echo "Входим в цикл."
- for i in $list; do
- let k=k+1
- echo "--------File $k of $l ---------"
- echo Name: $i
- id=`echo $i | grep -Po "^\d+"`
- echo "...получаем ссылку"
- xml=`wget -q "http://video.sibnet.ru/shell_config_xml.php?videoid=${id}&type=video.sibnet.ru" -O - `
- url=`echo $xml | grep -Po "(?<=<file>).*(?=</file>)" | sed 's/amp;//g'`
- echo URL: $url
- echo "...узнаем размер видео-файла"
- wget -S --spider "$url" -o /tmp/wget.log
- video_size=`grep -iraoP "(?<=Content-Length: )[0-9]*" /tmp/wget.log | tail -n 1`
- echo FileSize: $video_size
- filename="$path/${i}.flv"
- [ $_c ] && filename="$path/${rus_list[$k-1]}.flv" # если включена опция -с
- if [ -e $filename ] && [ $video_size -eq `stat -c%s $filename` ]
- then
- echo "Такой файл уже есть! Пропускаем."
- else
- #rm -f $filename
- echo "...cобственно скачивание файла"
- wget -c $url -O $filename
- fi
- #exit
- done
- echo "ГОТОВО!"
Advertisement
Add Comment
Please, Sign In to add comment