2012-12-18 1 views

Répondre

5

Ceci a été récemment corrigé, car il était dû en partie à la moitié des fichiers nécessaires. Maintenant, il est fixé cependant, il pourrait encore ne pas fonctionner de la chauve-souris.

La première étape évidente est d'utiliser le api vous pour obtenir le stream_url de la piste, qui ressemble à http://api.soundcloud.com/tracks/69322564/stream?client_id=CLIENT_ID

Si vous utilisez ce que l'url de médias SoundCloud, vous constaterez que vous appuyez sur le jeu, et si vous avez visualisations ils vont travailler, et tout est bien. Cependant, si vous suspendez la piste et que vous appuyez de nouveau sur Play, vous obtiendrez une erreur de données, les métadonnées cesseront d'être accessibles et vos visualisations se briseront. C'est parce que api.soundcloud.com a un fichier crossdomain, et quand vous y accédez, vous obtenez une redirection 3XX à ec-media.soundcloud.com. Ce site a maintenant aussi un fichier crossdomain.xml, mais ce 3XX redirect ruine les deux autorisations, de sorte que vous rencontrez une erreur.

La réponse à cela est que vous faites d'abord le saut de redirection, en dehors de soundmanager2, afin qu'il n'y ait pas de redirection qui va le casser. Par exemple en Python:

import urllib2 
starturl = 'http://api.soundcloud.com/tracks/69322564/stream?client_id=CLIENT_ID' 
res = urllib2.urlopen(starturl) 
finalurl = res.geturl() 
print finalurl 

Cela pourrait être plus élégant, mais il imprimera l'URL que l'api redirige vers. Cet URL ressemblera à quelque chose comme http://ec-media.soundcloud.com/2j0lNF81jv9m.128.mp3?LONG_STRING&AWSAccessKeyId=ACCESS_KEY&Expires=1355864871&Signature=SIGNATURE

Ce domaine a le fichier crossdomain.xml, et comme il n'y a pas de redirection, les choses se passeront bien, les données seront accessibles, tout ira bien.

« Je l'ai fait et cela a fonctionné, mais maintenant il dit que le fichier est interdit »

Maintenant, nous attirons votre attention sur l'url précédente, en particulier &Expires=1355864871. Le fichier vers lequel vous êtes redirigé n'est pas permanent, vous devez donc le récupérer à chaque fois. Pour moi c'est facile, je travaille en django donc je peux simplement lancer le python ci-dessus dans mes scripts de vues. Vous devrez trouver un moyen de l'implémenter dans votre code de choix. (Devrait fonctionner en javascript aussi). Après tout cela, vous devriez pouvoir faire une pause et jouer autant que vous voulez, et récupérer les données de forme d'onde, les données EQ et les données de crête. Avec ces choses, des choses amusantes peuvent être faites. J'espère que cela a aidé.

+1

Salut Liam, merci encore pour une explication complète. Vous pouvez accepter votre propre réponse btw :-) –

+0

Pas pour 2 jours: p –

Questions connexes