class.soundcloud.php
<?php /** * Con esta clase puedes obtener enlaces directos desde souncloud usando su API. * Con solo asignar la URL ya sea una playlist o un song devolvera los links o solamente el link. * Tambien podemos descargar los archivos. * * @author arthusu <arthusu@gmail.com> * * @package SoundCloud Downloader * * @copyright 2015 arthusu */ class Soundcloud { const STREAM = 'http://media.soundcloud.com/stream/'; const CLIENT_API = 'AquiPonesTuApi'; /** @var string URL para sacar JSON */ private $api = 'http://api.soundcloud.com/resolve.json?url=URL&client_id='; /** @var string El identificador del SONG */ private $id; /** @var string La URL del SONG o PLAYLIST */ private $url; /** @var array Nombres de los SONGS */ private $names = array(); /** @var string Almacena el JSON retornado */ private $json; /** @var array LINKS */ private $playlist = array(); /** * Obtiene el/los titulos del Song. * * @return array Devuelve los titulos */ public function getTitle(){ return $this->names; } /** * Obtiene el JSON de la URL que le asignes, Usamos la API para obtener la informacion. * * @param string $url La URL a retornar. * * @return void */ public function getURL($url){ $this->url = $url; $this->api = $this->api . self::CLIENT_API; $this->json = json_decode(file_get_contents(str_replace("URL", $this->url, $this->api))); } /** * Obtiene el ID del JSON arrojado por la URL, el ID del SONG * * @return void */ public function getID(){ if(!empty($this->json)){ $this->id = $this->json->{'waveform_url'}; array_push($this->names,$this->json->{'title'}); $this->id = substr(parse_url($this->id, PHP_URL_PATH),1,12); } } /** * Obtiene el LINK DIRECTO de la SONG * * @see Soundcloud::getID() * * @return string Devuelve la URL directa del archivo. */ public function getSong(){ self::getID(); return self::STREAM . $this->id; } /** * Obtiene los LINKS DIRECTOS de la PLAYLIST * * @see Soundcloud::getID() * * @return array devuelve un array de links. */ public function getPlaylist(){ foreach($this->json as $obj){ if(is_array($obj)){ foreach($obj as $arr){ $this->json = $arr; self::getID(); array_push($this->playlist,self::STREAM . $this->id); } } } return $this->playlist; } /** * Descarga el archivo de La URL dada * * @param string $url La URL para descargar el archivo. * * @return void */ public function downloadArchive($url){ header("Content-type: audio/mpeg"); header("Content-Disposition: attachment; filename=\"".uniqid(md5(rand())) .".mp3\""); header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: 0"); // Fecha en el pasado header('Content-Description: File Transfer'); header('Content-Transfer-Encoding: binary'); header('Pragma: public'); readfile($url); } } ?>
El siguiente es un ejemplo de uso rapido:
soundcloud_downloader.php
<?php set_time_limit(0); require_once('class.soundcloud.php'); $soundcloud = new SoundCloud(); ?> <title>SoundCloud Downloader</title> <style type="text/css"> body{ width:800px; margin-left: auto; margin-right: auto; text-align: center; } .right{ width: 300px; padding-left: 10px; float:right; margin:10px; height: 30px; } .left{ width: 300px; padding-right: 10px; float:left; margin:10px; height: 30px; } .clear{ clear: both; } </style> <div class="clear"> <h1>SoundCloud Downloader</h1> <form action="" method="post"> <p>URL: <input type="text" name="url" size="100" /></p> <p><input type="submit" name="enviar" /></p> </form> </div> <?php $playlist = ""; if(isset($_GET["url"])){ if(file_exists($_GET['url'])){ echo "Tramposin"; }else{ $soundcloud->downloadArchive($_GET["url"]); exit(); } } if(isset($_POST['enviar']) && filter_var($_POST['url'], FILTER_VALIDATE_URL)){ $soundcloud->getURL($_POST['url']); if(stristr($_POST['url'],"sets")){ $playlist = "on"; }else{ $playlist = "off"; } echo '<table border="1">'; echo '<tr>'; switch ($playlist) { case 'on': echo '<div class="right">'; foreach($soundcloud->getPlaylist() as $url){ echo '<a href="?url='.$url.'">Download</a>'; echo '<audio controls preload> <source src="'.$url.'" type="audio/ogg"> Tu navegador no soporta la etiqueta audio. </audio><br /><hr /> '; } echo '</div>'; echo '<div class="left">'; foreach ($soundcloud->getTitle() as $title) { echo $title .'<br /><hr />'; } echo '</div>'; break; case 'off': $url = $soundcloud->getSong(); echo '<div class="right">'; echo '<a href="?url='.$url.'">Download</a>'; echo ' <audio controls> <source src="'.$url.'" type="audio/ogg"> Tu navegador no soporta la etiqueta audio. </audio><hr /> '; echo '</div>'; echo '<div class="left">'; foreach ($soundcloud->getTitle() as $title) { echo $title ."<hr />"; } echo '</div>'; break; default: echo "ERROR"; break; } echo '</table>'; } ?>Y bueno esta no es una entrada explicativa ni nada de eso solo dejare esto aqui y me iré, saludos!.
No hay comentarios:
Publicar un comentario