Sistema de Música por nome - Cifra Modder - 28/10/2023
Edit: Parou de funcionar por causa da 'API'.
Venho trazer um pequeno sistema corrigido por mim do Vaca Marinha. Os créditos vão para ele pela base. Você precisará de um servidor web para que funcione, e que não tenha nenhum atraso na Api. Tem algumas hospedagem web de graça, mais tem alguns que não funciona.
Código: <?php
// Verifica se o parâmetro 'n' foi passado na URL, e se sim, codifica o valor.
$nome = isset($_GET['n']) ? urlencode($_GET['n']) : exit("Digite um nome");
// Constrói a URL para buscar o conteúdo.
$url = "http://site.mtabrasil.com.br/musicas/?s=" . $nome;
// Tenta obter o conteúdo da URL.
$content = file_get_contents($url);
// Verifica se a busca pelo início da tag de áudio teve sucesso.
$audioTagStart = '<audio controls preload="none">';
$audioTagEnd = "</audio>";
$links = [];
// Divide o conteúdo em partes com base na tag de áudio.
$firstStep = explode($audioTagStart, $content);
foreach ($firstStep as $key => $value) {
if ($key > 0) {
// Divide a parte com base no fim da tag de áudio.
$secondStep = explode($audioTagEnd, $value);
// Procura o URL do arquivo de áudio dentro da parte.
if (preg_match('/"([^"]+)"/', $secondStep[0], $matches)) {
$links[] = $matches[1];
break;
}
}
}
// Se pelo menos um link de áudio for encontrado, continue.
if (count($links) > 0) {
$audioUrl = $links[0];
// Tenta obter os dados do áudio do URL encontrado.
$audioData = file_get_contents($audioUrl);
if ($audioData) {
// Obtenha o nome do arquivo da URL do áudio.
$filename = basename($audioUrl);
// Defina os cabeçalhos apropriados para a resposta HTTP.
header('Content-Type: audio/mpeg');
header('Content-Length: ' . strlen($audioData));
header('Content-Disposition: inline; filename="' . $filename . '"');
// Envia os dados do áudio para o navegador.
echo $audioData;
} else {
exit("Falha ao carregar a música.");
}
} else {
exit("Nenhum link de áudio encontrado.");
}
?>
Código: #include <a_samp>
#include <zcmd>
#include <sscanf2>
#define FILTERSCRIPT
public OnFilterScriptInit()
{
print("Sistema musicas por nome corrigido.");
return 1;
}
#define Dialog_Ouvir 5343
CMD:ouvir(playerid, params[])
{
return ShowPlayerDialog(playerid, Dialog_Ouvir, DIALOG_STYLE_INPUT, "Ouvir musica", "Digite o nome da musica que quer ouvir:", "Ouvir", "Cancelar");
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new urlfinal[1024];
if(dialogid == Dialog_Ouvir)
{
format(urlfinal, 1024, "exemplo/musica.php?n=%s", inputtext);
PlayAudioStreamForPlayer(playerid, urlfinal);
SendClientMessage(playerid, 0x00ff00ff, "Reproduzindo musica!");
return 1;
}
return 0;
}
CMD:parar(playerid)
{
StopAudioStreamForPlayer(playerid);
SendClientMessage(playerid, 0xff0000ff, "Parando musica!");
return 1;
}
RE: Sistema de Música por nome - White_Blue - 28/10/2023
Existem possíveis 2 problemas aqui:
1. O SA-MP mobile, ele não aceita URLs com redirecionamento HTTPS ativado (Como é o caso do site do MTA Brasil, salvo engano, e as vezes a requisição falha até mesmo no SA-MP de PC).
2. O código PHP acima é uma gambiarra.
Conclusão: O recomendado é criar uma API de upload de músicas própria (O que alguém com conhecimento básico-intermediário em backend conseguiria fazer sem grandes problemas) e criar um subdomínio na hospedagem e desativar o SSL/Redirecionamento HTTPS no subdomínio onde as músicas ficariam hospedadas. Inclusive, quando eu tiver um tempinho livre, vou trabalhar em um sistema parecido usando Next e Django.
RE: Sistema de Música por nome - Cifra Modder - 29/10/2023
(28/10/2023 12:45)White_Blue Escreveu: Existem possíveis 2 problemas aqui:
1. O SA-MP mobile, ele não aceita URLs com redirecionamento HTTPS ativado (Como é o caso do site do MTA Brasil, salvo engano, e as vezes a requisição falha até mesmo no SA-MP de PC).
2. O código PHP acima é uma gambiarra, como o próprio autor original (Vaca Marinha) disse.
Conclusão: O recomendado é criar uma API de upload de músicas própria (O que alguém com conhecimento básico-intermediário em backend conseguiria fazer sem grandes problemas) e criar um subdomínio na hospedagem e desativar o SSL/Redirecionamento HTTPS no subdomínio onde as músicas ficariam hospedadas. Inclusive, quando eu tiver um tempinho livre, vou trabalhar em um sistema parecido usando Next e Django.
Este script PHP não envolve redirecionamento. Em vez disso, ele busca e reproduz músicas diretamente do site mencionado, sem encaminhar o usuário para outra página da web.
|