Sistema de Música por nome - Cifra Modder - 28/10/2023
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.
Ou seja essa não é a melhor forma de ser criado mais funciona. acabo de testar aqui em uma hospedagem da optilink e funcionou perfeitamente! Se caso alguém quiser testar é só usar essa URL: https://neonpvp.samp.optikl.ink/musica.php?n=Nome da musica
|