Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Поиск ссылки через bash в тексте  (Прочитано 1667 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн uspenok

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Поиск ссылки через bash в тексте
« : 18 Января 2009, 19:57:46 »
Господа, помогите пожалуйсто.
Идея в том чтобы написать скрипт под bash который будет заходить на некий поисковик музыки, для поиска и скачивания композиции.
Имею на данный момент такую ситуацию:
Ввожу название композиции, формируется ссылка поиска, и скачивается полученная страница через wget. Далее я имею http страницу довольно таки сложную, там всякая муть и ссылки на mp3.
Нужно изъять ссылки, чтоб потом подставить в wget.

Я пробовал так:
...
a=`grep ".mp3" "search.page.http"`
...
Но полученный результат не обрадовал, он выводит строки в виде

"<a target="_blank" href="http://sleepah.com/music/Plug.In.Baby.mp3" class="link" title="Plug In Baby">Plug In Baby</a>"

И всё в одну строку вообщем не работает как надо (.
Хотелосьбы чтоб из выше преведённой строки вытекала такая:
"http://sleepah.com/music/Plug.In.Baby.mp3"

P.S. Заранее спасибо.  Если завершу скрипт, могу раздать желающим, хоть он и очень простенький )
« Последнее редактирование: 18 Января 2009, 20:16:34 от uspenok »

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Поиск ссылки через bash в тексте
« Ответ #1 : 19 Января 2009, 07:48:30 »
Я не джедай чтобы тебе писать на чистом bash,
но man'ы я в отличии от некоторых читать умею
Код: ("man wget") [Выделить]
           You want to download all the GIFs from a directory on an HTTP
           server.  You tried wget http://www.server.com/dir/*.gif, but that
           didn’t work because HTTP retrieval does not support globbing.  In
           that case, use:
                   wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
По аналогии с mp3 сообразишь или вообще разжевать надо?

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Поиск ссылки через bash в тексте
« Ответ #2 : 19 Января 2009, 11:41:46 »
было уже
man gawk
функция gensub
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Поиск ссылки через bash в тексте
« Ответ #3 : 19 Января 2009, 11:44:31 »
wl, читай:
...
Нужно изъять ссылки, чтоб потом подставить в wget.
...
Нафига изобретать велосипед? wget сам умеет это делать.

Оффлайн uspenok

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Поиск ссылки через bash в тексте
« Ответ #4 : 19 Января 2009, 14:53:47 »
2 Yurror
Цитировать
Я не джедай чтобы тебе писать на чистом bash,
но man'ы я в отличии от некоторых читать умею
Я за вас безумно рад, теперь внимательно прочтите пост. Ваше предлложение не потходит, постолку поскольку название композиции вбивается в поисковик который ищет не по своей базе и хранит все mp3 в какой то папке, а просто индексирует страницы и выдает массу прямых ссылок на mp3, находящихся на разных сайтах.
Вы же мне предлагаете:
Цитировать
You want to download all the GIFs from a directory
Скачать все файлы gif/mp3 из какой то дирректории.

Цитировать
Нафига изобретать велосипед? wget сам умеет это делать.
Опробуйте:
wget <a target="_blank" href="http://absolution37.free.fr/mp3/Origin%20of%20Simmetry%20-%2005%20-%20Plug%20In%20Baby.mp3" class="link" title="Plug In Baby">Plug In Baby</a>
2 wl
Ну вообщем я почитал, в действительности не могу понять зачем оно мне нужно. Насколько я понял из прочтённого эта функция ищет в строке t совпадения с регулярным выражением r и заменяет r на s.

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Поиск ссылки через bash в тексте
« Ответ #5 : 19 Января 2009, 15:45:04 »
Возможны варианты.

match точно поможет:

gawk '{ match($0, /(http.*\.mp3)/, arr); print arr[1] }'

С gensub можно попытаться заменить все неподходящее на пустую строку, но что-то сходу сообразить не могу.

Насчет wget
Наверное, вот так
wget -r -l1 --no-parent -A.mp3 http://absolution37.free.fr/mp3/
« Последнее редактирование: 19 Января 2009, 15:49:48 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

Страница сгенерирована за 0.047 секунд. Запросов: 25.