PDA

Просмотр полной версии : Нужна помощь!


HakaR
27.07.2009, 12:46
Кто может подсказать, как написать прогу для скачивание музыки с vkontakte.ru? Заранее спасибо! :confused:

ZdezBilYa
27.07.2009, 13:04
Авторизируешься на сайте, переходишь на нужную страницу, находишь ссылку на файл, скачиваешь файл

HakaR
27.07.2009, 13:09
Ясно! А можно это как нибудь в коде показать?

ZdezBilYa
27.07.2009, 13:50
Может сразу написать прогу?)))
Почитай про Delphi, про POST и GET запросы. Авторизация - это POST-запрос с параметрами логина и пароля. Переход на страницу - GET-запрос. Находишь ссылку анализом исходного кода страницы (парсинг). Сохранение файла на комп - тоже какая-то функция в Delphi.

HakaR
27.07.2009, 14:26
Спсб, уже разобрался!))

HakaR
27.07.2009, 14:30
И ещё можно вопрос, как написать что либо в адресную строку Internet Exploler'а?

Fata1ex
27.07.2009, 14:47
Програмно? Это называется "запрос". Юзай поиск.

HakaR
27.07.2009, 15:07
Да, програмно! Может обьясните как это осуществить на Delphi?

Или хотя бы подкиньте статейку по теме! :)

s0l_ir0n
27.07.2009, 15:12
FindWindow
FindWindowEx
SetWindowText
SendMessage

HakaR
27.07.2009, 15:19
Спасибо!

HakaR
27.07.2009, 15:38
procedure TForm1.Button1Click(Sender: TObject);
var
ie: hwnd;
begin
ie:=FindWindow('Microsoft Internet Explorer', nil);
SetWindowText(ie, '123');
end;

Не могу понять чего еще не хватает!? :mad:

Gar|k
27.07.2009, 15:41
http://forum.antichat.ru/thread130409.html

s0l_ir0n
27.07.2009, 15:47
procedure TForm1.Button1Click(Sender: TObject);
var
ie: hwnd;
begin
ie:=FindWindow('Microsoft Internet Explorer', nil);
SetWindowText(ie, '123');
end;

Не могу понять чего еще не хватает!? :mad:
Во-первых, окно лучше искать не по заголовку, а по классу (IEFrame на 6м ИЕ)
Во-вторых - ты ищешь окно и меняешь заголовок окна, а тебе нужно найти дочернее окно (Edit) и уже там изменить текст

HakaR
27.07.2009, 15:49
Сцука, я понимаю что мой код полная нелепость, но все же как передать запрос в адресную строку Internet Explorer'a и как её вообще найти?

HakaR
27.07.2009, 16:01
Теперь понятно... А можете для наглядности код скинуть? Оч надо:(

Gar|k
27.07.2009, 16:06
в общем щас стало интересно и я посмотрел как же там аудио формирутеся ссылка...
кнопка play иммет такой код
<img class="playimg" onclick="return operate(64058280,4268,5390687,'b4150ffe9c1e',288);" id="imgbutton64058280" nosorthandle="true" src="/images/play.gif"/>
видно что она при клике обращается к функции operate которая лежит тут (http://vkontakte.ru//js/audio.js?8)

посмотрев функцию мы видим что она разберает входящие параметры на такие составляющие var p = "id,host,user,file,dur,wall".split(',');... я не стал долго мучатся а помотрел какие ссылки формирует один из популярных онлайн сервисов по скачиванию flv видео и аудио.

ссылка получилась такая
http://cs4268.vkontakte.ru/u5390687/audio/b4150ffe9c1e.mp3

что значит
operate(id,host,user,file,dur) => http://cs[host].vkontakte.ru/u[user]/audio/[file].mp3

твое дело составить регулярное выражение которое будет формировать ссылку по указаному алгоритму. такое можно реализовать даже на javascript, проще всего переписть функцию operate (но как ее вставить в страницу другой вопрос хехе)

а если ты собрался реализовывать это программно лучше придумай плагин для firefox или виджет для оперы...

HakaR
27.07.2009, 16:16
В том и дело, я по гуглил и нашёл скрипт который после вставки в адресную строку браузера и при нажатие кнопки 'Play' видемо генерирует ссылку для скачивания и когда мы переходим по ссылке, то начинается скачивание. А вот и сам скрипт:

javascript:function operate(konfuze,loves,you,all_,xP){you=you.toStrin g(10);while(you.length<5){you='0'+you;}document.getElementById('audio'+ko nfuze).innerHTML='<div><a href="http://cs'+loves+'.vkontakte.'+'ru/u'+you+'/audio/'+all_+'.mp3">Загрузить: '+document.getElementById('performer'+konfuze).inn erHTML+'- '+document.getElementById('title'+konfuze).innerHT ML+'</a></div><br />';}

Теперь я хочу сделать программку на основе этого скрипта, но х.з. как...
А не подскажешь как написать плагин для Opera и что для этого нужно?:)

slesh
27.07.2009, 16:19
winexec('iexplore.exe mylink', SW_SHOW); и будет запущен ослик с твоим линком.
Все способы паливные антивирями, Особенно на SetWindowText для IE любят хрюкать поросята дяди Касперского.

HakaR
27.07.2009, 16:23
Ладно и за это спасибо, теперь надо думать как всё это организовать в моей программе...

Gar|k
27.07.2009, 16:29
ну ты нашел вариант переписи функции operate прикольный кстати и работающий. ява скрипт практически идеальный вариант для такого рода задачек... правда неможно не удобно копировать код в адресную строку но для обозревателя опера можно сделать настройку для странице которая будет подгружать твои скрипты автоматически...

Некоторые полезные туториалы (доки) по созданию расширений для Firefox:
http://www.borngeek.com/firefox/toolbar-tutorial/
https://developer.mozilla.org/en/Extensions
https://developer.mozilla.org/en/Plugins

http://black-zorro.com/mediawiki/Виджеты_для_оперы_часть_1

HakaR
27.07.2009, 16:39
У меня ещё 2 варианта появилось:

1. Сделать Downloader на TWebBrowser (Наверно придётся делать на основе2варианта)
2. Сделать так чтобы пользователь ввел линк на песню, а программа сама на основе скрипта преобразовала линк на ссылку файла, а дальшё что делать пока не придумал:)

А на счет плагинов есть тот же GreaseMonkey и скриптов для скачивания музыки и видео с vkontakte.ru оч много.

HakaR
27.07.2009, 16:52
Может кто посоветует как перенести ява скрипт на дельфи?

ex3me
27.07.2009, 16:55
HakaR, а код не судьба показать, который необходимо перенести?

Заменой синтаксиса Java синтаксисом Delphi, как же еще

HakaR
27.07.2009, 16:59
javascript:function operate(konfuze,loves,you,all_,xP){you=you.toStrin g(10);while(you.length<5){you='0'+you;}document.getElementById('audio'+ko nfuze).innerHTML='<div><a href="http://cs'+loves+'.vkontakte.'+'ru/u'+you+'/audio/'+all_+'.mp3">Загрузить: '+document.getElementById('performer'+konfuze).inn erHTML+'- '+document.getElementById('title'+konfuze).innerHT ML+'</a></div><br />';}

Вот код! Я в ява скрипт не селён, но мне кажется что там при переноси на паскаль надо что то убрать...))))

Gar|k
27.07.2009, 17:08
эмм и чего ты добьешься переносом ява скрита на паскаль? тупость

вот алгоритм твоей программы если ты будешь ее реализовывать как то там отдельно.
1 создаешь подключение socket connect
2 автроризуешься на vkontakte.ru (отправляешь POST запрос)
3 получаешь куку нужную... (можно ее взять из файлов кук IE сразу в текстовом виде)
4 отправляешь GET запрос на нужную тебе страницу с аудио...
5 получаешь ее содержимое и регулярными выражениями вытаскиваешь нужные ссылки а имего заменяешь retrun operate(...) => http:// я уже тебе писал... ну в общем формируешь ссылки и показываешь это удобно пользователю.

для реализации всей этой ереси тебе необходимо знать как работать с сокетами
как устроен протокол HTTP, как работают регулярные выражения.

ну или же просто вставить в строку обозревателя тот скрипт который ты давал выше и не ипать себе моск. как ты говоришь плагинов предостаточно, а как работает формирование этих саммых ссылок прямых я тебе описал.

Gar|k
27.07.2009, 21:21
кстати вот простой способ добавить скрипт в обозреватель просто добавь закладку с адресом


javascript:function operate(konfuze,loves,you,all_,xP){you=you.toStrin g(10);while(you.length<5){you='0'+you;}document.getElementById('audio'+ko nfuze).innerHTML='<div><a href="http://cs'+loves+'.vkontakte.'+'ru/u'+you+'/audio/'+all_+'.mp3">Загрузить: '+document.getElementById('performer'+konfuze).inn erHTML+'- '+document.getElementById('title'+konfuze).innerHT ML+'</a></div><br />';}


хехе )))