Bonjour,
Je suis entraine de développer mon site web. J'utilise l'API de Soundcloud pour télécharger mes tune depuis mon site web vers Soundcloud. J'ai récupérer mes information de mon compte avec une authentification.
Une fois que j'ai les informations de mon compte et que je suis connecté à leur API je veux envoyer un fichier audio (mp3, wave ou aiff) come ils disent dans leur documentation.
Dans mon controller Tracks
J'ai cette fonction
public function admin_uploaderToSoundcloud($id){
// Resquest Data
$origin = $this->Track->find('first',array(
'conditions' => array('Track.id'=>$id,'Track.online'=>0),
'fields' => array('Track.id','Track.name','Track.content','Track.audio','Track.thumb','Track.online'),
'recursive' => -1
));
$this->Track->uploaderToSoundcloud($origin);
}
uploaderToSoundcloud() est dans mon modèle Track
public function uploaderToSoundcloud($data = array()){
require_once APPLIBS.'SoundCloud'.DS.'Services'.DS.'Soundcloud.php';
$sc_client_id = 'YOUR_CLIENT_ID';
$sc_secret = 'SECRET_KEY';
$sc_user = 'YOUR_USERNAME';
$sc_pass = 'YOUR_PASSOWRD';
$soundcloud = new Services_Soundcloud($sc_client_id,$sc_secret);
$soundcloud->setCurlOptions(array(
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_SSL_VERIFYHOST => 0
));
if (!empty($data)) {
// We login the Soundcloud Account.
$APIResponse = $soundcloud->credentialsFlow($sc_user,$sc_pass);
$soundcloud->setAccessToken($APIResponse'access_token']);
// We try to get informations
try {
$me = json_decode($soundcloud->get('me'), true);
debug($me);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
exit($e->getMessage());
return false;
}
// We create an array with the datas of track
$trackInfo = array(
'track[title]' => $data$this->alias]'name'],
'track[asset_data]' => '@/MusicalityMaker'.$data$this->alias]'audio'],
'track[artwork_url]' => $data$this->alias]'thumb'],
'track[description]' => $data$this->alias]'content'],
'track[user_id]' => $me'id'],
'track[sharing]' => 'private',
'track[license]' => 'all-rights-reserved'
);
// We try to upload a track To SoundCloud
try {
$track = $soundcloud->post('tracks',$trackInfo);
die($track->id);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
exit($e->getMessage());
return false;
}
//debug($data$this->alias]'name']);
return true;
} else {
return false;
}
}
L'API me retourne une erreur :
The requested URL responded with HTTP code 0.
Je travail sur une machine vagrant et je suis aller voir mon fichier error.log
Et voici un extrait du fichier error.log
Server certificate:
* subject: OU=Domain Control Validated; CN=*.soundcloud.com
* start date: 2014-04-22 16:52:12 GMT
* expire date: 2016-04-08 10:08:48 GMT
* issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Domain Validation CA - SHA256 - G2
* SSL certificate verify ok.
* couldn't open file "/files/uploads/audios/2/2.aif"
Pourtant il se connecte au serveur de Soundcloud.
J'ai des retour OK 200 pour dire que la connexion est réussit.
Quand il veux ouvrir le fichier que j'envoie le tableau suivant à soundcloud :
array(
'track[title]' => 'The dream',
'track[asset_data]' => '@/MusicalityMaker/files/uploads/audios/1/1.aif',
'track[artwork_url]' => '/img/uploads/tracks/1/1.png',
'track[description]' => 'Teste',
'track[user_id]' => (int) XXXX,
'track[sharing]' => 'private',
'track[license]' => 'all-rights-reserved'
)
Peut import que je surpprimer mon fichier. Le vieux fichier est resté en mémoire. L'API pense continuer à essayer de trouver mon fichier. Comment je peut pour que l'API puis trouver le bon fichier?.
Tout mes fichier audio on une architecture suivante :
/files/uploads/audios/1/1.(aif, wave ou mp3)
dans mon répertoire webroot.
Merci de votre aide.
Bonjour.
Il te faut probablement scruter dans les dossiers de l'API, elle doit avoir son propre emplacement pour stocker les fichiers "temporaires" par exemple, ce qui te cause, je pense, les problèmes que tu rencontres.
Quand je parlais de chemin absolue, se n'est pas "http://local.dev/MusicalityMaker/files/uploads/audios/1/1.aif" mais un truc du genre : "c:\sites\cakephp\app\webroot\files\uploads\audios\1\1.aif" ou sur linux "/var/www/cakephp/app/webroot/files/uploads/audios/1/1.aif".
Et comme je t'ais dit, look du coter des constantes de Cake, elle te permettent de récupérer ce chemin (exemple : "/var/www/cakephp/app/webroot/" ou "c:\sites\cakephp\app\webroot\") dynamiquement.
Hello,
Tu as essayer avec une URL absolue ? (chemin complet)
Look du coter des constantes http://book.cakephp.org/2.0/fr/core-libraries/global-constants-and-functions.html
J'ai toujours la même erreur :
The requested URL responded with HTTP code 0.
Et pourtant j'envoi l'url complet :
http://local.dev/MusicalityMaker/files/uploads/audios/1/1.aif
dans mon fichier de mon serveur error.log (50) dernière ligne :
[Fri Oct 10 01:47:30 2014] [notice] caught SIGTERM, shutting down
[Fri Oct 10 17:30:30 2014] [notice] Apache/2.2.22 (Debian) DAV/2 PHP/5.5.16-1~dotdeb.1 mod_ssl/2.2.22 OpenSSL/1.0.1e configured -- resuming normal operations
[Fri Oct 10 20:47:54 2014] [notice] caught SIGTERM, shutting down
[Sat Oct 11 18:45:47 2014] [notice] Apache/2.2.22 (Debian) DAV/2 PHP/5.5.16-1~dotdeb.1 mod_ssl/2.2.22 OpenSSL/1.0.1e configured -- resuming normal operations
* About to connect() to api.soundcloud.com port 443 (#0)
* Trying IP adress...
* connected
* Connected to api.soundcloud.com (IP adress) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSL connection using xxxxx
* Server certificate:
* subject: OU=Domain Control Validated; CN=*.soundcloud.com
* start date: 2014-04-22 16:52:12 GMT
* expire date: 2016-04-08 10:08:48 GMT
* issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Domain Validation CA - SHA256 - G2
* SSL certificate verify ok.
* couldn't open file "/files/uploads/audios/2/2.aif"
* Connection #0 to host api.soundcloud.com left intact
* Closing connection #0
* About to connect() to api.soundcloud.com port 443 (#0)
* Trying 72.21.91.127...
* connected
* Connected to api.soundcloud.com (Ip adress) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSL connection using xxxxx
* Server certificate:
* subject: OU=Domain Control Validated; CN=*.soundcloud.com
* start date: 2014-04-22 16:52:12 GMT
* expire date: 2016-04-08 10:08:48 GMT
* issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Domain Validation CA - SHA256 - G2
* SSL certificate verify ok.
* couldn't open file "/files/uploads/audios/2/2.aif"
* Connection #0 to host api.soundcloud.com left intact
* Closing connection #0
[Sun Oct 12 02:41:08 2014] [notice] caught SIGTERM, shutting down
[Sun Oct 12 23:20:06 2014] [notice] Apache/2.2.22 (Debian) DAV/2 PHP/5.5.16-1~dotdeb.1 mod_ssl/2.2.22 OpenSSL/1.0.1e configured -- resuming normal operations
[Mon Oct 13 00:38:50 2014] [notice] caught SIGTERM, shutting down
[Mon Oct 13 00:38:51 2014] [notice] Apache/2.2.22 (Debian) DAV/2 PHP/5.5.16-1~dotdeb.1 mod_ssl/2.2.22 OpenSSL/1.0.1e configured -- resuming normal operations
[Mon Oct 13 00:45:48 2014] [notice] caught SIGTERM, shutting down
[Mon Oct 13 00:45:49 2014] [notice] Apache/2.2.22 (Debian) DAV/2 PHP/5.5.16-1~dotdeb.1 mod_ssl/2.2.22 OpenSSL/1.0.1e configured -- resuming normal operations
[Mon Oct 13 02:13:52 2014] [notice] caught SIGTERM, shutting down
[Mon Oct 13 17:36:01 2014] [notice] Apache/2.2.22 (Debian) DAV/2 PHP/5.5.16-1~dotdeb.1 mod_ssl/2.2.22 OpenSSL/1.0.1e configured -- resuming normal operations
[Mon Oct 13 19:16:06 2014] [notice] caught SIGTERM, shutting down
[Mon Oct 13 19:16:08 2014] [notice] Apache/2.2.22 (Debian) DAV/2 PHP/5.5.16-1~dotdeb.1 mod_ssl/2.2.22 OpenSSL/1.0.1e configured -- resuming normal operations
Le fichier /files/uploads/audios/2/2.aif N'existe plus. Pourquoi L'api pense qu'il existe encore et il ne veux pas prendre le : l'index "'track[asset_data]'" de mon tableaux que je luis envoi.
'track[asset_data]' => '@/MusicalityMaker/files/uploads/audios/1/1.aif',
* J'ai enlever les informations personnelle des adresse IP des serveur de Soundcloud.