- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всех с наступившим. Ребята подскажите, как с помощью api получить ссылку на конкретный mp3 файл контакта. Всю ночь, что-то пробовал, нифига не вышло.
---------- Добавлено 02.01.2013 в 15:18 ----------
Вот код, работать не хочет
и что происходит?
в каком месте косяк?
Да в том, что когда отправляю запрос на список аудиозаписей, ответ Incorrect signature: sid & secret authorization
Куда копать, где смотреть не пойму, доки перечитал по нескольку раз.
---------- Добавлено 02.01.2013 в 16:16 ----------
Я предполагаю, битовых прав на метод не хватает, а как их получить хз.
Сначала проходим авторизацию:
CLIENT_ID - id Standalone приложения созданного тобой
SCOPE - права например audio
http://api.vk.com/oauth/authorize?client_id=CLIENT_ID&display=mobile&scope=SCOPE&response_type=token
Если успешная авторизаци -
в адресной строке увидешь: #access_token, скопируй его...
потом выполняем запрос к апи:
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
$answer = curl_exec($ch);
curl_close($ch);
return $answer;
}
$res = connvk('https://api.vk.com/method/video.search.xml?q='.urlencode($_GET['q']).'&count=5&access_token=');
print $res;
Вверху скрипта добавить
@header("Content-type: text/xml; charset=utf-8");
" title="https://api.vk.com/method/audio.search.xml?q=НАЗВАНИЕ_ТРЕК&count=5&access_token=ТВОЙ_ТОКЕН
---------- Добавлено 02.01.2013 в 17:37 ----------
function connvk($link){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $link);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
$answer = curl_exec($ch);
curl_close($ch);
return $answer;
}
$res = connvk('https://api.vk.com/method/video.search.xml?q='.urlencode($_GET['q']).'&count=5&access_token=');
print $res;
Вверху скрипта добавить
@header("Content-type: text/xml; charset=utf-8");
" target="_blank">https://api.vk.com/method/audio.search.xml?q=НАЗВАНИЕ_ТРЕК&count=5&access_token=ТВОЙ_ТОКЕН
---------- Добавлено 02.01.2013 в 17:37 ----------
function connvk($link){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $link);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
$answer = curl_exec($ch);
curl_close($ch);
return $answer;
}
$res = connvk('https://api.vk.com/method/video.search.xml?q='.urlencode($_GET['q']).'&count=5&access_token=');
print $res;
Вверху скрипта добавить
@header("Content-type: text/xml; charset=utf-8");
Про авторизацию не понятно, как это на php реализовать?
$res = connvk('http://api.vk.com/oauth/authorize?client_id=99999&display=mobile&scope=offline,audio&response_type=token');
echo $res;
авторизовавшись один раз с правами offline, больше не нужно авторизовавыться. Работать будет по одному токену вечно.
$res = connvk('https://api.vk.com/method/audio.search.xml?q='.urlencode($_GET['q']).'&count=5&access_token=ВСТАВИТЬ_СВОЙ_ТОКЕН');
print $res;
Прегматчи на получение артиста/название трека/ссылки для скачивания с фильтрацией хлама из текста:
$pattern='|<artist>(.*)</artist>|U';
preg_match_all($pattern, $res, $art);
$ARTIST=implode('', $art[1]);
$vowels=array("id", "vk", ".com", "ontakte", ".ru", "http://", "www", ";", ":", "[", "|", "*");
$a=str_replace($vowels,"", $ARTIST);
$a1=preg_replace('/\[.*\]/', '', $a);
$a2=preg_replace('/\*.*\*/', '', $a1);
$pattern='|<title>(.*)</title>|U';
preg_match_all($pattern, $res, $track);
$track=implode('', $track[1]);
$t=str_replace($vowels,"", $track);
$t1=preg_replace('/\[.*\]/', '', $t);
$t2=preg_replace('/\*.*\*/', '', $t1);
$t3=preg_replace('/\(.*\)/', '', $t2);
$pattern='|<duration>(.*)</duration>|U';
preg_match_all($pattern, $res, $dur);
$duration=implode('', $dur[1]);
$pattern='|<url>(.*)</url>|U';
preg_match_all($pattern, $res, $url);
$url=implode('', $url[1]);
ECHO "".$a2." - ".$t3." ".date("i:s",$duration)." ".$url."";
Пробую получить токен по ссылке, ответ
client_id=99999 - это айдишник пользователя вконтакте, через которого парсить мп3?
https://api.vk.com/method/
audio.search.xml? - метод вызова(поиск музыки)
q=dj_вася - ключевое слово запроса
&count=5 -количество возвращаемых результатов
&access_token=ВСТАВИТЬ_СВОЙ_ТОКЕН полученный после авторизации здесь:
Приложение сначало создается здесь: http://vk.com/editapp?act=create
обязательно Standalone
берется ID приложения и вставляется в ссылку здесь:
http://api.vk.com/oauth/authorize?client_id=ID_ПРИЛОЖЕНИЯ&display=mobile&scope=offline,audio&response_type=token
после чего проходим по этой ссылке авторизацию, сохраняем токен , затем уже пользуемя ссылкой вывзова методов АПИ со своим токеном
Спасибо, заработало.
Подскажите, а как сделать задержку, я фором массив с компазициями перебираю, на которые мне нужно ссылки получить и в for вставил парсер с контакта, только парсит первый элемент. В общем как замедлить for? :)
хД недавно с аналогичной проблеммкой встретился. Решил, но без запросов к апи - curl + мобильная версия vk.com, просто берем и парсим(надо дружить с файрбагом). Но имейте в виду - ссылки на .mp3 файлы во вконтакте уникальны для каждого отдельного ип. И то что играет у вам на одном компе, на другом играть не будет(ибо ип разный), а значит придется закачивать файл из вк и потом отдавать его пользователю. Не знаю как там с видео - не делал еще пока парсера, но с аудио так. Нагрузку на хостинг аццки повышает и жрет трафик такой скрипт(закачка из вк по прямой ссылке + отдача пользователю). Поэтому пока на выделенку не перееду - смысла использования скрипта не вижу.
---------- Добавлено 02.01.2013 в 22:37 ----------
Вообще интереснее другое - как бы яндекс музыку парсануть....)
http://elisto05e.music.yandex.ru/get-mp3/4bd9e3dc769b56ccfe7f9b6476b5e328/50e47cb2/9/data-0.6:27117199574:5318947?track-id=4786680&from=service-top
- ссылка на файл.
- это /50e47cb2/9/data-0.6:27117199574:5318947?track-id=4786680&from=service-top находится в информации о файле и прочем. А вот 4bd9e3dc769b56ccfe7f9b6476b5e328 - откуда берется ?) На хабре читал что некий скрипт генерирует такую цифровую последовательность из имени и чего-то там еще. http://www.google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CDEQFjAA&url=http%3A%2F%2Fhabrahabr.ru%2Fpost%2F133578%2F&ei=FH7kUK2VM8ii4gTc4oHADA&usg=AFQjCNEty8uSD9l1MUzBmQhYCj6IGZlW5g&bvm=bv.1355534169,d.bGE - тут читайте сами) Я не специалист по криптографии, так что на дело это пока подзабил.
Вопрос по поводу разной ссылки на разный IP я решил.