Tutorial: Descarga .mp3 de Soundcloud

  • Autor Autor kanikase
  • Fecha de inicio Fecha de inicio
kanikase

kanikase

Préstamo
Ómicron
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Hola betas, aquí un nuevo tutorial 🙂

En este les enseñaré a que hagan otro descargador pero este de .mp3 de soundcloud, ya que la web no tiene esa opción. lo haremos usando la API que es para Twitter, un poco de php y HTML.

Primero van a como siempre crear dos archivos, con los siguientes nombres:
  1. index.php
  2. descargar.php

abren el index.php y en él pegan el siguiente código:
PHP:
<?php
function soundcloud($url) {
	$url = urldecode($url);
	$source = @file_get_contents($url);
	preg_match('/<meta name="twitter:audio:source" content="(.*)">/', $source, $match);
	$json = file_get_contents($match[1]);
	$json = json_decode($json, true);
	$titulo = $json['tracks'][0]['title'];
	$imagen = $json['tracks'][0]['artwork'];
	$musica = $json['tracks'][0]['sources'][1]['url'];
	$artist = $json['tracks'][0]['artist']['name'];
	$datos = array('titulo' => $titulo, 'imagen' => $imagen, 'url' => $musica, 'autor' => $artist);
	return json_encode($datos);
}
if (isset($_GET['url'])) {
	$datos = json_decode(soundcloud($_GET['url']), true);
	$titulo = $datos['titulo']." | Soundcloud to MP3";
	$url = $datos['url'];
	$autor = $datos['autor'];
	$dl = "descargar.php?url=".urlencode($url);
} else {
	$titulo = "Soundcloud to MP3";
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title><?php echo $titulo; ?></title>
</head>
<body>
	<form action="https://soundcloud.com/search/sounds" method="get" target="_blank" autocomplete="off">
		<input type="text" name="q" placeholder="Buscar..." style="width:300px;">
		<input type="submit" value="Buscar">
	</form>
	<br>
	<form method="get" autocomplete="off">
		<input type="text" name="url" placeholder="URL soundcloud" style="width:300px;">
		<input type="submit" value="Obtener">
	</form>
	<br>
	<div id="respuesta"><?php if (isset($_GET['url'])) { ?>
	<p><?php echo "<a href=\"$dl\" title=\"Click para descargar\">Descargar \"".str_replace(' - Soundcloud to MP3', '', $titulo)."\"</a>"; ?></p>
	<audio controls preload>
		<source src="<?php echo $url; ?>">
	</audio>
<?php } ?></div>
</body>
</html>

Y así lo guardan 😀
Y ahora abren descargar.php y en él pegan este código:
PHP:
<?php
function descarga($nombre, $url) {
	$video = file_get_contents($url);
	file_put_contents($nombre, $video);
	if(isset($nombre) && file_exists($nombre)) {
		$tamano = filesize($nombre);
		header("Content-length: $tamano");
		header("Content-type: application/octet-stream");
		header("Content-Disposition: attachment; filename='$nombre'");
		readfile($nombre);
	}
}
if (isset($_GET['url'])) {
	$url = urldecode($_GET['url']);
	$ext = pathinfo($url)['extension'];
	$ext = substr($ext, 0, 3);
	if ($ext != 'mp3') {
		die('Error, no es una cancion '.$ext);
	}
	if (!descarga('Audio.mp3', $url)) {
		echo "Error, no se ha podido descargar";
	}
}
?>

Y también así lo guardan :welcoming:

Y los suben los dos en un mismo directorio, y ya lo tendrían funcionando, solo tienen que pegar la url de la canción de soundcloud en el campo de texto, darle click a "Obtener" y listo, les saldrá el enlace de descarga y la canción:

Captura.webp

Aclaraciones, no se puede descarga múltiple, porque cuando pones a descargar una canción se guarda primero en su host, con el nombre de Audio.mp3 y si pusieran a descargar otra al mismo tiempo se reemplazaría, por lo que la primera canción no quedaría completa, se puede arreglar, pero lo hago así para que no se les llene de archivos el host.
Otra es que a veces falla, no aparece la canción ni se puede descargar, pero es porque el enlace expira (o algo así) solo recarguen hasta que les funcione 🙂

:encouragement:

DEMO

Otros tutoriales:
  1. Crea tu descargador de vídeos de Facebook
  2. Descarga videos e imágenes de Instagram
 
Última edición:
Genial, uso mucho esa web, gracias por el aporte va a ser muy útil, saludos.

"write once, run anywhere”
 
Muy buena, gracias por el aporte
 
Atrás
Arriba