====== WEB ======
A //Web// modul célja a rádió digitális jelenlétének automatizálása egy átfogó adatbázis kezelésével, amely magában foglalja a műsorkészítők, a műsorok, az adástükör és az adáslista részletes adatait, szövegekkel, képekkel és hanganyagokkal. Ez szolgál alapul az automatizált archiválási és közzétételi folyamatokhoz, amelyek során a kívánt műsorok hanganyagait rendszerezetten tárolja a belső hálózaton, és hozzáférhetővé teszi azokat a nyilvánosság számára FTP szerveren keresztül.
Az adatok elérése a [[web:web#broadminapi|BroAdminAPI]] //REST API// interfészen keresztül történik, amelyet a rádió weboldala könnyedén használhat. Ez lehetővé teszi a hallgatók számára az információk és tartalmak könnyű és gyors elérését.
A //Web// modul csak az adatok hozzáférését biztosítja a rádió nyilvános weboldal számára, magát a weboldalt nem tartalmazza.
----
===== Adáslista =====
== web-broadcast ==
Ez a lista a műsorkészítők, a műsorok és az adástükör beállításai alapján automatikusan generálódik. Itt nyílik lehetőség egyedi képet, címet és leírást (ajánlót) adni egy-egy adáslista elemhez, illetve nyomon lehet követni az automatikus export állapotait a státusz oszlopban. Sikertelen export (vagy esetleges manuális változások megtörténte) esetén itt nyílik lehetőség a hangfájlok lecserélésére is.
* **Műsor**: műsor címe
* **Slug**: automatikus, csak olvasható mező, a dátumból, az állomás kódjából és a műsor címéből generálódik
* **Kezdés**: a műsor kezdésének időpontja
* **Befejezés**: a műsor befejezésének időpontja
* **Cím**: a műsor egyedi címe (nem kötelező, csak akkor kell kitölteni, ha más néven szeretnénk a műsort megjeleníteni ennél az egy adáslista elemnél, pl: a ''Portré'' műsornál ''Portré - vendég: Gipsz Jakab'')
* **Leírás**: a műsor egyedi leírása (nem kötelező, csak akkor kell kitölteni, ha nem az alapbeállításként, a műsoroknál megadott szöveget szeretnénk megjeleníteni, például műsorajánló jelleggel)
* **Kihagyás**: ha be van pipálva, ezt a műsort nem exportálja a rendszer, nem készül hozzá automatikusan hanganyag
* **Ismétlés**: ha a műsor egy korábban elhangzott műsor ismétlése, ezt be kell pipálni (ugyanúgy kihagyja a rendszer a feldolgozást)
* **Kép**: eseti, csak ehhez a adáshoz tartozó kép feltöltése (nem kötelező, a kép törlése kipipálásával az eredetileg ide külön feltöltött kép törlésre kerül és a műsor alapbeállításként megadott képe kerül felhasználásra)
* **Fájlok cseréje**: az itt megadott hanganyagokat a rendszer automatikusan átnevezi és lecseréli, az egyetlen kívánalom, hogy a fájlnevek sorrendben legyenek (pl. ''csere1.mp3'', ''csere2.mp3'', stb.)
* **Állomás**: ahol a műsor az adott időpontban adásba kerül, ha eltér az adástükörben megadottaktól. Ha új adáslista elemet hozunk létre, akkor kötelező, hiszen az nem az adástükör alapján generálódott.
* **Műsorkészítő**: amennyiben a műsorkészítő eltér az adástükörben vagy a műsoroknál megadottaktól, lehetőség nyílik csak ehhez az adáslista elemhez rendelni műsorkészítőt (amennyiben nincs különbség, nem kell bepipálni semmit)
Státuszok jelentése:
* **SCHEDULED**: Még nincs feldolgozva
* **READY**: Minden rendben elkészült
* **SKIPPED**: Kihagyva
* **NO MARKER**: Nincs az adáslistában megfelelő elem a start/stop feltételeknek
* **TAKE ERROR**: Nem sikerült az adáslistában elhelyezett start/stop elemeket értelmezni
* **SEGMENT ERROR**: Az egyes már kivágott műsorrészleteket nem sikerült összeilleszteni
* **LOG ERROR**: Nem található loggerfájl az adott műsorhoz
* **FILE ERROR**: Nem sikerült létrehozni a fájlt a műsorhoz
* **FTP ERROR**: Nem sikerült feltölteni a fájlt az FTP-re
Minden változtatás automatikusan továbbítódik a webre, csak a végleges, nyilvános verziót szabad elmenteni!
Ha nem adunk meg itt külön műsorkészítőt, akkor az az adáslista (és ha ott nincs megadva semmi, akkor) a műsor beállításai alapján kerül meghatározásra.
Ha nem adunk meg itt külön állomást, akkor az az adáslista beállításai alapján kerül meghatározásra.
Az itt megadott adatok szolgálnak a [[web:web#broadcast|Broadcast]] séma adataiként
Az állomások megadásánál az "Állomás" feliratra kattintással az összes állomás kipipálható
===== Műsorkészítők =====
== web-presenter ==
Itt szerkeszthetők a műsorkészítők és azok alapbeállításai:
* **Név**: tetszőleges, egyedi név
* **Slug**: automatikus, csak olvasható mező, a műsorkészítő nevéből generálódik
* **Titulus**: a műsorkészítő titulusa
* **Bemutatkozás**: a műsorkészítő bemutatkozó szövege (nem kötelező)
* **Kép**: a műsorkészítő képe (nem kötelező, a kép törlése kipipálásával az eredetileg ide külön feltöltött kép törlésre kerül)
* **Aktív**: aktiválás
* **Állomás**: a műsorkészítő aktív állomásainak megadása, ahol a műsorai játszásra kerülhetnek (legalább egy megadása kötelező)
Az itt megadott adatok szolgálnak a [[web:web#presenter|Presenter]] séma adataiként
Az állomások megadásánál az "Állomás" feliratra kattintással az összes állomás kipipálható
===== Műsorok =====
== web-show ==
Itt szerkeszthetők a műsorok és azok alapbeállításai:
* **Cím**: tetszőleges, egyedi műsorcím
* **Slug**: automatikus, csak olvasható mező, a műsor címéből generálódik
* **Leírás**: a műsor leírása, általános bemutató szövege (nem kötelező)
* **Kihagyás**: ha be van pipálva, ezt a műsort nem exportálja a rendszer, nem készül hozzá automatikusan hanganyag
* **Kép**: a műsor képe (nem kötelező, a kép törlése kipipálásával az eredetileg ide külön feltöltött kép törlésre kerül)
* **Aktív**: aktiválás
* **Állomás**: a műsor aktív állomásainak megadása, ahol a műsor játszásra kerülhet (legalább egy megadása kötelező)
* **Műsorkészítő**: minden műsorkészítő, aki a műsorhoz tartozik
Az itt megadott adatok szolgálnak a [[web:web#show|Show]] séma adataiként
Az állomások megadásánál az "Állomás" feliratra kattintással az összes állomás kipipálható
===== Adástükör =====
== web-grid ==
Itt szerkeszthetők az adástükör beállításai:
* **Műsor**: műsor címe
* **Kezdés**: automatikus, csak olvasható mező, a műsor címéből generálódik (óra:perc)
* **Első nap**: a műsor első napja az adástükörben (ez alapján fogja megállapítani a rendszer, hogy melyik napon kerül adásba és egyben innentől érvényes a műsor az idővonalon)
* **Utolsó nap**: a műsor utolsó napja az adástükörben (ha nincs beállítva, akkor határozatlan ideig érvényes)
* **Hossz**: a műsor hossza (óra:perc)
* **Gyakoriság**: tulajdonképpen az, hogy hány hetente ismétlődik a műsor (hetente ismétlődő műsoroknál ''1'', kétheti műsoroknál ''2'', stb.)
* **Állomás**: ahol a műsor az adott időpontban adásba kerül (legalább egy megadása kötelező)
* **Műsorkészítő**: minden műsorkészítő, aki az adott napon készíti a műsort, ha van eltérés az eredetileg a műsorhoz rendelt műsorkészítőkhöz képest (amennyiben nincs, nem kell bepipálni semmit)
Ha nem adtunk meg műsorkészítőt egy adástükör elemhez, akkor a műsornál beállított műsorkészítőket fogja venni a adástükör, ilyenkor a műsorkészítők fekete színnel szerepelnek a rácson. Ha megadunk külön műsorkészítőt, akkor azt sötétpiros színnel jelzi a rendszer.
Ha egy műsor megszűnik egy adott időpontban és egy másik kerül a helyére, akkor azt nem a műsor módosításával kell beállítani az adástükör adatlapján, hanem fel kell venni az új műsort külön (korrekt első nap beállítással) és a megszűnő műsor utolsó napját be kell állítani. Így a csere rendszerben automatikusan meg fog történni.
Ha például A és B héten különböző műsorok váltják egymást, a //Gyakoriság// mező értékét mindkét műsornál 2-re kell állítani és az egyes műsorok első napját egy hét eltolással kell megadni. Pl. az első műsor első napja ''2024-01-01'' ami egy hétfői nap, akkor a második műsor első napja egy héttel később lesz: ''2024-01-08'' - így hetente váltogatni fogják egymást az adástükörben.
Az itt megadott adatok szolgálnak a [[web:web#show|Show]] séma adataiként
Az állomások megadásánál az "Állomás" feliratra kattintással az összes állomás kipipálható
----
===== BroAdminAPI =====
==== [GET] broadcast ====
Parameters:
* **station** [string($uuid)]
* **date** [string($date-time)]
* **modified** [string($date-time)]
* **limit** [integer($int32)] (default: ''100'')
* **offset** [integer($int32)] (default: ''0'')
Response:
[
{
"broadcastId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"broadcastSlug": "string",
"broadcastShow": {
"showId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"showSlug": "string",
"showTitle": "string",
"showDescription": "string",
"showImage": "string",
"showPresenter": [
{
"presenterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"presenterSlug": "string",
"presenterName": "string",
"presenterTitle": "string",
"presenterDescription": "string",
"presenterImage": "string",
"presenterStation": [
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:47:46.197Z"
}
],
"presenterModified": "2024-04-26T10:47:46.197Z"
}
],
"showStation": [
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:47:46.197Z"
}
],
"showModified": "2024-04-26T10:47:46.197Z"
},
"broadcastStart": "2024-04-26T10:47:46.197Z",
"broadcastEnd": "2024-04-26T10:47:46.197Z",
"broadcastTitle": "string",
"broadcastDescription": "string",
"broadcastImage": "string",
"broadcastRebroadcast": true,
"broadcastFile": [
{
"fileId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"fileSlug": "string",
"filePath": "string",
"fileModified": "2024-04-26T10:47:46.197Z"
}
],
"broadcastPresenter": [
{
"presenterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"presenterSlug": "string",
"presenterName": "string",
"presenterTitle": "string",
"presenterDescription": "string",
"presenterImage": "string",
"presenterStation": [
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:47:46.197Z"
}
],
"presenterModified": "2024-04-26T10:47:46.197Z"
}
],
"broadcastStation": [
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:47:46.197Z"
}
],
"broadcastStatus": "string",
"broadcastModified": "2024-04-26T10:47:46.197Z"
}
]
==== [GET] grid ====
Parameters:
* **station** [string($uuid)] (required)
* **date** [string($date-time)] (required)
* **modified** [string($date-time)]
Response:
[
{
"gridId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"gridShow": {
"showId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"showSlug": "string",
"showTitle": "string",
"showDescription": "string",
"showImage": "string",
"showPresenter": [
{
"presenterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"presenterSlug": "string",
"presenterName": "string",
"presenterTitle": "string",
"presenterDescription": "string",
"presenterImage": "string",
"presenterStation": [
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:48:57.436Z"
}
],
"presenterModified": "2024-04-26T10:48:57.436Z"
}
],
"showStation": [
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:48:57.436Z"
}
],
"showModified": "2024-04-26T10:48:57.436Z"
},
"gridStart": "2024-04-26T10:48:57.436Z",
"gridEnd": "2024-04-26T10:48:57.436Z",
"gridRebroadcast": true,
"gridPresenter": [
{
"presenterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"presenterSlug": "string",
"presenterName": "string",
"presenterTitle": "string",
"presenterDescription": "string",
"presenterImage": "string",
"presenterStation": [
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:48:57.436Z"
}
],
"presenterModified": "2024-04-26T10:48:57.436Z"
}
],
"gridModified": "2024-04-26T10:48:57.436Z"
}
]
==== [GET] presenter ====
Parameters:
* **station** [string($uuid)]
* **modified** [string($date-time)]
* **limit** [integer($int32)] (default: ''100'')
* **offset** [integer($int32)] (default: ''0'')
Response:
[
{
"presenterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"presenterSlug": "string",
"presenterName": "string",
"presenterTitle": "string",
"presenterDescription": "string",
"presenterImage": "string",
"presenterStation": [
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:49:38.964Z"
}
],
"presenterModified": "2024-04-26T10:49:38.964Z"
}
]
==== [GET] show ====
Parameters:
* **station** [string($uuid)]
* **modified** [string($date-time)]
* **limit** [integer($int32)] (default: ''100'')
* **offset** [integer($int32)] (default: ''0'')
Response:
[
{
"showId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"showSlug": "string",
"showTitle": "string",
"showDescription": "string",
"showImage": "string",
"showPresenter": [
{
"presenterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"presenterSlug": "string",
"presenterName": "string",
"presenterTitle": "string",
"presenterDescription": "string",
"presenterImage": "string",
"presenterStation": [
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:49:59.298Z"
}
],
"presenterModified": "2024-04-26T10:49:59.298Z"
}
],
"showStation": [
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:49:59.298Z"
}
],
"showModified": "2024-04-26T10:49:59.298Z"
}
]
==== [GET] station ====
Parameters:
* **modified** [string($date-time)]
* **limit** [integer($int32)] (default: ''100'')
* **offset** [integer($int32)] (default: ''0'')
Response:
[
{
"stationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"stationSlug": "string",
"stationName": "string",
"stationDescription": "string",
"stationStream": "string",
"stationSequence": 0,
"stationModified": "2024-04-26T10:50:18.709Z"
}
]
==== schemas ====
=== Broadcast ===
* broadcastId string($uuid)
* broadcastSlug string
* broadcastShow [[web:web#show|Show]]
* broadcastStart string($date-time)
* broadcastEnd string($date-time)
* broadcastTitle string
* broadcastDescription string
* broadcastImage string
* broadcastRebroadcast boolean
* broadcastFile array of [[web:web#file|File]]
* broadcastPresenter array of [[web:web#presenter|Presenter]]
* broadcastStation array of [[web:web#station|Station]]
* broadcastStatus string
* broadcastModified string($date-time)
=== File ===
* fileId string($uuid)
* fileSlug string
* filePath string
* fileModified string($date-time)
=== Grid ===
* gridId string($uuid)
* gridShow [[web:web#show|Show]]
* gridStart string($date-time)
* gridEnd string($date-time)
* gridRebroadcast boolean
* gridPresenter array of [[web:web#presenter|Presenter]]
* gridModified string($date-time)
=== Presenter ===
* presenterId string($uuid)
* presenterSlug string
* presenterName string
* presenterTitle string
* presenterDescription string
* presenterImage string
* presenterStation array of [[web:web#station|Station]]
* presenterModified string($date-time)
=== Show ===
* showId string($uuid)
* showSlug string
* showTitle string
* showDescription string
* showImage string
* showPresenter array of [[web:web#presenter|Presenter]]
* showStation array of [[web:web#station|Station]]
* showModified string($date-time)
=== Station ===
* stationId string($uuid)
* stationSlug string
* stationName string
* stationDescription string
* stationStream string
* stationSequence integer($int32)
* stationModified string($date-time)