Просмотр полной версии : Нужна помощь!
Кто может подсказать, как написать прогу для скачивание музыки с vkontakte.ru? Заранее спасибо! :confused:
ZdezBilYa
27.07.2009, 13:04
Авторизируешься на сайте, переходишь на нужную страницу, находишь ссылку на файл, скачиваешь файл
Ясно! А можно это как нибудь в коде показать?
ZdezBilYa
27.07.2009, 13:50
Может сразу написать прогу?)))
Почитай про Delphi, про POST и GET запросы. Авторизация - это POST-запрос с параметрами логина и пароля. Переход на страницу - GET-запрос. Находишь ссылку анализом исходного кода страницы (парсинг). Сохранение файла на комп - тоже какая-то функция в Delphi.
И ещё можно вопрос, как написать что либо в адресную строку Internet Exploler'а?
Програмно? Это называется "запрос". Юзай поиск.
Да, програмно! Может обьясните как это осуществить на Delphi?
Или хотя бы подкиньте статейку по теме! :)
s0l_ir0n
27.07.2009, 15:12
FindWindow
FindWindowEx
SetWindowText
SendMessage
procedure TForm1.Button1Click(Sender: TObject);
var
ie: hwnd;
begin
ie:=FindWindow('Microsoft Internet Explorer', nil);
SetWindowText(ie, '123');
end;
Не могу понять чего еще не хватает!? :mad:
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) и уже там изменить текст
Сцука, я понимаю что мой код полная нелепость, но все же как передать запрос в адресную строку Internet Explorer'a и как её вообще найти?
Теперь понятно... А можете для наглядности код скинуть? Оч надо:(
в общем щас стало интересно и я посмотрел как же там аудио формирутеся ссылка...
кнопка 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 или виджет для оперы...
В том и дело, я по гуглил и нашёл скрипт который после вставки в адресную строку браузера и при нажатие кнопки '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 и что для этого нужно?:)
winexec('iexplore.exe mylink', SW_SHOW); и будет запущен ослик с твоим линком.
Все способы паливные антивирями, Особенно на SetWindowText для IE любят хрюкать поросята дяди Касперского.
Ладно и за это спасибо, теперь надо думать как всё это организовать в моей программе...
ну ты нашел вариант переписи функции 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
У меня ещё 2 варианта появилось:
1. Сделать Downloader на TWebBrowser (Наверно придётся делать на основе2варианта)
2. Сделать так чтобы пользователь ввел линк на песню, а программа сама на основе скрипта преобразовала линк на ссылку файла, а дальшё что делать пока не придумал:)
А на счет плагинов есть тот же GreaseMonkey и скриптов для скачивания музыки и видео с vkontakte.ru оч много.
Может кто посоветует как перенести ява скрипт на дельфи?
HakaR, а код не судьба показать, который необходимо перенести?
Заменой синтаксиса Java синтаксисом Delphi, как же еще
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 />';}
Вот код! Я в ява скрипт не селён, но мне кажется что там при переноси на паскаль надо что то убрать...))))
эмм и чего ты добьешься переносом ява скрита на паскаль? тупость
вот алгоритм твоей программы если ты будешь ее реализовывать как то там отдельно.
1 создаешь подключение socket connect
2 автроризуешься на vkontakte.ru (отправляешь POST запрос)
3 получаешь куку нужную... (можно ее взять из файлов кук IE сразу в текстовом виде)
4 отправляешь GET запрос на нужную тебе страницу с аудио...
5 получаешь ее содержимое и регулярными выражениями вытаскиваешь нужные ссылки а имего заменяешь retrun operate(...) => http:// я уже тебе писал... ну в общем формируешь ссылки и показываешь это удобно пользователю.
для реализации всей этой ереси тебе необходимо знать как работать с сокетами
как устроен протокол HTTP, как работают регулярные выражения.
ну или же просто вставить в строку обозревателя тот скрипт который ты давал выше и не ипать себе моск. как ты говоришь плагинов предостаточно, а как работает формирование этих саммых ссылок прямых я тебе описал.
кстати вот простой способ добавить скрипт в обозреватель просто добавь закладку с адресом
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 />';}
хехе )))
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot