Az alábbi fejezet leginkább haladó fejlesztőknek szól, akik jártasak az alkalmazás-fejlesztésben. A weboldal fejlesztője lehetőséget nyújt olyan fájlok eléréséhez, melyeket csakis a weboldal felhasználói érhetnek el. Mivel a fájlok egyedi fejlesztésűek, ezért felhasználásuk korlátairól a fejlesztő rendelkezik. A felhasználási korlátokról az oldal alján olvashat bővebben..
Fájltípusok, kiterjesztések
A fájlok típusa többnyire alkalmazáskiterjesztés (.dll), melyeket megfelelő szaktudással lehet importálni saját programba, legyen az asztali vagy mobilalkalmazás. A következő példa szemlélteti egy .dll fájl importálását VB.Net programba:
DLL fájl importálása (server)
Első lépésként a Visual Studio által létrehozott alkalmazáshoz kell hozzáadni egy referencia (hivatkozási) fájlt az alábbi módon:
Tulajdonság kiválasztása.
A következő ablakban a bal oldali oszlopban található References menüpont kiválasztása.
A Hozzáadás (Add...) gombra kattintva lehet kiválasztani a DLL fájlt, melyet importálni szeretne.
FONTOS: vannak előre telepített fájlok, melyeket a kívánt keretrendszerhez viszonyítva lehet kiválasztani. Amennyiben a keretrendszerhez nem megfelelő fájlt szeretne importálni, hibaüzenet jelenik meg. A FreeStream weboldal fejlesztője által készített fájlok a jelenlegi legújabb keretrendszerhez (.NET 4.7.2) lettek készítve, ezért a kompatibilitási problémák esélye is minimális.
A jelenlegi példa SSH kapcsolaton keresztüli műveleteket mutat be, kizárólag saját rádiószerver használatához, melyhez szükségesek lehetnek bejelentkezési adatok is.
A letöltéshez jelentkezzen be, vagy keresse fel a DLLme wedoldalt és töltse le onnan a fájlt, illetve kiegészítő fájlokat!
VB.Net:
Public Class Form1
Private server1 As New icsc.server
Private Sub StartSCServer_Click(sender As Object, e As EventArgs) Handles StartSCServer.Click
server1.StartSHOUTcast("ip", "port", "username", "password")
End Sub
End Class
A fenti parancs elindítja a SHOUTcast rádiószervert. A csatlakozási adatok helyére a saját adatainkat kell megadni, mint például:
- ip - saját szerver IP címe, vagy weboldal címe;
- * port - SSH Port (alapértelmezetten: 22);
- username - felhasználónév a bejelentkezéshez;
- password - jelszó a bejelentkezéshez.
FONTOS: ha a rádiószerver egy VPS - en van üzemeltetve, értelemszerűen a VPS bejelentkezési adatait kell megadni. Alapértelmezetten a felhasználónév root, ami nem módosítható. A jelszót a VPS szolgáltató generálja, ami minden újratelepítés, vagy helyreállítás után módosul. Ajánlott ügyelni a VPS tárhely szakszerű használatára, hogy se helyreállítással, se újratelepítéssel ne kelljen a beállításokat módosítani. Ezek a feltételek a leginkább integrációnál számítanak, ezért ez a megjegyzés csak figyelemfelkeltés!
Példa:
Public Class Form1
Private server1 As New icsc.server
Private Sub StartSCServer_Click(sender As Object, e As EventArgs) Handles StartSCServer.Click
server1.StartSHOUTcast("valami.radioserver.hu", 22, "root", "sd2fsgEGstFzt4StvGNgwD3ds")
End Sub
End Class
Mivel a dll fájl csak az átjárót biztosítja az alkalmazás és a rádiószerver között, ezért személyes adatok tárolására nem használó (ezért biztonságosnak is tekinthető), ami azt jelenti, hogy minden használat során meg kell adni a csatlakozási/bejelentkezési adatokat.
* PORT - a port INTEGER típus, ezért nem kell idézőjelek közé rakni.
C#:
namespace Form1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void StartSCServer_Click(object sender, EventArgs e)
{
icsc.server server1 = new icsc.server();
server1.StartSHOUTcast("ip", "* port", "username", "password");
}
}
}
Példa 1:
namespace Form1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void StartSCServer_Click(object sender, EventArgs e)
{
icsc.server server1 = new icsc.server();
server1.StartSHOUTcast("valami.radioserver.hu", "22", "root", "sd2fsgEGstFzt4StvGNgwD3ds");
}
}
}
Példa 2:
namespace Form1
{
public partial class Form1 : Form
{
icsc.server server1 = new icsc.server();
public Form1()
{
InitializeComponent();
}
private void StartSCServer_Click(object sender, EventArgs e)
{
server1.StartSHOUTcast("valami.radioserver.hu", "22", "root", "sd2fsgEGstFzt4StvGNgwD3ds");
}
}
}
* PORT - a port INTEGER típus, viszont ebben a program-nyelvben ajánlott idézőjelek közé rakni.
A fenti példák a SHOUTcast rádiószerver elindítását mutatják be VB.Net (Visual Basic .Net), illetve C# (CSharp) nyelven. A DLL fájl több funkciót is tartalmaz, melyek a következők:
- SHOUTcast / Icecast rádiószerver indítása (StartSHOUTcast / StartIcecast)
- SHOUTcast / Icecast rádiószerver leállítása (StopSHOUTcast / StopIcecast)
- SHOUTcast / Icecast rádiószerver újraindítása (RestartSHOUTcast / RestartIcecast)
- SHOUTcast / Icecast rádiószerver konfiguráció frissítése (RefreshSHOUTcast / RefreshIcecast)
A zárójelben lévő részek a parancsot helyettesítik, mint például:
server1.RestartSHOUTcast("valami.radioserver.hu", 22, "root", "sd2fsgEGstFzt4StvGNgwD3ds") vagy
server1.RefreshSHOUTcast("valami.radioserver.hu", 22, "root", "sd2fsgEGstFzt4StvGNgwD3ds")
DLL fájl importálása (meta_data)
Egy másik DLL fájl segítségével információkat nyerhetünk ki az aktív rádiószerver által közvetített médiatartalmakból. Importálása ugyanúgy történik, mint a már fentebb említett példában, felhasználása viszont eltérőbb, mivel több lehetőség áll a rendelkezésre.
A következő néhány példa a fentiekhez hasonlóan bemutatja a DLL fájl használatát, illetve lehetőségeit. Mivel magasabb szintű, mint az SSH kliens, ezért a bemutatása is hosszabb lenne, viszont néhány példa elég ahhoz, hogy megértsük a fájl használatát.
SHOUTcast tulajdonságok.
A funkciók használatához több adatot is meg kell adni a megjelenítéshez, melyek integer (szám) szerint vannak felsorolva. A következő lista a SHOUTcast metaadatokat tartalmazza.
- currentlisteners - aktuális hallgatók;
- peaklisteners - összes hallgató;
- maxlisteners - maximális hallgatók száma;
- uniquelisteners - egyedi hallgatók;
- servergenre - műfaj(ok);
- serverurl - weboldal;
- servertitle - rádióállomás neve;
- songtitle - aktuális zeneszám;
- streamhits - legtöbbet játszott zeneszám;
- streamstatus - szerver állapot (0 inaktív, 1 aktív);
- backupstatus - visszaállítási állapot (0 letiltva, 1 engedélyezve);
- streamlisted - nem konfigurált;
- streamlistederror - nem konfigurált;
- streampath - csatlakozási pont;
- streamuptime - adatfolyam ideje;
- bitrate - bitráta;
- samplerate - mintavételezési frekvencia;
- content - adatfolyam típusa;
- version - rádiószerver verziószám;
- averagetime - csatlakozási idő;
A META adatok megjelenítésére többféle lehetőség is van, melyeket a DLL fájl is tartalmazza, illetve a folyamatos fejlesztéseknek köszönhetően majd bele kerülnek. Az egyik ilyen megjelenítési forma, amikor az alkalmazásban elhelyezünk egy cimkét (pl.: Label1) és ennyek a cimkének adunk egy megjelenítési funkciót. Az alábbi példa ezt szemlélteti:
VB.Net 1:
Public Class Form1
Private metadata As New icsc_meta.meta_data
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Label1.Text = metadata.shoutcast("ssl", "ip", "port", "streampath", "metadata", "message")
End Sub
End Class
A másik példa akkor hasznos, ha több cimke is el van helyezve az alkalmazásban és azok közül szeretnénk kiválasztani, hogy melyiket használjuk. Ebben az esetben nem kell előre definiálni a cimkét, hanem a megjelenítési funkcióban kell hozzáadni az általunk kiválasztottat.
VB.Net 2:
Public Class Form1
Private metadata As New icsc_meta.meta_data
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
metadata.shoutcast_integrated("ssl", "ip", "port", "streampath", "metadata", "message", "label")
End Sub
End Class
Látható, hogy a META adatok lekérdezéséhez már több adat egyidejű megadása szükséges. Hiányos, vagy hibás adatok megadása esetén hibaüzenet jelenhet meg, vagy az alkalmazás összeomolhat.
SHOUTcast adatok példával.
- SSL (Ha SSL kapcsolatot használ az érték 1, ellenkező esetben 0 - * Integer)
- IP vagy Hosztnév (Szolgáltató IP címe vagy webcíme - * String)
- PORT (Port - Integer)
- Streampath (Csatlakozási pont, mely nem azonos a sid - el (Stream ID) - String)
- Metadata (Metaadat megadása a fent említett listából - Integer)
- Message (Hibaüzenetek megjelenítése. Ha 1 engedélyezve van, ha 0 le van tiltva - Integer)
- * Label (cimke neve, pl. Label1)
* String / Integer - a String szöveget jelent, amit idézőjelek közé kell rakni, míg az Integer számot jelent, melyhez nem szükséges az idézőjel, viszont használható.
* Label - mivel egy alkalmazás összetevőről van szó nem szabad idézőjeleket használni még akkor sem, ha az érték String lesz.
Példa 1:
Public Class Form1
Private metadata As New icsc_meta.meta_data
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Label1.Text = metadata.shoutcast(1, "valami.radioserver.hu", 8000 , "my_radio", 8, 1)
End Sub
End Class
Példa 2:
Public Class Form1
Private metadata As New icsc_meta.meta_data
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
metadata.shoutcast_integrated(1, "valami.radioserver.hu", 8000 , "my_radio", 8, 1, Label1)
End Sub
End Class
Az első példa egy előre meghatározott cimkét kiválasztva jeleníti meg az aktuális zeneszámot, a hibaüzenetek megjelenítésével, míg a második példában utólag lett hozzáadva a cimke neve, így az esetleges időközi módosítások is egyszerűbbek. Mindkét példa SSL kapcsolatot használ a kommunikációhoz.
Mivel az adatok frissülnek, ezért a megjelenítést is egy időzítőbe (Timer) kell rakni, mint ahogy az a példában is látható. A Timer Interval - ját állítsuk 10000 millisecundumra, ami 10 másodpercnek felel meg, ezáltal 10 másodpercenként frissülni fog a bejegyzés.
Icecast tulajdonságok.
A funkciók használatához az Icecast esetében is több adatot kell megadni a megjelenítéshez, melyek integer (szám) szerint vannak felsorolva. A következő lista az Icecast metaadatokat tartalmazza.
- admin - admin email (adminisztrátor által beállított konfiguráció);
- host - rádiószerver hosztnév vagy IP (konfigurációtól függően);
- location - helymeghatározás (adminisztrátor által beállított konfiguráció);
- server_id - rádiószerver típusa;
- server_start - rádiószever utolsó elindítási ideje;
- bitrate - bitsebesség (bitráta);
- genre - zenei műfaj(ok);
- listener_peak - hallgatói csúcs (maximális egyidejű hallgatók);
- listeners - aktuális hallgatók száma;
- listenurl - külső csatlakozási pont a lejátszáshoz;
- server_description - rádióállomás leírása;
- server_name - rádióállomás neve;
- server_type - adatfolyam típusa;
- server_url - saját weboldal;
- stream_start - közvetítés indítási ideje (nem ugyanaz, mint a server_start);
- title - aktuális zeneszám;
A META adatok megjelenítése hasonló a SHOUTcast rádiószerveréhez, azzal a különbséggel, hogy kevesebb adat kérdezhető le, de a lényeges információk elérhetők. Előfordulhat, hogy egyes adatok lekérdezésénél hibaüzenet jelenik meg, ami automatikus, ezért nem lehet kikapcsolni. Ha ilyet tapasztalna ne használja azt a funkciót, mert valószínű, hogy adminisztrációs jogosultság kell hozzá.
VB.Net 1:
Public Class Form1
Private metadata As New icsc_meta.meta_data
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Label1.Text = metadata.icecast("ssl", "ip", "port", "mountpoint", "metadata", "message")
End Sub
End Class
VB.Net 2:
Public Class Form1
Private metadata As New icsc_meta.meta_data
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
metadata.icecast_integrated("ssl", "ip", "port", "mountpoint", "metadata", "message", "label")
End Sub
End Class
Látható, hogy szinte teljesen azonos a SHOUTcast rádiószerver funkciójával azzal a kivétellel, hogy az Icecast rádiószerver esetében a META adatok más értéket kaptak.
Példa 1:
Public Class Form1
Private metadata As New icsc_meta.meta_data
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Label1.Text = metadata.icecast(1, "valami.radioserver.hu", 8000 , "my_radio", 16, 1)
End Sub
End Class
Példa 2:
Public Class Form1
Private metadata As New icsc_meta.meta_data
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
metadata.icecast_integrated(1, "valami.radioserver.hu", 8000 , "my_radio", 16, 1, Label1)
End Sub
End Class
Amennyiben más programnyelvet szeretne használni (például: C# (CSharp)), a DLL fájl importálása után a következő példához hasonló módon kell eljárni:
Példa 1 (C#):
namespace Form1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
icsc_meta.meta_data metadata = new icsc_meta.meta_data();
label1.Text = metadata.shoutcast("1", "valami.radioserver.hu", "8000" , "my_radio", "8", "1");
}
}
}
Példa 2 (C#):
namespace Form1
{
public partial class Form1 : Form
{
icsc_meta.meta_data metadata = new icsc_meta.meta_data();
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
metadata.icecast_integrated("1", "valami.radioserver.hu", "8000" , "my_radio", "16", "1", label1);
}
}
}
Korábban már volt róla szó, hogy a C# (CSharp) programozási nyelvben ajánlott az integer típusokat is idézőjelek közé rakni. Az alkalmazás összetevői ebben a nyelvben is kivételt élveznek.