хабраиндекс
59,67

API для загрузки музыки на Вебораму

Сообщаем, что из стадии альфа-тестирования вышел SOAP API для загрузки файлов на Вебораму. Теперь каждый может снабдить свою разработку механизмом закачки музыки на Вебораму.



Итак, самое главное — описания нашего API на wsdl расположены по адресу: www.weborama.ru/soapAPI/ (это не ссылка, просто название хранилища, в котором лежат в WSDL-описания). На данный момент, там представлены описания 3 сервисов:

  1. логин
  2. загрузчик музыки
  3. и еще один


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

Сервис авторизации



Описание (wsdl-схема) — www.weborama.ru/soapAPI/login.wsdl. Сервис позволяет производить авторизацию по email и паролю, проверять ключи сессий на предмет исправности и, по завершению операций, «разлогинивание».

Пример (на php)

$soapLoginClient = new SoapClient('http://www.weborama.ru/soapAPI/login.wsdl', array('encoding' => 'UTF-8', 'trace' => true, 'exceptions' => true));
/**
* залогинимся - $sessionHash - ключ сессии
*/
$sessionHash = $soapLoginClient->login('someone@mail.ru', 'некий_пароль');
/**
* проверка сессии
*/
$soapLoginClient->checkSession($sessionHash);
/**
* завершение сессии
*/
$soapLoginClient->logout($sessionHash);

* This source code was highlighted with Source Code Highlighter.


Сервис загрузки музыки



Описание (wsdl-схема) — www.weborama.ru/soapAPI/uploadAudio.wsdl. Сервис позволяет проверить наличие композиции на сервере Выборамы и произвести загрузку файлов.

Пример (на php)

$soapClient = new SoapClient('http://www.weborama.ru/soapAPI/uploadAudio.wsdl', array('encoding' => 'UTF-8', 'trace' => true, 'exceptions' => true));
/**
* для привязки клиента к сессии
*/
$soapClient->__setCookie('sessionHash', ключ_сессии);

/**
* отправка части содержимого файла на сервер
*/
$data = new stdClass();
$data->fileName = $fileName;
$data->offset = $offset;
$data->length = $size;
$data->data = fread($fileHandler, $size);
$data->data = base64_encode($data->data);

$soapClient->uploadFile($data);

/**
* завершение отправки файла - ОБЯЗАТЕЛЬНО после отправки всех частей файла
*/
$fileHash = $soapClient->completeFile($sessionHash, $data);

/**
* завершение загрузки файла(файлов)
*/
$fileHashes = array($fileHash);
$result = $soapClient->completeUpload($sessionHash, array($fileHash));

/**
* проверка наличия файла по данным песни
*/
$songInfo = new stdClass();
$songInfo->artist = 'Битлз';
$songInfo->album = 'Let It Be';
$songInfo->year = '1970';
$songInfo->song = 'Two Of Us';

$songExists = $soapClient->songExists($songInfo);

/**
* проверка наличия файла по коду файла
*/
$songInfo = new stdClass();
$songInfo->uniqueName = '7b1c2da40b3200a60d38e47760e0f161';

$songExists = $soapClient->songExists($songInfo);


* This source code was highlighted with Source Code Highlighter.
+24
4 мая 2009, 16:55
7
NickMitin 58,4

комментарии (22)

+7
iBear #
Ура, дождались! :)
+3
Clyde #
Хорошо бы подкинуть идей, в каких приложениях может быть полезна загрузка музыки на Вебораму.
+5
NickMitin #
Меня лично греет мысль сделать синхронизатор медиатеки с Веборамой.
+2
bigbes #
веборама это же неудобно… ну зачем они сделали названия групп по русски? или там у них на многих группах есть серьезные ошибки…
Может лучше как-нить это подправить? ^^
0
NickMitin #
Мы работаем в разных направлениях. И производственные циклы имеют разную длительность. Сейчас вот закончился цикл API. По мере окончания тестирования будем сообщать о разных наборах функций.
0
bigbes #
А будет возможность самим редактирвать альбомы итмп.
0
NickMitin #
Да
0
quiet_drago #
Может, мне просто не везет, но меня по ссылке, где должно быть описание, кидает на 404.
0
NickMitin #
Это не ссылка с каким-то текстовым описанием, это место где лежат все WSDL-описания для функций. Так что по ссылке и должно быть 404.
0
quiet_drago #
теперь доперло, извиняюсь =).

А что за загадочный еще 1 сервис?
вообще, из того, что первое приходит в голову — получение музыки… А, собственно, сейчас поглядим на этот ваш wsdl.
+5
Aldekein #
О я в диффузии! О_о


Это «бросается исключение с описанием ошибки» у вас такие? )))
Да, я пожалуй был не готов! %)))
0
Aldekein #
а еще в опере 9.63 верхняя панель просто НЕ РЕАГИРУЕТ ни на что =(
не играет, не нажимается. вообще.
+1
alekciy #
Никуясе! Поржал.
0
alekciy #
Хм… возникает резонный вопрос законности. Что-то он меня в послдение месяцы стал остро волновать… Скачивать конечно нельзя, но музыка то воспроизводится. Эфир… Не приходилось еще рассматривать это все в правовом русле?
+1
DIAgen #
Мда

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault>SOAP-ENV:Serverrequire_once() [<a href='function.require'>function.require</a>]: Failed opening required '/home/projects/weborama/www//lib/uniqueName.php' (include_path='.:/usr/share/php:/usr/share/pear')</SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+1
DIAgen #
Интересно за что поставили минус?
За то, что указал то что выдает API ошибку, которая идет в самих скрипта?
0
NickMitin #
Мне вот тоже интерсно. Человек указал на ошибку, а его минусуют.

Кстати, вы не могли бы показать как она воспроизводится. Нашим кодом?
0
DIAgen #
Я не делаю загрузку файла, а просто хочу проверить есть ли данная композиция или нет, что бы дальше загружать, вот код ваш для примера

$soapLoginClient = new SoapClient('http://www.weborama.ru/soapAPI/login.wsdl', array('encoding' => 'UTF-8', 'trace' => true, 'exceptions' => true));

$sessionHash = $soapLoginClient->login('diagen@live.ru', '*********');

$soapClient = new SoapClient('http://www.weborama.ru/soapAPI/uploadAudio.wsdl', array('encoding' => 'UTF-8', 'trace' => true, 'exceptions' => true));

$soapClient->__setCookie('sessionHash', $sessionHash);

$songInfo = new stdClass();
$songInfo->artist = 'Битлз';
$songInfo->album = 'Let It Be';
$songInfo->year = '1970';
$songInfo->song = 'Two Of Us';

$songExists = $soapClient->songExists($songInfo);


На что мне выдает

Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Client] Bad Request in /home/music/index.php:19
Stack trace:
#0 [internal function]: SoapClient->__call('songExists', Array)
#1 Z:\home\music\donw\index.php(16): SoapClient->songExists(Object(stdClass))
#2 {main}
thrown in /home/music/index.php 16
0
necrosis #
Спасибо за информацию. Поправили.
0
alekciy #
>Мне вот тоже интерсно. Человек указал на ошибку, а его минусуют.
Элементарно, детка, это же хабр!

Не раз видел, как слабообразованное большинство минусует вполне правильные сообщения просто потому, что не понимают, о чем им толкуют. Наполучать кучу плюсов имеет больше шансов остряк недоучка, чем квалифицированный специалист просто потому, что плоские шуточки большинством лучше понимаемы чем какие-то умные вещи которые еще обдумать нужно. А всякие плоскости тем и хорошо, что в голове укладываются компактно и в большем количестве.
0
DIAgen #
Разобрался почему выдавалась ошибка, фаил был не в utf-8, сделайте проверку на utf-8, если нет то переводите.
И еще «проверка наличия файла по данным песни» все время выдает fasle, если песня или нет.
0
DIAgen #
А дальше развитие API будет?
А то получается загрузить музыку можно, а вот потом указать название альбом, год и все такое не как.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.