![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Truco para listar emisoras de Radio Browser (web)
Hola amigos, esto creo que os va a gustar:
Estaba ahi experimentando con una API de Radio Browser y mirad que guapo https://de2.api.radio-browser.info/ NECESITA LAS DLL DE SSL: https://indy.fulgan.com/SSL/ ![]() aqui os dejo el codigo en C++ Builder y Delphi: Código:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <System.JSON.hpp>
#include <IdHTTP.hpp>
#include <IdSSLOpenSSL.hpp>
#include <memory>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try
{
std::unique_ptr<TIdHTTP> http(new TIdHTTP(nullptr));
std::unique_ptr<TIdSSLIOHandlerSocketOpenSSL> ssl(new TIdSSLIOHandlerSocketOpenSSL(nullptr));
std::unique_ptr<TStringStream> response(new TStringStream());
// Configurar SSL correctamente
ssl->SSLOptions->Method = sslvTLSv1_2;
ssl->SSLOptions->Mode = sslmClient;
ssl->SSLOptions->VerifyMode = TIdSSLVerifyModeSet();
ssl->SSLOptions->VerifyDepth = 0;
http->IOHandler = ssl.get(); // Asignar SSL a HTTP
http->HandleRedirects = true;
http->Request->UserAgent = "Mozilla/5.0";
// URL de la API de Radio Browser
String url = "http://de2.api.radio-browser.info/json/stations";
// Hacer la solicitud GET
http->Get(url, response.get());
// Parsear la respuesta JSON
std::unique_ptr<TJSONArray> jsonResponse(static_cast<TJSONArray*>(TJSONObject::ParseJSONValue(response->DataString)));
if (jsonResponse)
{
ListBox1->Items->Clear();
for (int i = 0; i < jsonResponse->Count; i++)
{
TJSONObject *station = dynamic_cast<TJSONObject*>(jsonResponse->Items[i]);
if (station)
{
TJSONString *jsonName = dynamic_cast<TJSONString*>(station->GetValue("name"));
TJSONString *jsonUrl = dynamic_cast<TJSONString*>(station->GetValue("url"));
UnicodeString name = jsonName ? jsonName->Value() : "Desconocido";
UnicodeString streamUrl = jsonUrl ? jsonUrl->Value() : "URL no disponible";
ListBox1->Items->Add(name + " - " + streamUrl);
}
}
}
}
catch (const Exception &e)
{
ShowMessage("Error: " + e.Message);
}
}
//---------------------------------------------------------------------------
Delphi:
Última edición por navbuoy fecha: 25-03-2025 a las 18:06:22. |
|
#2
|
|||
|
|||
|
Lo he dividido en 2 List Box para que la URL sea mas facilmente accesible cuando usemos
el reproductor para tocar la emisora en la tarjeta de sonido ![]() Código:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <System.JSON.hpp>
#include <IdHTTP.hpp>
#include <IdSSLOpenSSL.hpp>
#include <memory>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try
{
std::unique_ptr<TIdHTTP> http(new TIdHTTP(nullptr));
std::unique_ptr<TIdSSLIOHandlerSocketOpenSSL> ssl(new TIdSSLIOHandlerSocketOpenSSL(nullptr));
std::unique_ptr<TStringStream> response(new TStringStream());
// Configurar SSL correctamente
ssl->SSLOptions->Method = sslvTLSv1_2;
ssl->SSLOptions->Mode = sslmClient;
ssl->SSLOptions->VerifyMode = TIdSSLVerifyModeSet();
ssl->SSLOptions->VerifyDepth = 0;
http->IOHandler = ssl.get(); // Asignar SSL a HTTP
http->HandleRedirects = true;
http->Request->UserAgent = "Mozilla/5.0";
// URL de la API de Radio Browser
String url = "http://de2.api.radio-browser.info/json/stations";
// Hacer la solicitud GET
http->Get(url, response.get());
// Parsear la respuesta JSON
std::unique_ptr<TJSONArray> jsonResponse(static_cast<TJSONArray*>(TJSONObject::ParseJSONValue(response->DataString)));
if (jsonResponse)
{
ListBox1->Items->Clear();
ListBox2->Items->Clear();
for (int i = 0; i < jsonResponse->Count; i++)
{
TJSONObject *station = dynamic_cast<TJSONObject*>(jsonResponse->Items[i]);
if (station)
{
TJSONString *jsonName = dynamic_cast<TJSONString*>(station->GetValue("name"));
TJSONString *jsonUrl = dynamic_cast<TJSONString*>(station->GetValue("url"));
UnicodeString name = jsonName ? jsonName->Value() : "Desconocido";
UnicodeString streamUrl = jsonUrl ? jsonUrl->Value() : "URL no disponible";
ListBox1->Items->Add(name);
ListBox2->Items->Add(streamUrl);
}
}
}
}
catch (const Exception &e)
{
ShowMessage("Error: " + e.Message);
}
}
//---------------------------------------------------------------------------
|
|
#3
|
|||
|
|||
![]() https://www.quazardev.net/RADIO_BROWSER_APP.rar por si os resulta de utilidad ahi os lo dejo, si faltase algun BPL o algo decidmelo |
|
#4
|
||||
|
||||
![]() ![]() ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
||||
|
||||
|
Muchas gracias por la aportación.
La verdad es que está chulo... ![]() ![]()
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#6
|
|||
|
|||
![]() le he puesto unos slots de memorias para guardar emisoras |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Implementar truco para antidebug en mi clase debugger | aguml | C++ Builder | 2 | 01-06-2020 21:32:56 |
| Algun Truco para imitar el onkeydown | madmai | Internet | 2 | 24-02-2009 14:00:37 |
| Busco un truco para Grid | edca | OOP | 4 | 30-01-2009 22:56:55 |
| necesito un truco para escribir en 2 o mas lineas.. | locotenentul | Varios | 2 | 26-07-2008 00:10:44 |
| Truco para mayusculas en DBGrid | Johnny Q | OOP | 6 | 16-10-2005 17:10:14 |
|