====== SCRIPT ======
A //Script// modul felel az automatizációs folyamatok konfigurálásáért és felügyeletéért, biztosítva a háttérben zajló műveletek zökkenőmentes működését. Az integrált értesítési funkció révén a felhasználó azonnal értesítést kap, ha a rendszer bármelyik feladat végrehajtása során problémákba ütközik. A rendszer nemcsak a beépített, általános célú szkripteket támogatja, hanem lehetőséget biztosít egyedi, az ügyfelek specifikus igényeire szabott alkalmazások integrálására is.
----
===== Converter =====
== script-converter ==
> Automatikus hangfájl konvertáló script
A forrás mappába bekerült tetszőleges formátumú hangfájt a megadott cél mappába helyezi konvertálás után.
* **Név**: tetszőleges, egyedi elnevezés
* **Forrás mappa**: ezt a könyvtárt vizsgálja át 30 másodpercenként a script, és ha talál új fájlt, megkezdi a konvertálást (pl.: ''D:\CONVERT\44.1k_wav\'')
* **Cél mappa**: ide kerülnek az átkonvertált fájlok (pl.: ''D:\CONVERTED\44.1k_wav\'')
* **Kész mappa**: a konvertálást követően ide kerülnek a fájlok a forrás mappából (pl.: ''D:\CONVERT\44.1k_wav\kesz'')
* **Szűrő**: szűrési lehetőség a forrásmappában elhelyezett fájlokra (pl.: *.mp3 vagy hirek*.wav)
* **Formátum**: a cél fájl formátuma (pl.: ''wav 44.1k 16bit stereo'')
* **Értesítés**: telegram értesítés hiba esetén (a központi chaten)
* **Aktív**: aktiválás
Ha nincs megadva **cél mappa**, az eredeti, konvertálás előtti fájl törlődik a konvertálás befejeztével!
===== Loader =====
== script-loader ==
> Automatikus fájl betöltő script
A forrás mappába bekerült tetszőleges fájlt a megadott cél mappába helyezi átnevezés után.
* **Név**: tetszőleges, egyedi elnevezés
* **Forrás mappa**: ezt a könyvtárt vizsgálja át 60 másodpercenként a script, és ha talál új fájlt, megkezdi a feldolgozást (pl.: ''D:\LOAD\hirek\'')
* **Cél mappa**: ide másolja a talált fájlokat, ez általában az adáslebonyolító szoftver egy automatikus import mappája (pl.: ''D:\AUTOLOAD\hirek\'')
* **Szűrő**: szűrési lehetőség a forrásmappában elhelyezett fájlokra (pl.: ''*.mp3'' vagy ''hirek*.wav'')
* **Minta**: [[script:script#regularis_kifejezesek|reguláris kifejezés]] a fájlnevek szűrésére (pl.: ''^.*$'')
* **Cél fájlnév**: a fájl neve a feldolgozás után a cél mappában (pl.: ''hirek.wav'')
* **Biztonsági idő**: a fájl létrehozása és a fájl feldolgozása között eltelt minimális idő (alapérték: ''60'')
* **Forrás megtartása**: a forrás mappában megtartja az eredeti fájlt és amíg annak újabb verziója nem jelenik meg, figyelmen kívül hagyja
* **Almappák**: keresés a forrásmappa almappáiban is
* **Értesítés**: telegram értesítés hiba esetén (a központi chaten)
* **Aktív**: aktiválás
==== reguláris kifejezések ====
A reguláris kifejezés (regex) egy karakterlánc, amely mintaként szolgál a szövegkereséshez és -manipulációhoz. Segítségével bonyolult szöveges minták azonosítására és kezelésére van lehetőség. A példának megadott ''^.*$'' kifejezés minden fájlnévre egyezést mutat. Ha nem kell bonyolult átnevezéseket végrehajtanunk, ezt a mintát kell alkalmazni. Bonyolultabb átnevezésekhez az alábbiak alapján állíthatunk össze mintákat:
**Alap Szintaxis**
* ''**.**'': Bármilyen egyedi karaktert jelöl (kivéve az új sor karaktert).
* ''**^**'': A szöveg kezdetét jelöli.
* ''**$**'': A szöveg végét jelöli.
* ''**[]**'': Karakterhalmaz. Bármelyik karaktert jelölheti, ami a zárójelek között van.
* ''**|**'': Alternatíva. A|B jelentése A vagy B.
* ''**()**'': Csoportosítás. A regex részeinek csoportosítására szolgál.
* ''**?**'': Az előtte álló karakter nulla vagy egy előfordulását jelöli.
* ''*****'': Az előtte álló karakter nulla vagy több előfordulását jelöli.
* ''**+**'': Az előtte álló karakter egy vagy több előfordulását jelöli.
* ''**{n}**'': Az előtte álló karakter pontosan n-szer fordul elő.
* ''**{n,}**'': Az előtte álló karakter n vagy több alkalommal fordul elő.
* ''**{n,m}**'': Az előtte álló karakter legalább n, de legfeljebb m alkalommal fordul elő.
**Speciális Karakterek**
* ''**\d**'': Bármely számjegyet jelöl (0-9).
* ''**\D**'': Bármely nem számjegy karaktert jelöl.
* ''**\w**'': Bármely "szó" karaktert jelöl (betűk, számjegyek, aláhúzás).
* ''**\W**'': Bármely nem "szó" karaktert jelöl.
* ''**\s**'': Bármely whitespace karaktert jelöl (szóköz, tab, új sor).
* ''**\S**'': Bármely nem whitespace karaktert jelöl.
A ''**?**'' konstrukció a reguláris kifejezésekben a csoportnevek deklarálására szolgál, ami lehetővé teszi számunkra, hogy ne csak sorszámmal, hanem névvel is hivatkozzunk a csoportokra.
**Példa**
Minta: ''**^(?[\d]{6})_(?[\d]{2})_(?HIREK)$**''\\
Cél fájlnév: ''**hirblokk_${hour}**''
A ''**240101_18_HIREK.mp3**'' séma szerint elnevezett fájlt ''**hirblokk_18.mp3**'' néven menti a célmappába.
A reguláris kifejezés értelmezése részletesen:
* ''^'': A kifejezés elején azt jelzi, hogy a mintának a szöveg elejétől kell kezdődnie.
* ''(?[\d]{6})'': Ez egy elnevezett csoport (date), ami pontosan hat számjegyet (\d) fogad el.
* ''_'': Ez egyszerűen egy alulvonás karakter, ami elválasztja a csoportokat egymástól.
* ''(?[\d]{2})'': Ez a második elnevezett csoport (hour), ami pontosan két számjegyet fogad el.
* ''_'': Ismét egy alulvonás karakter.
* ''(?HIREK)'': Ez a harmadik elnevezett csoport (format), amely konkrétan a "HIREK" szöveget fogadja el.
* ''$'': A kifejezés végén azt jelzi, hogy a mintának a szöveg végéig kell tartania.
Mintákat a legegyszerűbben [[https://regex101.com|regex101]] oldal segítségével lehet létrehozni és tesztelni, de a [[https://chat.openai.com/|ChatGPT]] is pillanatok alatt megír helyettünk egy ilyet, ha kérjük.
A //Loader// script a reguláris kifejezéseket kizárólag a fájl nevének a szűrésére használja, a kiterjesztést figyelmen kívül hagyja.
===== Purger =====
== script-purger ==
> Automatikus fájltörlő script
Törli a megadott mappában található fájlokat a beállított idő letelte után.
* **Név**: tetszőleges, egyedi elnevezés
* **Mappa**: ezt a könyvtárt vizsgálja át a script, és ha talál a lenti kritériumoknak megfelelő fájlt, törli. (pl.: ''D:\CONVERT\44.1k_wav\kesz\'')
* **Szűrő**: szűrési lehetőség a mappában található fájlokra (pl.: ''*.mp3'' vagy ''hirek*.wav'')
* **Fájlok megtartása**: a napok száma, miután a fájl törlésre kerül (pl.: ''0'' - azonnal, alapérték: ''30'')
* **Almappák**: keresés a mappa almappáiban is
* **Értesítés**: telegram értesítés hiba esetén (a központi chaten)
* **Aktív**: aktiválás
A //Purger// script nem folyamatos futású, hanem az [[script:script#agent|Agent]] futtatja, megadott időközönként.
===== Syncer =====
== script-syncer ==
> Automatikus tükrözés
Percenként tükrözi a forrás mappát a cél mappába.
* **Név**: tetszőleges, egyedi elnevezés
* **Forrás mappa**: ezt a könyvtárt vizsgálja át a script, és végzi el a fájlok másolását a célmappába a megadott feltételek alapján (pl.: ''D:\LOGGER'')
* **Cél mappa**: ide tükröződnek az adatok a forrás mappából (pl.: ''\\ARCHIVE\LOGGER'')
* **Szűrő**: szűrési lehetőség a forrás mappában található fájlokra (pl.: ''*.wav'')
* **Cél takarítása**: ha egy fájl a forrás mappában törlésre került, a cél mappában is törlésre kerül.
* **Értesítés**: telegram értesítés hiba esetén (a központi chaten)
* **Aktív**: aktiválás
A //Syncer// script minden esetben a forrás mappa almappáit is kezeli.
===== Agent =====
== script-agent ==
> Script futtató script
Egyes modulok, illetve egyedi scriptek szabályos időközönként történő futtatásáért felel.
* **Név**: tetszőleges, egyedi elnevezés
* **Elérési út**: (pl.: ''D:\SCRIPT\purger.ps1'')
* **Argumentumok**: futási paraméterek (pl.: ''-Force'')
* **Első futás ideje**: az első futás időpontja
* **Futás időköz**: a script futtatásának gyakorisága az első futás idejétől számítva
* **Értesítés**: telegram értesítés hiba esetén (a központi chaten)
* **Aktív**: aktiválás
Az //Agent// csak Powershell 7.4 kompatibilis scripteket tud futtatni.
===== WatchDog =====
== script-watchdog ==
> Script ellenőrző script
Scriptek és folyamatok futását ellenőrző script, mely ha leállást észlel, megpróbálkozik az újraindítással, ellenőrzi, hogy sikeres volt-e az újraindítás és ezek után üzenetet küld az eredményről.
* **Név**: tetszőleges, egyedi elnevezés
* **Folyamat**: a futtatható állomány neve, ahogy a feladatkezelőben szerepel (kiterjesztés nem szükséges) (pl.: ''BroAdminAPI'' vagy ''pwsh'')
* **Parancs**: a futtatott fájl neve, folyamat esetén a futtatható állomány neve, script esetén a script neve (pl.: ''BroAdminAPI.exe'' vagy ''loader.ps1''
* **Elérési út**: a futtatható állomány elérési útja (pl.: ''C:\Program Files\BroAdminAPI\BroAdminAPI.exe'' vagy powershell script esetén: ''pwsh.exe'')
* **Argumentumok**: futási paraméterek (pl.: powershell script esetén pl.: ''-file "D:\SCRIPT\loader.ps1"'')
* **Értesítés**: telegram értesítés hiba esetén (a központi chaten)
* **Aktív**: aktiválás
Amikor a //Watchdog// a futást ellenőrzi, azt a //Folyamat// és a //Parancs// mezők alapján teszi. Amikor megpróbálja újraindítani a folyamatot, akkor az //Elérési út// és az //Argumentumok// mező alapján jár el.
**Futtatható állományoknál** //Elérési útként// bármit meg lehet adni, például .lnk vagy .bat kiterjesztésű fájlokat, amik valamilyen futtatható állományra mutatnak. Ezt a futtatható állományt kell a //Folyamat// mezőben megadni.\\
Folyamat: ''icecast''\\
Paranacs: ''icecast.exe''\\
Elérési út: ''D:\run-icecast-server.lnk''
**Powershell** script esetén az //Argumentumok// mezőben tudunk a scriptre hivatkozni, amit a //Parancs// mezőben is meg kell tennünk:\\
Folyamat: ''pwsh''\\
Paranacs: ''loader.ps1''\\
Elérési út: ''pwsh.exe''\\
Argumentumok: ''D:\SCRIPT\loader.ps1''
===== Custom =====
Egyedi szkriptek
== x_convert_log.ps1 ==
Letömöríti az archivált loggerfájlokat mp3-ba.
Paraméterek: -
== x_transition.ps1 ==
Átmásolja állomások között a tartalmat
Paraméterek: ''-Date'' - ha meg van adva, akkor az adott napot dolgozza fel (pl. ''-Date "2024-01-01"''), ha nincs megadva, akkor a következő hét minden napját.