Loader
fájlok automatikus feldolgozása és konvertálása
A Loader script feladata, hogy a megadott forrásmappában megjelenő, a megadott minta alapján azonosított fájlokat automatikusan feldolgozza és a célmappába másolja. A feldolgozás során a fájlok hangzásilag vagy technikailag átalakíthatók (pl. formátum- vagy mintavételi frekvencia-konverzió). Opcionálisan az eredeti fájlokat archiválja, és nyilvántartja a már feldolgozottakat, hogy azokat ne dolgozza fel újra.
Tipikus felhasználás:
- automatizáló stúdió- vagy hanganyagfeldolgozó rendszerrel érkező fájlok átvétele
- hangfájlok automatikus formátum-konverziója (pl. wav → mp3)
- külső eszköztől érkező felvételek automatikus átalakítása és célmappába rendezése
Hogyan működik a Loader?
- Megnyitja a megadott Forrás mappát (és ha be van kapcsolva, az almappáit is)
- Kiválasztja a Mintának megfelelő fájlokat
- Kihagyja a már korábban feldolgozottakat (ha Forrás megtartása be van kapcsolva)
- Kihagyja a más program által éppen használt (zárolt) fájlokat
- Elvégzi a fájl átalakítást/másolást a Paraméterek szerint
- Sikeres feldolgozás esetén:
- Az eredeti fájlt bemásolja az Archív mappába (ha meg van adva)
- Ha Forrás megtartása be van kapcsolva: nyilvántartja a feldolgozott fájlt
- Ha Forrás megtartása ki van kapcsolva: törli az eredeti fájlt
- Hibák esetén naplóz és (ha kéred) értesít
Loader beállításai
- Név (Name): Tetszőleges, egyedi elnevezés.
- Leírás (Description): Tetszőleges leírás.
- Forrás mappa (Source path): Az a mappa, amelyből a rendszer a fájlokat veszi.
- Cél mappa (Target path): A mappa, ahova a feldolgozott fájlok kerülnek.
- Archív mappa (Archive path): Ha meg van adva, az eredeti fájl időbélyeges másolata ide is elmentésre kerül (pl.
felvétel_20260714-143022.wav). Üresen hagyható. - Minta (Pattern): Meghatározza, hogy a forrásmappában milyen nevű fájlokat dolgozzon fel a rendszer. Formátuma regex. Például:
^.*\.wav$— minden WAV fájl,^RCS_.*\.wav$— az RCS_ előtagú WAV fájlok. - Fájlnév (Filename): Megadja a célfájl nevének sablonját regex csereként. A minta alapján azonosított részeket fel lehet használni az átnevezéshez. Ha az eredeti fájlnevet változatlanul kell megtartani, az értéke általában
$0. - Paraméterek (Parameters): A fájlok átalakításához (konverzióhoz) használt FFmpeg argumentumok. Ha nincs átalakítás szükséges, üresen hagyható és a fájl másolásra kerül.
- Almappák (Subfolders): Ha be van kapcsolva, a forrásmappán belüli almappákat is figyeli és feldolgozza.
- Forrás megtartása (Keep source): Ha be van kapcsolva, az eredeti fájl nem törlődik, és a rendszer nyilvántartja, hogy ne dolgozza fel újra. Ha ki van kapcsolva, az eredeti fájl törlésre kerül a sikeres feldolgozás után.
- Ütemezés (Schedule): Cron mintával meghatározható, hogy a feladat csak bizonyos időszakban futhasson. Ha üres, a feladat bármikor futhat.
- Értesítés (Notify): Ha be van kapcsolva, a rendszer hiba esetén értesítést küld.
- Aktív (Enabled): A feladat engedélyezése.
Ha a Forrás megtartása ki van kapcsolva, a forrásfájl törlésre kerül sikeres feldolgozás után. Ha be van kapcsolva, a fájl megmarad, de a rendszer nyilvántartja és nem dolgozza fel újra — az azonosítás az elérési út, a fájlméret és a módosítási dátum alapján történik.
A Minta és a Fájlnév mező szorosan összefügg: a Minta azonosítja a forrásfájlt, a Fájlnév sablon pedig meghatározza, hogy a célfájl milyen nevet kapjon. Helytelen beállítás esetén a fájlok nem kerülnek feldolgozásra, vagy a célfájl neve hibás lesz.
Tipikus statikus minták
Egyszerű másolás, változatlan néven:
- Minta:
^(?<filename>.+)\.(?<extension>.+)$ - Fájlnév:
${filename}.${extension}
Dátum feldolgozása: Pl.: 20251231-barmi.wav ⇒ barmi_2025-12-31.wav:
- Minta:
^(?<year>\d{4})(?<month>\d{2})(?<day>\d{2})[-_](?<info>.*)\.(?<ext>.+)?$ - Fájlnév:
${info}_${year}-${month}-${day}.${ext}
Óra, perc értelmezése és érdektelen részek ignorálása: Pl.: 0800_bkkinfo_2025-12-31.mp3 ⇒ bkkinfo.mp3
- Minta:
^(?<time>\d{4})[_-](bkkinfo)[_-](.*)\.(mp3|wav)$ - Fájlnév:
bkkinfo.mp3
Itt igazából a fájlnévnek csak a 0800_bkkinfo pontig kell stimmelnie, utána nem számít, hogy mi van a fájlnévben, ezt nem is használjuk. Fontos, hogy csak mp3 vagy wav kiterjesztésű fájlokat fog feldolgozni, de mindegyiknek a neve pontosan bkkinfo.mp3 lesz a feldolgozás során, függetlenül az eredeti formátumtól. A Loader ezt automatikusan átkonvertálja ilyenkor.
Tipikus dinamikus minták
Egyszerű feles hírek: minden óra kezdetétől érvényes az óra 30. percében elhangzó hanganyag frissítése. A feldolgozandó fájlnevek formátuma: 20251231-08-feles.mp3 - ezzel kell minden óra elején felülírnunk a HIREK-FELES.wav fájlt.
- Minta:
^$( (Get-Date).ToString('yyyyMMdd') )[_-]$( (Get-Date).ToString('HH') )[_-]feles\..+$ - Fájnév:
HIREK-FELES.wav
Ha ezt a mintát a powershell feldolgozza, akkor a következőt kapjuk (ha már elmúlt 8 óra): ^20251231[_-]08[_-]feles\..+$ - tehát ahogy az idő eléri a megfelelő időpontot, stimmelni kezd a minta és a fájl feldolgozásra kerül és átkonvertálódik automatikusan a HIREK-FELES.wav fájllá a célmappában. A [_-] kifejezés a mintában azt jelenti, hogy - és _ karaktert is elfogad, felhasználói elgépelések kiküszöbölése érdekében.
Egyszerű egészes hírek: minden óra elején hangzik el és minden óra 15. percétől a következőt keressük. Tehát 07:15-től már lecserélhető a HIREK.wav célfájlunk a nyolcasra, mert addigra biztosan lement a hírblokk az óra elején. A szakemberek a 20251231-08-hirek.mp3 formátumban mentik a feldolgozandó fájlokat.
- Minta:
^$( (Get-Date).AddMinutes(45).ToString('yyyyMMdd[_-]HH') )[_-]hirek\..+$ - Fájnév:
HIREK.wav
Ha ezt a mintát a powershell feldolgozza, akkor a következőt kapjuk (07:15-től): ^20251231[_-]08[_-]hirek\..+$ vagyis 45 perccel előbb kezdi el keresni a feldolgozandó fájlt. Ennek érdekében az aktuális időponthoz hozzáadtunk 45 percet az AddMinutes() függvénnyel. A [_-] kifejezés a mintában azt jelenti, hogy - és _ karaktert is elfogad.
Ugyanabban az órában elhangzó hírek: Ha a szokás úgy alakult ki, hogy az óra hírei még az órafurduló előtt elhangzanak, mondjuk :55 körül, és a szakemberek olyan formában mentik mondjuk a híreket, hogy 20251231-0855-hirek.mp3 - akkor egy kis negatív csúsztatást bele kell vinnünk a rendszerbe, valahogy így:
- Minta:
^$( (Get-Date).AddMinutes(-15).ToString('yyyyMMdd[_-]HH') )[_-]hirek\..+$ - Fájnév:
HIREK.wav
Erre azért van szükség, hogyha elüti az óra az egészt és még megy a hírek, ne álljon neki lecserélgetni a rendszer a fájlokat, így várunk óra tizenötig és csak utána lesz érvényes a minta az aktuális óra végén elhangzásra kerülő hírekre.
Naponta egyszer jelentkező műsor: tegyük fel, hogy van egy műsorunk, ami minden reggel hatkor jelentkezik, minden esetben hat részből áll, a kollégák elkészítik már előző este és szeretnénk, ha a rendszer beolvasná a helyére. (Leginkább azért, hogy össze lehessen időre húzni a műsort ha az elkészült). Így lényegében reggel nyolctól már simán lehet figyelni, hogy elkészült-e már és ha igen, akkor cserélje le a rendszer a REGGELI-MAGAZIN-1.wav fájlt (és a haverjait emelkedő számsorrendben). A feldolgozandó fájl formátuma mondjuk: 20251231-reggeli-magazin-1.wav - a -1 a rész sorszámát jelenti.
- Minta:
^$( (Get-Date).AddHours(16).ToString('yyyyMMdd') )[_-]reggeli[_-]magazin[_-](?<part>\d{1})\.wav$ - Fájnév:
REGGELI-MAGAZIN-${part}.wav
A Get-Date függvény által megadott aktuális dátumhoz hozzáadtunk 16 órát, így ami ma reggel nyolc után történik, abból a holnapi dátumot kapjuk (egészen holnap reggel nyolcig). A mintát powershellben lefuttatva 2025. 12. 31-én reggel nyolctól a következő mintát kapjuk: ^20260101[_-]reggeli[_-]magazin[_-](?<part>\d{1})\.wav$, így reggel nyolctól már a következő napi fájlt keresi a rendszer. Azért nem előbb, mert eddigre biztosan lemegy a műsor és ha előre bekészítettünk több napi műsort, akkor csak ezután kell lecserélnünk.
Komplex, különböző adókra szétosztott feldolgozás: A fentiekhez hasonló példa, de itt még különböző adókra is szét van szedve a feldolgozás. A feldolgozandó fájl formátuma: 20251231-0800-city-part.mp3, ahol a city és a part dinamikusan változhat, pl.: 20251231-0800-budapest-headline.mp3.
- Minta:
^$( (Get-Date).AddMinutes(45).ToString('yyyyMMdd[_-]HH') )[_-](?<city>.+)[_-](?<part>[headline|hirek|idojaras|sport]+)\..+$ - Fájnév:
hirek-${city}_${part}.wav
Ha feldolgozza a powershell, így néz ki a mintánk: ^20251231[_-]08[_-](?<city>.+)[_-](?<part>[headline|hirek|idojaras|sport]+)\..+$. Fontos, hogy itt a part részre csak a headline, hirek, idojaras vagy sport szavakat fogadja el. A cél fájlneve pedig így fog kinézni: hirek-budapest-headline.wav
GYIK
Beérkezett a fájl, de nem történt semmi — mi lehet az oka?
A leggyakoribb okok sorrendben: a fájlnév nem illeszkedik a Mintára (érdemes regex-tesztelővel ellenőrizni), a fájl más program által még zárolva van (ilyenkor a következő futás dolgozza fel), bekapcsolt Forrás megtartása mellett a rendszer már nyilvántartja a fájlt korábbi feldolgozásból, vagy az Ütemezés időablakán kívül érkezett és a rendszer a következő engedélyezett időpontra vár.
Ugyanazt a fájlt frissítve feltöltötték újra — feldolgozza a rendszer?
Igen: a nyilvántartás az elérési út mellett a fájlméretet és a módosítási dátumot is nézi, így a megváltozott tartalmú fájl új fájlnak számít és feldolgozásra kerül.
Kell-e konverzióhoz értenem az FFmpeg-hez?
A leggyakoribb esetekhez nem: üresen hagyott Paraméterek mezővel a fájl változatlanul másolódik, a tipikus konverziós beállításokat pedig a telepítéskor a support segít összeállítani.
