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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Скрипт для скачивания последней версии "чего либо" с сайта.  (Прочитано 994 раз)

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

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
К примеру, нужно скачать Mediainfo. Как?
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
PPA website
Не?

Хотя, это несколько смущает:
Цитировать
Is *not* currently up to date
« Последнее редактирование: 08 Апреля 2011, 03:00:14 от arcfi »

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
*39 лежит там, а у меня *43-я, в этом и проблема.

Более актуально с драйверами для ати, вот их последнюю версию качать очень полезно.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
(
uname -m | grep '^i' >/dev/null && ARCH=i386 || ARCH=amd64

URL="http://mediainfo.sourceforge.net/en/Download/Ubuntu"
RELC="$(lsb_release -sc)"
RELR="$(lsb_release -sr)"

wget -qO- "$URL" \
    | grep -iA21 "ubuntu.*$RELR.*$RELC" \
    | grep -o "http://[^\"]*$ARCH[^\"]*\.deb" \
    | grep -v "\-dev" \
    | while read
        do
            echo wget -P /tmp "$REPLY"
        done
)

Дальше надо придумать, как воевать с печеньками sourceforge, или что у них там...

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Если не секрет, что оно делает.
У меня - ничего. =/
« Последнее редактирование: 08 Апреля 2011, 22:03:35 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Если не секрет, что оно делает.
Парсит страничку и выковыривает URL'ы для скачивания последних версий пакетов для текущей версии дистрибутива.

Проблема в том, что sourceforge.net не даёт напрямую качать по этим линкам.
Детально не было времени разбираться, но как я понял, надо заморачиваться с куками.

Пример того, как оно должно работать:
$ (
> uname -m | grep '^i' >/dev/null && ARCH=i386 || ARCH=amd64
>
> URL="http://mediainfo.sourceforge.net/en/Download/Ubuntu"
> RELC="$(lsb_release -sc)"
> RELR="$(lsb_release -sr)"
>
> wget -qO- "$URL" \
>     | grep -iA21 "ubuntu.*$RELR.*$RELC" \
>     | grep -o "http://[^\"]*$ARCH[^\"]*\.deb" \
>     | grep -v "\-dev" \
>     | while read
>         do
>             echo wget -P /tmp "$REPLY"
>         done
> )
wget -P /tmp http://downloads.sourceforge.net/mediainfo/mediainfo-gui_0.7.43-1_i386.Debian_5.deb
wget -P /tmp http://downloads.sourceforge.net/mediainfo/mediainfo_0.7.43-1_i386.Debian_5.deb
wget -P /tmp http://downloads.sourceforge.net/mediainfo/libmediainfo0_0.7.43-1_i386.Ubuntu_10.04.deb
wget -P /tmp http://downloads.sourceforge.net/zenlib/libzen0_0.4.19-1_i386.Ubuntu_10.04.deb

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Мой вариант:
wget http://sourceforge.net/projects/mediainfo/files/binary/mediainfo/0.7.43/
wget "http://sourceforge.net/projects/mediainfo/files/binary/mediainfo/0.7.43/""`cat index.html | grep -o title=.*i386.*deb | sed '/Click/d;/6.0/d' | sed 's/title="//g'`"
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Мой вариант
...
Работает?

wget http://sourceforge.net/projects/mediainfo/files/binary/mediainfo/0.7.43/
Это сразу привязывает нас к версии пакета 0.7.43, а не к последней актуальной.

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Э... ступил.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн shumtest

  • Активист
  • *
  • Сообщений: 731
  • Это вам просто кажется...
    • Просмотр профиля
    • Блог Шумомера
#!/bin/bash

uname -m | grep '^i' >/dev/null && ARCH=i386 || ARCH=amd64

URL="http://mediainfo.sourceforge.net/en/Download/Ubuntu"
RELC="$(lsb_release -sc)"
RELR="$(lsb_release -sr)"

wget --save-cookies /tmp/cookie.txt --keep-session-cookies -qO- "$URL" \
    | grep -iA21 "ubuntu.*$RELR.*$RELC" \
    | grep -o "http://[^\"]*$ARCH[^\"]*\.deb" \
    | grep -v "\-dev" \
    | while read
        do
            wget --load-cookies /tmp/cookie.txt -P /tmp "$REPLY"
        done

проверено, работает. все скаченное - лежит в /tmp

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
На сайте почему-то рядом с 10.10 написано lucid, так что пришлось немного пофиксить регэксп, чтобы корректно парсило.
Ещё добавил выбор каталога для загружаемых пакетов и пару косметических изменений.
По дефолту качает в загрузки.

uname -m | grep '^i' >/dev/null && ARCH=i386 || ARCH=amd64

URL="http://mediainfo.sourceforge.net/en/Download/Ubuntu"
RELR="$(lsb_release -sr)"
PKG_DIR="${1:-$(xdg-user-dir DOWNLOAD)}"
COOKIE="/tmp/cookie.txt"

wget --save-cookies "$COOKIE" --keep-session-cookies -qO- "$URL" \
    | grep -iA21 "id=\"$RELR.$ARCH\"" \
    | grep -o "http://[^\"]*\.deb" \
    | grep -v "\-dev" \
    | while read
        do
            wget --load-cookies "$COOKIE" -P "$PKG_DIR" "$REPLY"
        done
rm "$COOKIE"

Проверил -- усё пашет.
shumtest, спасибо за патч. :coolsmiley:

 

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