kuzyara

sibnet.sh

Aug 27th, 2012
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.77 KB | None | 0 0
  1. #/bin/bash
  2. #************************************************#
  3. #                  sibnet.sh                     #
  4. #         автор: [email protected]            #
  5. #                Август   , 2012                 #
  6. #                                                #
  7. #          Сохраняем популярное видео            #
  8. #           с video.sibnet.ru/rating             #
  9. #************************************************#
  10.  
  11.  
  12. #const
  13. onpage=15
  14. period=2
  15. path="."
  16. link="video.sibnet.ru/rating"
  17.  
  18. #triggers (disable options)
  19. _i=""    #скачать ролик по id
  20. _c=""    #включить кириллицу
  21.  
  22. cat <<USAGE
  23. Использование: sibnet.sh [-n ШТУК_НА_СТРАНИЦЕ] [-p ПЕРИОД] [-c] ... [КАТАЛОГ_ЗАГРУЗКИ]
  24.   -n [15|50|100]    количество скачиваемых видеороликов
  25.   -p [0|1|2]        топ-лист за выбранный период
  26.                     0=день, 1=неделя, 2=месяц
  27.   -l link           скачать все видео со страницы по адресу link
  28.   -i video_id       скачать видео по id
  29.   -c                писать кириллицу в именах файлов
  30.   КАТАЛОГ_ЗАГРУЗКИ    по умолчанию текущая директория
  31. Например: скачать 50 видеороликов из топа за месяц в домашнюю папку
  32.     sibnet.sh -n50 -p2 ~
  33. USAGE
  34.  
  35. #разбираем опции
  36. while getopts ":n:p:l:i:c" opt; do
  37.   case "$opt" in
  38.     "l")
  39.       link="$OPTARG" >&2
  40.      ;;
  41.     "c")
  42.       _c=1 >&2
  43.      ;;
  44.     "i")
  45.       _i="$OPTARG" >&2
  46.      ;;
  47.     "n")
  48.       onpage="$OPTARG" >&2
  49.      ;;
  50.     "p")
  51.       period="$OPTARG" >&2
  52.      ;;
  53.     "?")
  54.       echo "Invalid option: -$OPTARG" >&2
  55.       exit 1
  56.      ;;
  57.     ":")
  58.       echo "Option -$OPTARG requires an argument." >&2
  59.       exit 1
  60.      ;;
  61.   esac
  62. done
  63. #разбираем параметр path
  64. for p in "${@:$OPTIND}"; do
  65.   mkdir -p $p 2> /dev/null     #comment or not to comment...
  66.   if [ -d $p ]; then
  67.     path=$p
  68.     break
  69.   else
  70.     exit
  71.   fi
  72.   shift
  73. done
  74. path=`grep -io ".*[^/]" <<< "$path"`        #убираем / на конце
  75. echo "...onpage=$onpage period=$period dir=$path"
  76. #exit
  77.  
  78.  
  79. if ! [ $_i ]; then    # читается: если нет опции -i (то парсим страницу)
  80.   echo "...получаем куки"
  81.   wget --save-cookies=/tmp/cookies.txt --keep-session-cookies -q --spider 'video.sibnet.ru/rating'
  82.   echo "...устанавливаем период $period id=0|1|2 (день|неделя|месяц)"
  83.   wget --load-cookies=/tmp/cookies.txt --keep-session-cookies -q --spider --max-redirect=0 "http://video.sibnet.ru/set.php?action=period&id=$period"
  84.   echo "...устанавливаем лимит видео на странице $onpage onpage=15|50|100"
  85.   wget --load-cookies=/tmp/cookies.txt --keep-session-cookies -q --spider --max-redirect=0 "http://video.sibnet.ru/set.php?action=videoonpage&onpage=$onpage"
  86.   echo "...сохраняем получившуюся страницу в /tmp для парсинга"
  87.   wget --load-cookies=/tmp/cookies.txt --keep-session-cookies -q "$link" -O /tmp/video.sibnet.ru.html
  88.   echo "...выдираем список названий видео и id на транслите"
  89.   list=`grep -iroP '(?<=/video)\d+[^/]*(?=/)' /tmp/video.sibnet.ru.html`
  90.   rus_list=( `grep -oP "<a.*?/video\d+.*?/a>" /tmp/video.sibnet.ru.html | iconv -t utf8 -f cp1251 | grep -oP '(?<=alt=").*(?= - )' | sed  's/[/\\*?<>|:"$% ]/_/g'` )
  91. else
  92.   list=$_i
  93. fi
  94. l=`wc -w <<< $list`
  95. echo "Количество роликов: $l "
  96.  
  97.  
  98. #echo $list
  99. echo "Входим в цикл."
  100. for i in $list; do
  101.   let k=k+1
  102. echo "--------File $k of $l ---------"
  103. echo Name: $i
  104.   id=`echo $i | grep -Po "^\d+"`
  105. echo "...получаем ссылку"
  106.   xml=`wget -q "http://video.sibnet.ru/shell_config_xml.php?videoid=${id}&type=video.sibnet.ru" -O - `
  107.   url=`echo $xml | grep -Po "(?<=<file>).*(?=</file>)" | sed 's/amp;//g'`
  108. echo URL: $url
  109. echo "...узнаем размер видео-файла"
  110.   wget -S --spider "$url" -o /tmp/wget.log
  111.   video_size=`grep -iraoP "(?<=Content-Length: )[0-9]*" /tmp/wget.log | tail -n 1`
  112. echo FileSize: $video_size
  113.     filename="$path/${i}.flv"
  114.     [ $_c ] && filename="$path/${rus_list[$k-1]}.flv"       # если включена опция -с
  115.   if [ -e $filename ] && [ $video_size -eq `stat -c%s $filename` ]
  116.   then
  117.     echo "Такой файл уже есть! Пропускаем."
  118.   else
  119.     #rm -f $filename
  120.     echo "...cобственно скачивание файла"
  121.     wget -c $url -O $filename
  122.   fi
  123. #exit
  124. done
  125.  
  126. echo "ГОТОВО!"
Advertisement
Add Comment
Please, Sign In to add comment