send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[PHP] SoundCloud Downloader

  • 1 Respuestas
  • 941 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado arthusu

  • *
  • Underc0der
  • Mensajes: 525
  • Actividad:
    0%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • Ver Perfil
    • Arthusu BLOG
  • Skype: arthusuxD
« en: Abril 21, 2015, 01:36:40 pm »
Buenas, he estado algo ocupado esta semana por lo cual no he creado ninguna nueva entrada, pero en esta entrada les pondre el codigo de una clase que creé hace poco, lo unico que tienen que modificar sería la API de su soundcloud, aunque es algo 'tonta' mi clase, espero que a mas de a uno le sea de utilidad.

class.soundcloud.php

Código: PHP
  1.  <?php
  2.   /**
  3.   * Con esta clase puedes obtener enlaces directos desde souncloud usando su API.
  4.   * Con solo asignar la URL ya sea una playlist o un song devolvera los links o solamente el link.
  5.   * Tambien podemos descargar los archivos.
  6.   *
  7.   * @author arthusu <arthusu@gmail.com>
  8.   *
  9.   * @package SoundCloud Downloader
  10.   *
  11.   * @copyright 2015 arthusu
  12.   */
  13.  class Soundcloud
  14.  {
  15.   const STREAM = 'http://media.soundcloud.com/stream/';
  16.  
  17.   const CLIENT_API = 'AquiPonesTuApi';
  18.  
  19.   /** @var string URL para sacar JSON */
  20.   private $api = 'http://api.soundcloud.com/resolve.json?url=URL&client_id=';
  21.  
  22.   /** @var string El identificador del SONG */
  23.   private $id;
  24.   /** @var string La URL del SONG o PLAYLIST */
  25.   private $url;
  26.   /** @var array Nombres de los SONGS */
  27.   private $names = You are not allowed to view links. Register or Login();
  28.   /**  @var string Almacena el JSON retornado */
  29.   private $json;
  30.   /** @var array LINKS */
  31.   private $playlist = You are not allowed to view links. Register or Login();
  32.  
  33.   /**
  34.   * Obtiene el/los titulos del Song.
  35.   *
  36.   * @return array Devuelve los titulos
  37.   */
  38.   public function getTitle(){
  39.    return $this->names;
  40.   }
  41.  
  42.   /**
  43.   * Obtiene el JSON de la URL que le asignes, Usamos la API para obtener la informacion.
  44.   *
  45.   * @param string $url La URL a retornar.
  46.   *
  47.   * @return void
  48.   */
  49.   public function getURL($url){
  50.    $this->url = $url;
  51.    $this->api = $this->api . self::CLIENT_API;
  52.    $this->json = You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login("URL", $this->url, $this->api)));
  53.  
  54.   }
  55.  
  56.   /**
  57.   * Obtiene el ID del JSON arrojado por la URL, el ID del SONG
  58.   *
  59.   * @return void
  60.   */
  61.   public function getID(){
  62.    if(!You are not allowed to view links. Register or Login($this->json)){
  63.     $this->id = $this->json->{'waveform_url'};
  64.     You are not allowed to view links. Register or Login($this->names,$this->json->{'title'});
  65.     $this->id = You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login($this->id, PHP_URL_PATH),1,12);
  66.    }
  67.   }
  68.  
  69.   /**
  70.   * Obtiene el LINK DIRECTO de la SONG
  71.   *
  72.   * @see Soundcloud::getID()
  73.   *
  74.   * @return string Devuelve la URL directa del archivo.
  75.   */
  76.   public function getSong(){
  77.    self::getID();
  78.    return self::STREAM . $this->id;
  79.   }
  80.  
  81.   /**
  82.   * Obtiene los LINKS DIRECTOS de la PLAYLIST
  83.   *
  84.   * @see Soundcloud::getID()
  85.   *
  86.   * @return array devuelve un array de links.
  87.   */
  88.   public function getPlaylist(){
  89.    foreach($this->json as $obj){
  90.     if(You are not allowed to view links. Register or Login($obj)){
  91.      foreach($obj as $arr){
  92.       $this->json = $arr;
  93.       self::getID();
  94.       You are not allowed to view links. Register or Login($this->playlist,self::STREAM . $this->id);
  95.      }
  96.     }
  97.    }
  98.    return $this->playlist;
  99.   }
  100.  
  101.   /**
  102.   * Descarga el archivo de La URL dada
  103.   *
  104.   * @param string $url La URL para descargar el archivo.
  105.   *
  106.   * @return void
  107.   */
  108.   public function downloadArchive($url){
  109.     You are not allowed to view links. Register or Login("Content-type: audio/mpeg");
  110.     You are not allowed to view links. Register or Login("Content-Disposition: attachment; filename=\"".You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login())) .".mp3\"");
  111.     You are not allowed to view links. Register or Login("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  112.     You are not allowed to view links. Register or Login("Expires: 0"); // Fecha en el pasado
  113.     You are not allowed to view links. Register or Login('Content-Description: File Transfer');
  114.           You are not allowed to view links. Register or Login('Content-Transfer-Encoding: binary');
  115.           You are not allowed to view links. Register or Login('Pragma: public');
  116.     You are not allowed to view links. Register or Login($url);
  117.   }
  118.  
  119.  }
  120. ?>

El siguiente es un ejemplo de uso rapido:

soundcloud_downloader.php

Código: PHP
  1.  <?php
  2.  You are not allowed to view links. Register or Login(0);
  3.  require_once('class.soundcloud.php');
  4.  $soundcloud = new SoundCloud();
  5. ?>
  6. <title>SoundCloud Downloader</title>
  7. <style type="text/css">
  8.  body{
  9.   width:800px;
  10.   margin-left: auto;
  11.   margin-right: auto;
  12.   text-align: center;
  13.  }
  14.  .right{
  15.   width: 300px;
  16.   padding-left: 10px;
  17.   float:right;
  18.   margin:10px;
  19.   height: 30px;
  20.  }
  21.  .left{
  22.   width: 300px;
  23.   padding-right: 10px;
  24.   float:left;
  25.   margin:10px;
  26.   height: 30px;
  27.  }
  28.  .clear{
  29.   clear: both;
  30.  }
  31. </style>
  32. <div class="clear">
  33. <h1>SoundCloud Downloader</h1>
  34. <form action="" method="post">
  35.  <p>URL: <input type="text" name="url" size="100" /></p>
  36.  <p><input type="submit" name="enviar" /></p>
  37. </form>
  38. </div>
  39. <?php
  40.  
  41.  $playlist = "";
  42.  
  43.  if(You are not allowed to view links. Register or Login($_GET["url"])){
  44.   if(You are not allowed to view links. Register or Login($_GET['url'])){
  45.    echo "Tramposin";
  46.   }else{
  47.    $soundcloud->downloadArchive($_GET["url"]);
  48.    You are not allowed to view links. Register or Login();
  49.   }
  50.  }
  51.  
  52.  if(You are not allowed to view links. Register or Login($_POST['enviar']) && You are not allowed to view links. Register or Login($_POST['url'], FILTER_VALIDATE_URL)){
  53.  
  54.   $soundcloud->getURL($_POST['url']);
  55.  
  56.   if(You are not allowed to view links. Register or Login($_POST['url'],"sets")){
  57.    $playlist = "on";
  58.   }else{
  59.    $playlist = "off";
  60.   }
  61.   echo '<table border="1">';
  62.   echo '<tr>';
  63.   switch ($playlist) {
  64.    case 'on':
  65.     echo '<div class="right">';
  66.     foreach($soundcloud->getPlaylist() as $url){
  67.       echo '<a href="?url='.$url.'">Download</a>';
  68.       echo '<audio controls preload>
  69.      <source src="'.$url.'" type="audio/ogg">
  70.      Tu navegador no soporta la etiqueta audio.
  71.      </audio>
  72. <hr />
  73.      ';
  74.     }
  75.     echo '</div>';
  76.     echo '<div class="left">';
  77.     foreach ($soundcloud->getTitle() as $title) {
  78.      echo $title .'
  79. <hr />';
  80.     }
  81.     echo '</div>';
  82.     break;
  83.    case 'off':
  84.     $url = $soundcloud->getSong();
  85.     echo '<div class="right">';
  86.     echo '<a href="?url='.$url.'">Download</a>';
  87.     echo '
  88.     <audio controls>
  89.     <source src="'.$url.'" type="audio/ogg">
  90.     Tu navegador no soporta la etiqueta audio.
  91.     </audio><hr />
  92.    ';
  93.     echo '</div>';
  94.     echo '<div class="left">';
  95.     foreach ($soundcloud->getTitle() as $title) {
  96.      echo $title ."<hr />";
  97.     }
  98.     echo '</div>';
  99.     break;
  100.    default:
  101.      echo "ERROR";
  102.     break;
  103.   }
  104.   echo '</table>';
  105.  }
  106.  
  107. ?>

Y bueno esta no es una entrada explicativa ni nada de eso solo dejare esto aqui y me iré, saludos!.

Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1868
  • Actividad:
    15%
  • Reputación 14
    • Ver Perfil
« Respuesta #1 en: Abril 21, 2015, 05:52:41 pm »
Muy bueno arthusu, supongo que el código será parecido al de fermino.

You are not allowed to view links. Register or Login

Un saludo.



 

¿Te gustó el post? COMPARTILO!