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:

  1. ip - saját szerver IP címe, vagy weboldal címe;
  2. * port - SSH Port (alapértelmezetten: 22);
  3. username - felhasználónév a bejelentkezéshez;
  4. 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:

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.

  1. currentlisteners - aktuális hallgatók;
  2. peaklisteners - összes hallgató;
  3. maxlisteners - maximális hallgatók száma;
  4. uniquelisteners - egyedi hallgatók;
  5. servergenre - műfaj(ok);
  6. serverurl - weboldal;
  7. servertitle - rádióállomás neve;
  8. songtitle - aktuális zeneszám;
  9. streamhits - legtöbbet játszott zeneszám;
  10. streamstatus - szerver állapot (0 inaktív, 1 aktív);
  11. backupstatus - visszaállítási állapot (0 letiltva, 1 engedélyezve);
  12. streamlisted - nem konfigurált;
  13. streamlistederror - nem konfigurált;
  14. streampath - csatlakozási pont;
  15. streamuptime - adatfolyam ideje;
  16. bitrate - bitráta;
  17. samplerate - mintavételezési frekvencia;
  18. content - adatfolyam típusa;
  19. version - rádiószerver verziószám;
  20. 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.

* 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.

  1. admin - admin email (adminisztrátor által beállított konfiguráció);
  2. host - rádiószerver hosztnév vagy IP (konfigurációtól függően);
  3. location - helymeghatározás (adminisztrátor által beállított konfiguráció);
  4. server_id - rádiószerver típusa;
  5. server_start - rádiószever utolsó elindítási ideje;
  6. bitrate - bitsebesség (bitráta);
  7. genre - zenei műfaj(ok);
  8. listener_peak - hallgatói csúcs (maximális egyidejű hallgatók);
  9. listeners - aktuális hallgatók száma;
  10. listenurl - külső csatlakozási pont a lejátszáshoz;
  11. server_description - rádióállomás leírása;
  12. server_name - rádióállomás neve;
  13. server_type - adatfolyam típusa;
  14. server_url - saját weboldal;
  15. stream_start - közvetítés indítási ideje (nem ugyanaz, mint a server_start);
  16. 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.