пятница, 11 июня 2010 г.

Качаем файлы с file.qip.ru из консоли.

QIP Infium довольно сильно завязан на свой сайт. Даже передача файла идет не через прямое соединение или через сервер ICQ в случае NAT, файл загружается на их обменник file.qip.ru, а принимающий пользователь получает ссылку на страницу загрузки. Такой вариант оправдан, если файл весит несколько десятков мегабайт, но тащиться на сайт из-на нескольких килобайт крайне не хочется. После анализа страницы загрузки файла и войны с регулярными выражениям получился маленький скрипт.
Для работы скрипта надо поставить библиотеку libpcre, в состав которой входит программа pcregrep.
Сам скрипт:

#! /bin/sh

# качаем страницу и ищем ссылку на закачку
dllink=`curl -# $1|pcregrep -o 'http.+file.qip.ru/get[^"]+'`

# качаем вторую страницу и ищем линк на файл и очищаем имя файла от мусора

dlhtml=`curl -# "$dllink"`
dlfilelink=`echo $dlhtml|pcregrep -o "http\:\/\/dc\d{1,10}.file.qip.ru\/download[^']+"`
dlfilename1=`echo $dlhtml|pcregrep -o "http\:\/\/dc\d{1,10}.file.qip.ru\/download[^?]+"`
dlfilename=`basename $dlfilename1`

wget "$dlfilelink" -O "$dlfilename"
Ссылка на файл не получается динамически с сервера после истечения времени, а просто прячется до окончания отсчета времени.
Синтаксис: file.qip.ru.sh ссылка
В Windows могут быть проблема с не латинскими символами в именах файлов.