Страница 2 из 7

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

Добавлено: Пт окт 17, 2014 12:12 pm
ErmolenkoM
Dark_Veter писал(а): 1. Чтобы возвращало много песен нужно поправить параметр &count в первой ссылке, это и есть количество возвращаемых аудиозаписей. Поиска по жанру к сожалению нету.
2. С плейлистами посмотрю отдельно, отпишусь по результатам, правильно ли я понимаю, что плейлист - это альбом пользователя ВК?
1. О! То что нужно. У многих песен в названии стоит жанр, так что это оно!
2. Да, это альбом пользователя.

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

Добавлено: Пт окт 17, 2014 1:48 pm
Dark_Veter
Немного доработал код, теперь можно передавать в параметры 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 песен "короля и шута".

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

Добавлено: Пт окт 17, 2014 7:57 pm
Vit
Классно. Ещё бы параметры эти передавать голосом а не жестко в вызове скрипта указывать

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

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

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

if ($matches[1] == "%username1%") {
  runScript("VkMusic", array('VALUE'=>'username1_id', 'MODE'=>0)); 
} else {
  runScript("VkMusic", array('VALUE'=>'username2_id', 'MODE'=>0));
}

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

Добавлено: Вс окт 19, 2014 12:57 pm
LuckyFIA
чтобы запускался плеер выбранный в терминале, можно попробовать заменить
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); 

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

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

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

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

Добавлено: Сб ноя 01, 2014 9:05 pm
Dark_Veter
Такая ошибка выдается, если слишком часто идут запросы. По идее через время должно заработать. Если не получиться поменяйте токен, для этого надо перейти по ссылке: http://oauth.vk.com/authorize?client_id ... type=token , разрешить приложению доступ и скопировать токен из адресной строки.

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

Добавлено: Сб ноя 01, 2014 9:42 pm
sergejey
Спасибо! Через новый token заработало.

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

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

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

Добавлено: Пт ноя 07, 2014 9:44 am
Goerg
sergejey, бывает такое! Грешу на то что не успевает докачать файл до конца и крутит то что успел скачать. Такое же происходит на Android в офиц. приложении, только проигрывает 3-5 секунд и затыкается.