Прослушивание музыки Вконтакте

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Прослушивание музыки Вконтакте

Сообщение ErmolenkoM » Пт окт 17, 2014 12:12 pm

Dark_Veter писал(а): 1. Чтобы возвращало много песен нужно поправить параметр &count в первой ссылке, это и есть количество возвращаемых аудиозаписей. Поиска по жанру к сожалению нету.
2. С плейлистами посмотрю отдельно, отпишусь по результатам, правильно ли я понимаю, что плейлист - это альбом пользователя ВК?
1. О! То что нужно. У многих песен в названии стоит жанр, так что это оно!
2. Да, это альбом пользователя.
aka msh555
Cubian на Cubietruck, Connect
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Прослушивание музыки Вконтакте

Сообщение Dark_Veter » Пт окт 17, 2014 1:48 pm

Немного доработал код, теперь можно передавать в параметры COUNT - это количество возвращаемых треков и параметр ALBUM - название альбома пользователя. Т.е. Можно вызвать скрипт так:

Код: Выделить всё

runScript("VkMusic", array('VALUE'=>ID_ПользователяВК, 'MODE'=>3, 'ALBUM'=>НазваниеАльбома)); 
Тогда будет проигрываться альбом, который указан. Особо не тестировал доработанную версию, пока времени не хватает. Если у кого-то есть возможность протестировать, попробуйте пожалуйста.

Код: Выделить всё

if ($params['VALUE']) {
    getURL('http://127.0.0.1/rc/?command=vlc_close', 0);   
    $token = '';
    if (isset($params['COUNT'])) {
        $trackCount = $params['COUNT'];
    } else {
        $trackCount = 1;
    }
    if ($params['MODE'] == 0) {
        $uid = $params['VALUE'];
        $link = 'https://api.vk.com/method/audio.get.xml?owner_id=' . urlencode($uid) . '&access_token=' . $token;
    } elseif ($params['MODE'] == 1) {
        $trackName = $params['VALUE'];
        $link = 'https://api.vk.com/method/audio.search.xml?q=' . urlencode($trackName) . '&count=' . $trackCount . '&auto_complete=1&sort=2&access_token=' . $token;
    } elseif ($params['MODE'] == 2) {
        $performerName = $params['VALUE'];
        $link = 'https://api.vk.com/method/audio.search.xml?q=' . urlencode($performerName) . '&count=' . $trackCount . '&auto_complete=1&performer_only=1&sort=2&access_token=' . $token;
    } else {
        if (isset($params['ALBUM'])) {
            $uid = $params['VALUE'];
            $link = 'https://api.vk.com/method/audio.getAlbums.xml?owner_id=' . urlencode($uid) . '&access_token=' . $token;
            $res = getURL($link,0);

            $xml = new SimpleXMLElement($res);

            foreach ($xml->album as $item) {
                if ($item->title == $params['ALBUM']) {
                    $albumId = $item->album_id;
                    break;
                }
            }
            $link = 'https://api.vk.com/method/audio.get.xml?owner_id=' . urlencode($uid) . '&access_token=' . $token . '&album_id=' . $albumId;
        }
    }

    $res = getURL($link,0);

    $xml = new SimpleXMLElement($res);

    $tempPlaylist = sys_get_temp_dir() .DIRECTORY_SEPARATOR. "playlist.m3u";
    $fp = fopen($tempPlaylist, "w");
    fwrite($fp, '#EXTM3U' . "\r\n");

    foreach ($xml->audio as $item) {
        fwrite($fp, '#EXTINF:' . $item->duration . ', ' . $item->artist . ' - ' . $item->title . "\r\n");
        fwrite($fp, $item->url . "\r\n");
        fwrite($fp, "\r\n");
    }

    fclose($fp);

    getURL('http://127.0.0.1/rc/?command=vlc_play&param='.$tempPlaylist, 0);
} 
Так же теперь не надо исправлять путь к плейлисту, должно работать на всех ос.
Может кто поможет еще с проигрывателем разобраться, чтобы запускался выбранный в терминал?

UPD: Если в MODE передать 2, тогда поиск будет осуществляться по исполнителю, например:

Код: Выделить всё

runScript("VkMusic", array('VALUE'=>'Король и шут', 'MODE'=>2, 'COUNT'=>'10')); 
Будет проигрывать 10 песен "короля и шута".
Последний раз редактировалось Dark_Veter Ср апр 08, 2015 1:05 pm, всего редактировалось 1 раз.
За это сообщение автора Dark_Veter поблагодарил:
ferrumlogic (Вс дек 11, 2016 4:51 pm)
Рейтинг: 1.16%
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Прослушивание музыки Вконтакте

Сообщение Vit » Пт окт 17, 2014 7:57 pm

Классно. Ещё бы параметры эти передавать голосом а не жестко в вызове скрипта указывать
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Прослушивание музыки Вконтакте

Сообщение Dark_Veter » Пт окт 17, 2014 8:25 pm

Vit писал(а):Классно. Ещё бы параметры эти передавать голосом а не жестко в вызове скрипта указывать
Это можно реализовать через шаблоны поведения, например, создать шаблон: включи музыку (.+) вконтакте, там код:

Код: Выделить всё

if ($matches[1] == "%username1%") {
  runScript("VkMusic", array('VALUE'=>'username1_id', 'MODE'=>0)); 
} else {
  runScript("VkMusic", array('VALUE'=>'username2_id', 'MODE'=>0));
}
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
Аватара пользователя
LuckyFIA
Сообщения: 118
Зарегистрирован: Пт сен 27, 2013 6:57 am
Откуда: Россия
Благодарил (а): 3 раза
Поблагодарили: 40 раз
Контактная информация:

Re: Прослушивание музыки Вконтакте

Сообщение LuckyFIA » Вс окт 19, 2014 12:57 pm

чтобы запускался плеер выбранный в терминале, можно попробовать заменить
getURL('http://127.0.0.1/rc/?command=vlc_play&p ... mpPlaylist, 0);
на

Код: Выделить всё

    $play_terminal = "MAIN";
    $url=BASE_URL.ROOTHTML.'popup/app_player.html?ajax=1&play_terminal='.$play_terminal.'&command=refresh&play=';
    getURL($url.$tempPlaylist, 0); 
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Прослушивание музыки Вконтакте

Сообщение sergejey » Сб ноя 01, 2014 8:26 pm

У меня сейчас запрос поисковый через скрипт выдаёт ошибку: Captcha needed
Зашёл на страницу этого приложения (MdmMusic), но там ничего нет, кроме информации о том, что это Standalone приложение.
Попытался создать своё приложение, но что-то не разобрался где взять token.

Нужна помощь :)

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Прослушивание музыки Вконтакте

Сообщение Dark_Veter » Сб ноя 01, 2014 9:05 pm

Такая ошибка выдается, если слишком часто идут запросы. По идее через время должно заработать. Если не получиться поменяйте токен, для этого надо перейти по ссылке: http://oauth.vk.com/authorize?client_id ... type=token , разрешить приложению доступ и скопировать токен из адресной строки.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Прослушивание музыки Вконтакте

Сообщение sergejey » Сб ноя 01, 2014 9:42 pm

Спасибо! Через новый token заработало.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Прослушивание музыки Вконтакте

Сообщение sergejey » Пн ноя 03, 2014 9:45 am

Ещё вопрос, не сталкивался ли кто с проблемой проигрывания треков через vlc? У меня некоторые найденные треки играются только первые 3-4 секунды, а потом обрывается и играются заново. Не все, но много. Хотя по этой же ссылке в aimp всё нормально работает с первого раза.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Goerg
Сообщения: 10
Зарегистрирован: Пн мар 10, 2014 10:05 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Прослушивание музыки Вконтакте

Сообщение Goerg » Пт ноя 07, 2014 9:44 am

sergejey, бывает такое! Грешу на то что не успевает докачать файл до конца и крутит то что успел скачать. Такое же происходит на Android в офиц. приложении, только проигрывает 3-5 секунд и затыкается.
Ответить