Advertisement
Guest User

Untitled

a guest
Sep 14th, 2012
565
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 22.27 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #-------------- Module Identification Data -------------#
  4. export MODULE_AKEY="b8d5d6eca9ef30427712f2f0151334a2"
  5. export MODULE_AUTH=""
  6. export MODULE_NAME="VK"
  7. export MODULE_VERS="-0.95"
  8. export MODULE_DATE="06.IX.2011"
  9. export MODULE_DESC="Поиск музыки ВКонтакте"
  10. export MODULE_URII="http://ftemp.net/static/vksearch";
  11. export MODULE_DPDC="mplayer sed awk grep wget ps"
  12. export MODULE_CPID="$$"
  13. export MODULE_FILE="$0"
  14. #-------------- Module Identification Ends -------------#
  15.  
  16.  
  17. SETTINGsimilarartcount=10 #кол-во артистов в поиске похожих
  18. SETTINGsimilartrcount=5   #кол-во песен каждого артиста в поиске похожих
  19.  
  20. id="5807425" # системная переменная. Взято из VK_Search Amarok Script (c) Взято из vksearch by snoopcatt script
  21. d_method='audio.search' # метод поиска музыки ВКонтакте. by default.  Взято из vksearch by snoopcatt script
  22. secret='dTckAoaSzH' # системная переменная. Секретный код приложения. Взято из VK_Search Amarok Script (c)  Взято из vksearch by snoopcatt script
  23. d_query="$*"
  24. #show_filtered=0 # лол фильтрованные  #лол хуёвые у тебя фильтрованные, сматри как нада
  25. cat $HOME/.vk_filter &>/dev/null || echo "Настройки фильтра неизвестны, используйте sf" && show_filtered=0
  26. source $HOME/.vk_filter 2>/dev/null
  27.  
  28. save_last=1 # лол последнее (типа плейлист)
  29. vr=$$
  30. ifs_backup=$IFS
  31. help='Возможные действия: p(проиграть) d(скачать) t(печатать текст) e(выход) l(напомнить список) k(убить mplayer) r(случайное) h(помощь) h all(расширенная помощь) s(новый поиск) +f/-f(включить/отключить режим повтора)  m(найти похожие), qa(добавить в очередь), qd(удалить из очереди), ql(просмотреть очередь), qc(очистить очередь), +q/-q(включить/отключить проигрывание очереди), qh(подробнее о режиме очереди), sf(настройки фильтра)'
  32. if [ -z "$*" ] ;then
  33.  #echo "Не указан запрос для поиска"
  34.  #echo "Введите '$0 запрос' для поиска данных или $0 --help для получения расширенной помощи"
  35.  #kill -11 $$
  36.  #fi
  37.  [ -f /tmp/last_query ] && d_query="$( cat /tmp/last_query )"
  38. fi
  39. me_man()
  40. {
  41.  echo "Запуск: $0 'запрос'  (при наличии пробелов и спецсимволов в запросе кавычки обязательны)"
  42.  echo "Внутренние команды:"
  43.  echo "p <номер> -- воспроизведение песни с указанным порядковым номером"
  44.  echo "d <номер> -- скачивание песни с указанным порядковым номером"
  45.  echo "k <номер> -- прервать воспроизведение песни с указанным порядковым номером"
  46.  echo "k -- завершить _все_ процессы mplayer"
  47.  echo "t <номер> -- показать текст выбранной песни (если есть)"
  48.  echo "l -- повторно вывести результаты последнего поиска"
  49.  echo "r -- воспроизвести случайную песню из найденных"
  50.  echo "s 'запрос' -- повторно провести поиск с новым запросом (при наличии пробелов и спецсимволов в запросе кавычки обязательны)"
  51.  echo "h -- показать список команд"
  52.  echo "h all -- показать эту справку"
  53.  echo "o <количество> -- указать количество показываемых результатов поиска"
  54.  echo "+f/-f -- включить/отключить режим принудительного повтора. [ВНИМАНИE]: это может быть опасно с командами 'd','l','h','t'"
  55.  echo "m <номер> -- найти исполнителей, схожих с исполнителем песни с указанным номером"
  56.  echo "+q/-q -- включить/отключить режим воспроизведения очереди. [ВНИМАНИЕ]: в режиме воспроизведения очереди недоступны мультикоманды, а также переход в режим force forever"
  57.  echo "qa <номер или выражение> -- добавить треки в очередь. введите qh для вывода подробной информации"
  58.  echo "qd <номер пункта очереди> -- удалить выбранный пункт очереди"
  59.  echo "qc -- очистить очередь"
  60.  echo "ql -- вывести текущее состояние очереди на экран"
  61.  echo ". -- повтор предыдущей команды"
  62.  echo "sf <0/1> -- показывать песни, отфильтрованные как дубликаты"
  63.  echo "lms -- команда для отладки, которой не нужно пользоваться"
  64. }
  65. if [ "$1" = "--help" ]; then
  66.  
  67.  me_man
  68.  exit 0
  69. fi
  70. qhelp(){
  71.  echo "Добавление в очередь: "
  72.  echo "Возможны следующие варианты: "
  73.  echo "qa <номер> -- добавить трек в конец очереди  (например, 'qa 5' добавляет 5-ю песню в конец очереди)"
  74.  echo "qa r -- добавить случайный трек в конец очереди"
  75.  echo "qa <НомерПервой>.<НомерПоследней> -- добавить песни от Первой до Последней в очередь (например, 'qa 3.7' добавляет песни 3,4,5,6,7 в конец очереди"
  76.  echo "qa <номер/r>x<количество> -- добавить песню <номер> в конец очереди Количество раз (например, 'qa 4x2' добавляет песню №4 в конец очереди два раза, 'qa rx3' добавляет 3 случайных песни в конец очереди"
  77.  echo "qa all -- добавить все песни в конец очереди. [ВНИМАНИЕ] Аргумент 'all' не допустим для перечисления через запятую вместе с остальными"
  78.  echo ""
  79.  echo "Также, ввод"
  80.  echo "qa 4"
  81.  echo "qa 6"
  82.  echo "И ввод"
  83.  echo "qa 4,6"
  84.  echo "Абсолютно идентичны. Чтобы добавить несколько треков, идущих не-подряд, в очередь, просто разделите их запятыми. Также, допустим ввод"
  85.  echo "qa 4,6,1.3,rx2"
  86.  echo "Будут добавлены последовательно треки: 4,6,1,2,3,Случайный,Случайный"
  87.  echo "Недопустимо сочетание '.' и 'x' в одном аргументе"
  88.  echo "Недопустимо сочетание '.' и 'r' в одном аргументе"
  89.  echo "Например 'qa 1.10x2' -- недопустимо"
  90.  echo "Например 'qa r.7' -- недопустимо"
  91.  echo ""
  92.  echo "Также, вместо команды qa можно использовать просто q"
  93.  echo ""
  94.  echo ""
  95.  echo "Удаление из очереди: "
  96.  echo "Возможны следующие варианты: "
  97.  echo "qd <номерПунктаОчереди> -- удалить пункт №номерПунктаОчереди из очереди, сместив все нижестоящие элементы на позицию вверх"
  98.  echo "qd <номерПервогоПункта>,<номерПоследнегоПункта> -- удалить все элементы очереди от №номерПервого до №номерПоследнего, сместив все нижестоящие элементы на некоторое количество позиций вверх, равное суммарному количеству удалённых последним выполнением команды qd из очереди элементов"
  99.  echo ""
  100.  echo ""
  101.  echo "Листинг очереди: "
  102.  echo "ql -- вывести список всех элементов очереди в виде"
  103.  echo "<номерПунктаОчереди Команда>"
  104.  echo ""
  105.  echo ""
  106.  echo "Очистка очереди: "
  107.  echo "Команда 'qc' очищает очередь, удаляя из неё абсолютно все элементы. Удаленная очередь восстановлению не подлежит"
  108. }
  109.  
  110. get_data(){ # Получение списка
  111.  method="$1"
  112.  count="$2"
  113.  query="$3"
  114.  if [ "$4" = "" ]; then
  115.   outfile="/tmp/vk$vr"
  116.  else
  117.   outfile="$4"
  118.  fi
  119. #echo $1 / $2 / $3 / $4
  120. #echo $outfile
  121.  sig=`echo -n "${id}api_id=1696393count=${count}method=${method}q=${query}test_mode=1v=2.0${secret}"|md5sum|awk '{ print $1 }'`
  122.  fields="aid artist title duration url lyrics_id"
  123.  wget "http://api.vkontakte.ru/api.php?api_id=1696393&count=${count}&v=2.0&method=${method}&sig=$sig&test_mode=1&q=$query" -qO "$outfile"
  124. }
  125. print_text(){
  126.  method="audio.getLyrics"
  127.  sig=`echo -n "${id}api_id=1696393lyrics_id=${1}method=${method}test_mode=1v=2.0${secret}"|md5sum|awk '{ print $1 }'`
  128.  wget "http://api.vkontakte.ru/api.php?api_id=1696393&v=2.0&method=${method}&sig=$sig&test_mode=1&lyrics_id=$1" -qO /tmp/vkl$vr
  129.  cat /tmp/vkl$vr | sed 's/<.*>//g' | grep -oE '^.*$'
  130. }
  131.  
  132. fill_array(){
  133. #echo $1
  134.  ctr=0
  135.  IFS=$'\n'
  136.  field=$1
  137. #echo fillarray $2
  138.  if [ "$2" = "" ];
  139.    then filevr="/tmp/vk$vr";
  140.    else filevr="$2";
  141.  fi
  142.  for i in `cat "$filevr" | grep $field | sed "s/[</]\{1,2\}$field>//g" | sed 's/^[ \t]*//;s/[ \t]*$//'`; do
  143.     ctr=$[ctr+1];
  144.     fl="`echo "$i" | sed 's/&//g'| sed 's/;//g'`"
  145.     #echo "Ща будет eval $fileds [$ctr] = '$fl'"
  146.     eval $field[$ctr]=\'$fl\' 2>/dev/null;
  147.  done
  148. # echo $ctr
  149.  IFS=$ifs_backup
  150. }
  151.  
  152. get_similar() {
  153.  wget -qO - "http://ws.audioscrobbler.com/2.0/artist/$1/similar.txt" | awk -F "," '{print $3}' > /tmp/vksim$$
  154.  IFSA=$IFS
  155.  IFS=$'\n'
  156.  #echo -ne "Обрабатываются схожие исполнители..\e[0;33m ["
  157.  for i in `cat /tmp/vksim$$ | head -n $SETTINGsimilarartcount`; do
  158.   IFS=$IFSA
  159.   get_data $d_method $SETTINGsimilartrcount "$i" /tmp/vksem$$
  160.   cat /tmp/vksem$$ >> /tmp/vktsem$$
  161.   #echo -ne '#'
  162.   IFS=$'\n'
  163.  done
  164.  #echo -ne "] \e[0m "
  165.  #echo "Done."
  166.  IFS=$IFSA
  167.   fields="aid artist title duration url lyrics_id"
  168.   for i in $fields; do fill_array $i "/tmp/vktsem$$"; done
  169.   total=0
  170.   get_list
  171.   #echo $help
  172.   #echo 'Поиск завершён. Выберите действие и номер найденного трека:'
  173.   rm /tmp/vksim$$ /tmp/vksem$$ /tmp/vktsem$$
  174. }
  175.  
  176. get_list () {
  177. IFS=$ifs_backup
  178. filtered=0
  179. echo > /tmp/vkli$vr
  180. echo > /tmp/vkdi$vr
  181.  for num in $(seq 1 $cnt); do
  182.   total=$num
  183.   if [ -z "${artist[$num]}" ] && [ -z "${title[$num]}" ]; then break; fi
  184.   if [ -z $( echo ${lyrics_id[$num]} | grep -oE '[0-9]*') ]; then TEXT='\e[1;31m[-]\e[0;37m'; else TEXT='\e[1;33m[+]\e[0;37m'; fi
  185.   clmr=${duration[$num]} #длительность
  186.   clmo=$((clmr%60)) #секунды длительности
  187.   if [ "$(echo -n $clmo | wc -m)" = "1" ]; then
  188.    clmo="0$clmo"
  189.   fi
  190.   onum=$(cat /tmp/vkli$vr | grep -n "${artist[$num]}  -  ${title[$num]}" | head -n 1)
  191. # echo $onum
  192.   echo "${artist[$num]}  -  ${title[$num]}" >> /tmp/vkli$vr
  193.   if [ -z "$onum" ] ; then
  194.    filtered=$((filtered+1)) ;
  195.    echo -e "\e[0;35m$num. \e[1;37m${artist[$num]}  -  ${title[$num]} $TEXT \e[0;34m$((clmr/60)):$clmo\e[0;37m";
  196.    echo $num >> /tmp/vkdi$vr
  197.  else
  198.    [ $show_filtered -eq 1 ] && echo $num удалена как повтор записи $onum;
  199.  fi
  200.  done
  201.  echo '--- Найдено ' $cnt', из них отфильтровано '$((cnt-filtered))
  202. }
  203. get_pid_for_song() { #для убийства конкретного плеера
  204.  echo $(ps uax | grep "mplayer ${url[$1]}" | awk '{print $2}')
  205. }
  206.  
  207.  #--------------------------------------------
  208.  
  209. cnt=15 #количество by default
  210. if [ -z "$(cat $HOME/.vk_set_count 2>/dev/null)" ]; then
  211.  echo 'Нет сохранённых настроек для списка. Принято решение использовать стандартные (limit: 15)'
  212. else
  213.   cnt=$(cat $HOME/.vk_set_count)
  214. fi
  215. if [ -n "$d_query" ]; then
  216. [ $save_last -eq 1 ] && echo "$d_query" > /tmp/last_query  || rm -r /tmp/last_query 2>/dev/null
  217. get_data $d_method $cnt "$d_query"
  218. for i in $fields; do fill_array $i; done
  219. total=0
  220. get_list
  221. fi
  222. #echo $help
  223. #echo 'Поиск завершён. Выберите действие и номер найденного трека:'
  224. parse_input() { #выполняется при попадании параметра
  225. userselect_d=$(echo $whatdo | awk '{print $1}')
  226. userselect_n=$(echo $whatdo | awk '{print $2}')
  227.  userselect_d="$1"
  228.  userselect_n="$2"
  229. [ -n "$( echo "$userselect_d" | grep -E '(s|pa|q)' )" ] || songinfo="#VK/${aid[$userselect_n]}: ${artist[$userselect_n]} - ${title[$userselect_n]}"
  230. #echo $userselect_n
  231.  case $userselect_d in
  232.   p)
  233.    if [ -z $userselect_n ] ; then echo "Нечего петь. Введите номер после 'p'" ; else
  234.    if [ -z $(cat /tmp/vkdi$vr | awk '{print $1}' | grep -E "^${userselect_n}\$") ] ; then echo -e "\e[0;31m[$(date +%H:%M:%S)]: Пластинка $userselect_n проигнорирована \e[0m"; else
  235.     echo -e "\e[0;35m[$(date +%H:%M:%S)]\e[0;37m: Запевай пластинку \e[1;37m$songinfo\e[0;37m"
  236.      drrr=${duration[$userselect_n]}  #длительность для forever'a
  237.      mplayer "${url[$userselect_n]}" &>/dev/null </dev/null &
  238.      P_PID=$(ps uax |grep "mplayer ${url[$userselect_n]}" | grep -v grep | awk '{print $2}')
  239.     fi
  240.    fi
  241.    ;;
  242.   d)
  243.    if [ -z $userselect_n ] ; then echo "Нечего скачивать. Введите номер после 'd'" ; else
  244.     echo -e "Пластинка \e[1;37m$songinfo\e[0;37m будет сохранена в \e[1;37m$HOME/${aid[$userselect_n]}.mp3\e[0;37m"
  245.     wget -O "$HOME/${aid[$userselect_n]}.mp3" "${url[$userselect_n]}"
  246.    fi
  247.    ;;
  248.   t)
  249.    test -z $userselect_n || print_text ${lyrics_id[$userselect_n]}
  250.    ;;
  251.   e)
  252.    #echo "Запевай пластинку 295: kill -9 $$"
  253.    kill -9 $$
  254.    ;;
  255.   l)
  256.    get_list
  257.    ;;
  258.           ql)
  259.             echo "Команды в очереди:"
  260.             cat  -b /tmp/vk$$.queue  2>/dev/null|| echo 'Очередь не найдена'
  261.             ;;
  262.           qc)
  263.             rm /tmp/vk$$.queue 2>/dev/null && echo "Очередь очищена"
  264.             ;;
  265.           qa|q)
  266.               cn_prev=$(cat /tmp/vk$$.queue 2>/dev/null | wc -l)
  267.               if [ "$userselect_n" = "all" ]; then
  268.                 userselect_all=$(seq 1 $cnt)
  269.               else
  270.                 userselect_all="$(echo $userselect_n | sed 's/,/ /g')"
  271.               fi
  272.               for queue_data in $userselect_all; do
  273.                 if [ -n "$(echo $queue_data | grep '\.')" ] ; then
  274.                   lz_start="$(echo $queue_data | awk -F '.' ' { print $1 } ')"
  275.                   lz_endop="$(echo $queue_data | awk -F '.' ' { print $2 } ')"
  276.                   for i in $(seq $lz_start $lz_endop); do
  277.                     echo p $i >> /tmp/vk$$.queue
  278.                   done
  279.                 else
  280.                   if [ -n "$(echo $queue_data | grep 'x')" ] ; then
  281.                     for zc in `seq 1 $(echo $queue_data | awk -F 'x' '{print $2}')` ; do
  282.                       zr="$(echo $queue_data | awk -F 'x' '{print $1}')"
  283.                       if [ "$zr" == "r" ]; then echo r >> /tmp/vk$$.queue; else echo p $zr >> /tmp/vk$$.queue; fi
  284.                     done
  285.                   else
  286.                     if [ "$queue_data" == "r" ]; then echo r >> /tmp/vk$$.queue; else echo p $queue_data >> /tmp/vk$$.queue; fi
  287.                   fi
  288.                 fi
  289.               done
  290.               cn_post=$(cat /tmp/vk$$.queue 2>/dev/null | wc -l)
  291.      #       echo "Команды в очереди:"
  292.      #       cat  -b /tmp/vk$$.queue     2>/dev/null        || echo 'Очередь не найдена'
  293.              echo "Добавлено успешно $((cn_post-cn_prev)) элементов. Для просмотра очереди наберите ql"
  294.             ;;
  295.           qd)
  296.             if [ -n "$userselect_n" ]; then
  297.               sed "${userselect_n}d" /tmp/vk$$.queue > /tmp/vk$$.queue.last
  298.               mv /tmp/vk$$.queue.last /tmp/vk$$.queue
  299.             fi
  300.             echo "Команды в очереди:"
  301.             cat  -b /tmp/vk$$.queue  2>/dev/null || echo 'Очередь не найдена'
  302.             ;;
  303.           qh)
  304.             qhelp
  305.             ;;
  306.  
  307.   sf)
  308.    case "$userselect_n" in
  309.      1)
  310.      show_filtered=1
  311.      echo Результаты работы фильтра отныне будут  отображаться
  312.      echo show_filtered=1 > $HOME/.vk_filter
  313.      ;;
  314.      0)
  315.      show_filtered=0
  316.      echo Результаты работы фильтра отныне не будут больше отображаться
  317.      echo show_filtered=0 > $HOME/.vk_filter
  318.      ;;
  319.      *)
  320.      echo "0 или 1. Третьего не дано."
  321.      ;;
  322.    esac
  323.    ;;
  324.   pa)
  325.    echo -e "\e[0;35m[$(date +%H:%M:%S)]\e[0;37m: Отправляемся па на \e[1;37m$(echo $userselect_n| sed 's/s/ сек./g;s/h/ ч./g;s/m/ мин./g')\e[0;37m"
  326.    sleep "$userselect_n"
  327.    ;;
  328.   k)
  329.    if [ -z $userselect_n ] ; then
  330.      echo 'Завершаем все процессы mplayer'
  331.      killall -v mplayer
  332.    else
  333.      echo "Пробуем завершить процесс mplayer для пластинки $userselect_n"
  334.      for i in $(get_pid_for_song $userselect_n); do kill -9 $i 2>/dev/null && echo 'Удача!'; done
  335.    fi
  336.    ;;
  337.   r)
  338.    nrand=0
  339.    while [ "$nrand" != "1" ] ; do
  340.      r_d=$[RANDOM%$total];
  341.      if [ -z $(cat /tmp/vkdi$vr | awk '{print $1}' | grep -E "^$r_d\$") ] ; then echo -e "\e[0;35m[$(date +%H:%M:%S)]\e[0;37m: Кубик показал \e[1;37m$r_d\e[0;37m. У кубика нет стороны \e[1;37m$r_d \e[0;37m, поэтому он будет брошен ещё раз"; else nrand=1; fi
  342.    done
  343.    echo -e "\e[0;35m[$(date +%H:%M:%S)]\e[0;37m Кубик показал \e[1;37m$r_d. Запевай пластинку \e[1;37m#VK/${aid[$r_d]}: ${artist[$r_d]} - ${title[$r_d]}\e[0;37m"
  344.    drrr=${duration[$r_d]}
  345.    mplayer "${url[$r_d]}" &>/dev/null </dev/null &
  346.    P_PID=$(ps uax |grep "mplayer ${url[$r_d]}" | grep -v grep | awk '{print $2}')
  347.    ;;
  348.   lms)
  349.    echo 'Это команда для отладки, ей не нужно пользоваться'$'\n'Нет, правда.
  350.     if [ -z "$(ps ax -o pid | grep $P_PID)" ] ; then echo 'Died'; else echo 'Still alive'; fi
  351.    ;;
  352.   h)
  353.    if [ -z "$userselect_n" ]; then echo $help; else me_man; fi
  354.    ;;
  355.   s)
  356.    unset $fields
  357.    fields="aid artist title duration url lyrics_id"
  358.    whatfind="`echo $whatdo | sed 's/^s //g'`"
  359.    get_data $d_method $cnt "$whatfind"
  360.    for i in $fields; do fill_array $i; done
  361.    total=0
  362.    get_list
  363. #   echo 'Поиск завершён. Выберите действие и номер найденного трека:'
  364.    ;;
  365.   m)
  366.    get_similar "${artist[$userselect_n]}"
  367.    ;;
  368.   o)
  369.    [ -n "$userselect_n" ] && cnt=$userselect_n && echo $cnt > $HOME/.vk_set_count && echo -e "Отныне показывать найденных: \e[1;37m$cnt\e[0;37m"
  370.     ;;
  371.   w)
  372.     echo "Ok"
  373.     clear;;
  374.  esac
  375. }
  376.  
  377. forever() {
  378.   echo "Введите команду. Введите '-f' для останова. Возможно придётся вручную остановить mplayer."
  379.   echo -n "data2/VK(+f)# "
  380.   read f_cmd
  381.   d_cmd="force forever"
  382.   while [ "$d_cmd" != '-f' ]; do
  383.     parse_input $f_cmd
  384.     read -t $drrr d_cmd
  385.     if [ -n "$d_cmd" ]; then f_cmd="$d_cmd"; fi #подмена команды на лету
  386.   done
  387.   echo "Force-forever режим отключён. Возможно придётся вручную остановить mplayer, если необходимо"
  388. }
  389.  
  390. just_queue() {
  391.   d_cmd="force queue"
  392.   while [ "$d_cmd" != '-q' ]; do
  393.     if [ -z "$(cat /tmp/vk$$.queue 2> /dev/null)" ] ; then
  394.       break
  395.     else
  396.       echo "Осталось позиций в очереди: $(cat /tmp/vk$$.queue |wc -l)"
  397.     fi
  398.     parse_input $(cat /tmp/vk$$.queue)
  399.     sed '1d' /tmp/vk$$.queue > /tmp/vk$$.queue.last
  400.     mv /tmp/vk$$.queue.last /tmp/vk$$.queue
  401.     echo -n "data2/VK(+q)# "
  402.     while [ -n "$(ps ax -o pid | grep $P_PID)" ]; do
  403.       read -t 5 d_cmd
  404. ##      echo alive
  405.       if [ -n "$d_cmd" ]; then
  406. #        d_usselect_d="$(echo $d_cmd | awk '{print $1}')";
  407. #        d_usselect_n="$(echo $d_cmd | awk '{print $2}')";
  408. #        case $d_usselect_d in
  409.           if [ "$d_cmd" = "-q" ]; then
  410.             echo "Прерывание..."
  411.             break 2
  412.           fi;
  413.  
  414.         parse_input $d_cmd
  415.         echo -n "data2/VK(+q)# "
  416.       fi
  417.     done
  418.     #echo 'died, go next'
  419.   done
  420.   echo "Режим очереди отключен. Возможно, очередь закончилась или ещё не начиналась."
  421. }
  422.  
  423.  
  424. while true ; do
  425.  echo -n "data2/VK( )# "; read whatdo
  426.  if [ -z "$d_query" ] ; then
  427.   if [ -z "$(echo $whatdo|awk '{ print $1 }'|grep -iE 's.*')" ] ; then echo "Сначала введите запрос."; continue;
  428.   else
  429.    d_query="$( echo $whatdo | sed 's/s//' )"
  430.    parse_input $whatdo
  431.    whatdo=skip
  432.    fi
  433.  fi
  434.  [ -z "$whatdo" ] && whatdo=nozavison
  435.  [  -z `echo $whatdo | awk '{ print $1 }' | grep -iE '(\.|k|s-*|l-*|t-*|o-*|h-*|w)'` ] && echo "$whatdo" > /tmp/whatdo
  436.  if [ "$whatdo" = "+f" ]; then
  437.   forever
  438.  else
  439.  if [ "$whatdo" = "+q" ]; then
  440.   just_queue
  441.  fi
  442.  if [ "$whatdo" = "." ]; then
  443.   parse_input `cat /tmp/whatdo`
  444.  fi
  445.   IFS='-';
  446.   for does in $whatdo; do #мультикоманды
  447.     IFS=$ifs_backup;
  448.     parse_input $does;
  449.  
  450.     IFS='-';
  451.   done
  452.  fi
  453.  IFS=$ifs_backup
  454. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement