![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
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 |
#7
|
||||
|
||||
![]() ![]() ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
![]() |
||||
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 |
![]() |
|